org_aspectj_tools_ajdoc_BugTest_java
org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder
@Override
    public boolean visit(TypeDeclaration typeDeclaration, CompilationUnitScope scope) {
        String name = new String(typeDeclaration.name);
        IProgramElement.Kind kind = IProgramElement.Kind.CLASS;
        if (typeDeclaration instanceof AspectDeclaration) {
            kind = IProgramElement.Kind.ASPECT;
        } else if (TypeDeclaration.kind(typeDeclaration.modifiers) == 2) {
            kind = IProgramElement.Kind.INTERFACE;
        } else if (TypeDeclaration.kind(typeDeclaration.modifiers) == 3) {
            kind = IProgramElement.Kind.ENUM;
        } else if (TypeDeclaration.kind(typeDeclaration.modifiers) == 4) {
            kind = IProgramElement.Kind.ANNOTATION;
        }
        boolean isAnnotationStyleAspect = false;
        if (typeDeclaration.annotations != null) {
            for (int i = 0; i < typeDeclaration.annotations.length; ++i) {
                String[] temp;
                Annotation annotation = typeDeclaration.annotations[i];
                if (Arrays.equals(annotation.type.getTypeBindingPublic(scope).signature(), "Lorg/aspectj/lang/annotation/Aspect;".toCharArray())) {
                    kind = IProgramElement.Kind.ASPECT;
                    if (typeDeclaration instanceof AspectDeclaration) continue;
                    isAnnotationStyleAspect = true;
                    continue;
                }
                if (annotation.resolvedType == null || (temp = new String(annotation.resolvedType.constantPoolName()).split("/")).length <= 1) continue;
                char[][] path = new char[temp.length][];
                for (int k = 0; k < temp.length; ++k) {
                    path[k] = temp[k].toCharArray();
                }
                ImportReference importRef = new ImportReference(path, new long[]{0L}, false, 0);
                ProgramElement ceNode = new ProgramElement(this.activeStructureModel, importRef.toString(), IProgramElement.Kind.IMPORT_REFERENCE, this.makeLocation(importRef), 0, null, null);
                ceNode.setSourceSignature(this.genSourceSignature(importRef));
                ProgramElement imports = this.getImportReferencesRoot();
                imports.addChild(0, ceNode);
            }
        }
        int typeModifiers = typeDeclaration.modifiers;
        if (typeDeclaration instanceof AspectDeclaration) {
            typeModifiers = ((AspectDeclaration)typeDeclaration).getDeclaredModifiers();
        }
        ProgramElement peNode = new ProgramElement(this.activeStructureModel, name, kind, this.makeLocation(typeDeclaration), typeModifiers, null, null);
        peNode.setSourceSignature(this.genSourceSignature(typeDeclaration));
        peNode.setFormalComment(this.generateJavadocComment(typeDeclaration));
        peNode.setAnnotationStyleDeclaration(isAnnotationStyleAspect);
        this.stack.peek().addChild(peNode);
        this.stack.push(peNode);
        return true;
    }
 -> java.lang.String.toCharArray(): char[] -> java.util.Arrays.equals(char[],char[]): boolean -> java.lang.StringBuilder.append(int): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(int): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(int): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.Collections.emptyList(): java.util.List -> java.util.Collections.emptyMap(): java.util.Map -> java.lang.StringBuffer.append(java.lang.String): java.lang.StringBuffer -> java.lang.StringBuffer.append(java.lang.String): java.lang.StringBuffer -> java.lang.StringBuffer.append(char[]): java.lang.StringBuffer -> java.lang.StringBuffer.toString(): java.lang.String -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.io.FileInputStream.getChannel(): java.nio.channels.FileChannel -> java.nio.channels.FileChannel.size(): long -> java.io.InputStream.read(byte[],int,int): int -> java.nio.charset.Charset.forName(java.lang.String): java.nio.charset.Charset -> java.nio.charset.Charset.defaultCharset(): java.nio.charset.Charset -> java.nio.charset.Charset.name(): java.lang.String -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.nio.ByteBuffer.wrap(byte[],int,int): java.nio.ByteBuffer -> java.nio.charset.Charset.decode(java.nio.ByteBuffer): java.nio.CharBuffer -> java.nio.CharBuffer.array(): char[] -> java.nio.CharBuffer.remaining(): int -> java.io.InputStream.close(): void -> java.util.Stack.peek(): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.Stack.push(java.lang.Object): java.lang.Object
 [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.String.toCharArray(): char[] -> java.util.Arrays.equals(char[],char[]): boolean [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.StringBuilder.append(int): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(int): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [CALL] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(int): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.util.Collections.emptyList(): java.util.List -> java.util.Collections.emptyMap(): java.util.Map [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] -> java.lang.StringBuffer.append(java.lang.String): java.lang.StringBuffer [EXIT] -> java.lang.StringBuffer.append(java.lang.String): java.lang.StringBuffer -> java.lang.StringBuffer.append(char[]): java.lang.StringBuffer [EXIT] -> java.lang.StringBuffer.toString(): java.lang.String [EXIT] [CALL] [CALL] [EXIT] -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] -> java.io.FileInputStream.getChannel(): java.nio.channels.FileChannel -> java.nio.channels.FileChannel.size(): long [CALL] [CALL] -> java.io.InputStream.read(byte[],int,int): int [EXIT] [EXIT] [EXIT] -> java.nio.charset.Charset.forName(java.lang.String): java.nio.charset.Charset -> java.nio.charset.Charset.defaultCharset(): java.nio.charset.Charset -> java.nio.charset.Charset.name(): java.lang.String -> java.util.Map.get(java.lang.Object): java.lang.Object [CALL] [EXIT] [CALL] -> java.nio.ByteBuffer.wrap(byte[],int,int): java.nio.ByteBuffer -> java.nio.charset.Charset.decode(java.nio.ByteBuffer): java.nio.CharBuffer -> java.nio.CharBuffer.array(): char[] -> java.nio.CharBuffer.remaining(): int [EXIT] [EXIT] -> java.io.InputStream.close(): void [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Stack.peek(): java.lang.Object [CALL] -> java.util.List.add(java.lang.Object): boolean [CALL] [EXIT] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [EXIT]