org_aspectj_ajde_internal_AspectJBuildManagerTest_java
org.aspectj.ajdt.internal.core.builder.AsmElementFormatter
public void genLabelAndKind(MethodDeclaration methodDeclaration, IProgramElement node) {
        if (methodDeclaration instanceof AdviceDeclaration) {
            AdviceDeclaration ad = (AdviceDeclaration)methodDeclaration;
            node.setKind(IProgramElement.Kind.ADVICE);
            if (ad.kind == AdviceKind.Around) {
                node.setCorrespondingType(ad.returnType.toString());
            }
            StringBuilder details = new StringBuilder();
            if (ad.pointcutDesignator != null) {
                details.append(AsmRelationshipUtils.genPointcutDetails(ad.pointcutDesignator.getPointcut()));
            } else {
                details.append("<abstract pointcut>");
            }
            node.setName(ad.kind.toString());
            node.setDetails(details.toString());
            this.setParameters(methodDeclaration, node);
        } else if (methodDeclaration instanceof PointcutDeclaration) {
            node.setKind(IProgramElement.Kind.POINTCUT);
            node.setName(this.translatePointcutName(new String(methodDeclaration.selector)));
            this.setParameters(methodDeclaration, node);
        } else if (methodDeclaration instanceof DeclareDeclaration) {
            DeclareDeclaration declare = (DeclareDeclaration)methodDeclaration;
            String name = "declare ";
            if (declare.declareDecl instanceof DeclareErrorOrWarning) {
                DeclareErrorOrWarning deow = (DeclareErrorOrWarning)declare.declareDecl;
                if (deow.isError()) {
                    node.setKind(IProgramElement.Kind.DECLARE_ERROR);
                    name = name + "error";
                } else {
                    node.setKind(IProgramElement.Kind.DECLARE_WARNING);
                    name = name + "warning";
                }
                node.setName(name);
                node.setDetails("\"" + AsmRelationshipUtils.genDeclareMessage(deow.getMessage()) + "\"");
            } else if (declare.declareDecl instanceof DeclareParents) {
                node.setKind(IProgramElement.Kind.DECLARE_PARENTS);
                DeclareParents dp = (DeclareParents)declare.declareDecl;
                node.setName(name + "parents");
                String kindOfDP = null;
                StringBuilder details = new StringBuilder("");
                TypePattern[] newParents = dp.getParents().getTypePatterns();
                for (int i = 0; i < newParents.length; ++i) {
                    String typename;
                    TypePattern tp = newParents[i];
                    UnresolvedType tx = tp.getExactType();
                    if (kindOfDP == null) {
                        kindOfDP = "implements ";
                        try {
                            ResolvedType rtx = tx.resolve(((AjLookupEnvironment)declare.scope.environment()).factory.getWorld());
                            if (!rtx.isInterface()) {
                                kindOfDP = "extends ";
                            }
                        }
                        catch (Throwable rtx) {
                            // empty catch block
                        }
                    }
                    if ((typename = tp.toString()).lastIndexOf(".") != -1) {
                        typename = typename.substring(typename.lastIndexOf(".") + 1);
                    }
                    details.append(typename);
                    if (i + 1 >= newParents.length) continue;
                    details.append(",");
                }
                node.setDetails(kindOfDP + details.toString());
            } else if (declare.declareDecl instanceof DeclareSoft) {
                node.setKind(IProgramElement.Kind.DECLARE_SOFT);
                DeclareSoft ds = (DeclareSoft)declare.declareDecl;
                node.setName(name + "soft");
                node.setDetails(this.genTypePatternLabel(ds.getException()));
            } else if (declare.declareDecl instanceof DeclarePrecedence) {
                node.setKind(IProgramElement.Kind.DECLARE_PRECEDENCE);
                DeclarePrecedence ds = (DeclarePrecedence)declare.declareDecl;
                node.setName(name + "precedence");
                node.setDetails(this.genPrecedenceListLabel(ds.getPatterns()));
            } else if (declare.declareDecl instanceof DeclareAnnotation) {
                DeclareAnnotation deca = (DeclareAnnotation)declare.declareDecl;
                String thekind = deca.getKind().toString();
                node.setName(name + "@" + thekind.substring(3));
                if (deca.getKind() == DeclareAnnotation.AT_CONSTRUCTOR) {
                    node.setKind(IProgramElement.Kind.DECLARE_ANNOTATION_AT_CONSTRUCTOR);
                } else if (deca.getKind() == DeclareAnnotation.AT_FIELD) {
                    node.setKind(IProgramElement.Kind.DECLARE_ANNOTATION_AT_FIELD);
                } else if (deca.getKind() == DeclareAnnotation.AT_METHOD) {
                    node.setKind(IProgramElement.Kind.DECLARE_ANNOTATION_AT_METHOD);
                } else if (deca.getKind() == DeclareAnnotation.AT_TYPE) {
                    node.setKind(IProgramElement.Kind.DECLARE_ANNOTATION_AT_TYPE);
                }
                node.setDetails(this.genDecaLabel(deca));
            } else {
                node.setKind(IProgramElement.Kind.ERROR);
                node.setName("<unknown declare>");
            }
        } else if (methodDeclaration instanceof InterTypeDeclaration) {
            InterTypeDeclaration itd = (InterTypeDeclaration)methodDeclaration;
            String fqname = itd.getOnType().toString();
            if (fqname.contains(".")) {
                node.addFullyQualifiedName(fqname + "." + new String(itd.getDeclaredSelector()));
                fqname = fqname.substring(fqname.lastIndexOf(".") + 1);
            }
            String name = fqname + "." + new String(itd.getDeclaredSelector());
            if (methodDeclaration instanceof InterTypeFieldDeclaration) {
                node.setKind(IProgramElement.Kind.INTER_TYPE_FIELD);
                node.setName(name);
            } else if (methodDeclaration instanceof InterTypeMethodDeclaration) {
                node.setKind(IProgramElement.Kind.INTER_TYPE_METHOD);
                node.setName(name);
            } else if (methodDeclaration instanceof InterTypeConstructorDeclaration) {
                node.setKind(IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR);
                node.setName(itd.getOnType().toString() + "." + itd.getOnType().toString().replace('.', '_'));
            } else {
                node.setKind(IProgramElement.Kind.ERROR);
                node.setName(name);
            }
            node.setCorrespondingType(new String(itd.returnType.resolvedType.readableName()));
            if (node.getKind() != IProgramElement.Kind.INTER_TYPE_FIELD) {
                this.setParameters(methodDeclaration, node);
            }
        } else {
            if (methodDeclaration.isConstructor()) {
                node.setKind(IProgramElement.Kind.CONSTRUCTOR);
            } else {
                node.setKind(IProgramElement.Kind.METHOD);
                if (methodDeclaration != null && methodDeclaration.annotations != null && methodDeclaration.scope != null) {
                    for (int i = 0; i < methodDeclaration.annotations.length; ++i) {
                        Annotation annotation = methodDeclaration.annotations[i];
                        String annotationSig = new String(annotation.type.getTypeBindingPublic(methodDeclaration.scope).signature());
                        if (annotationSig.charAt(1) != PACKAGE_INITIAL_CHAR) continue;
                        if ("Lorg/aspectj/lang/annotation/Pointcut;".equals(annotationSig)) {
                            node.setKind(IProgramElement.Kind.POINTCUT);
                            node.setAnnotationStyleDeclaration(true);
                            break;
                        }
                        if (!"Lorg/aspectj/lang/annotation/Before;".equals(annotationSig) && !"Lorg/aspectj/lang/annotation/After;".equals(annotationSig) && !"Lorg/aspectj/lang/annotation/AfterReturning;".equals(annotationSig) && !"Lorg/aspectj/lang/annotation/AfterThrowing;".equals(annotationSig) && !"Lorg/aspectj/lang/annotation/Around;".equals(annotationSig)) continue;
                        node.setKind(IProgramElement.Kind.ADVICE);
                        node.setAnnotationStyleDeclaration(true);
                        node.setDetails("<anonymous pointcut>");
                        break;
                    }
                }
            }
            node.setName(new String(methodDeclaration.selector));
            this.setParameters(methodDeclaration, node);
        }
    }
 -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.lang.StringBuffer.append(char[]): java.lang.StringBuffer -> java.lang.StringBuffer.toString(): java.lang.String -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.util.List.add(java.lang.Object): boolean -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(char[]): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.isEmpty(): boolean -> java.util.List.size(): int -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object
 [CALL] [CALL] [EXIT] [CALL] -> java.lang.String.indexOf(java.lang.String): int -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] -> java.lang.StringBuffer.append(char[]): java.lang.StringBuffer [EXIT] [EXIT] -> java.lang.StringBuffer.toString(): java.lang.String [EXIT] [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] -> java.util.List.add(java.lang.Object): boolean [CALL] [CALL] [CALL] [EXIT] -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.append(char[]): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder [EXIT] -> java.lang.StringBuilder.toString(): java.lang.String [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean [CALL] -> java.util.List.size(): int [CALL] [EXIT] -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] -> java.util.List.isEmpty(): boolean [CALL] [CALL] [EXIT] -> java.util.List.size(): int -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.List.size(): int -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT]