org_aspectj_tools_ajdoc_BugTest_java
org.aspectj.ajdt.internal.compiler.ast.ValidateAtAspectJAnnotationsVisitor
private void checkTypeDeclaration(TypeDeclaration typeDecl) {
        ContextToken tok = CompilationAndWeavingContext.enteringPhase(16, typeDecl.name);
        if (!(typeDecl instanceof AspectDeclaration)) {
            if (this.ajAnnotations.hasAspectAnnotation) {
                this.validateAspectDeclaration(typeDecl);
            } else {
                TypeBinding parentBinding;
                TypeReference parentRef = typeDecl.superclass;
                if (parentRef != null && (parentBinding = parentRef.resolvedType) instanceof SourceTypeBinding) {
                    TypeDeclaration parentDecl;
                    SourceTypeBinding parentSTB = (SourceTypeBinding)parentBinding;
                    if (parentSTB.scope != null && this.isAspect(parentDecl = parentSTB.scope.referenceContext)) {
                        typeDecl.scope.problemReporter().signalError(typeDecl.sourceStart, typeDecl.sourceEnd, "a class cannot extend an aspect");
                    }
                }
            }
        } else if (this.ajAnnotations.hasMultipleAspectAnnotations) {
            typeDecl.scope.problemReporter().signalError(typeDecl.sourceStart, typeDecl.sourceEnd, "aspects cannot have @Aspect annotation");
        }
        CompilationAndWeavingContext.leavingPhase(tok);
    }
 -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object
 [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [EXIT] [EXIT]