org_aspectj_ajde_internal_AspectJBuildManagerTest_java
org.aspectj.asm.internal.AspectJElementHierarchy
private IProgramElement findClassInNodes(Collection<IProgramElement> nodes, String name, String typeName) {
        String innerName;
        String baseName;
        int dollar = name.indexOf(36);
        if (dollar == -1) {
            baseName = name;
            innerName = null;
        } else {
            baseName = name.substring(0, dollar);
            innerName = name.substring(dollar + 1);
        }
        for (IProgramElement classNode : nodes) {
            IProgramElement node;
            if (!classNode.getKind().isType()) {
                IProgramElement node2;
                List<IProgramElement> kids = classNode.getChildren();
                if (kids == null || kids.isEmpty() || (node2 = this.findClassInNodes(kids, name, typeName)) == null) continue;
                return node2;
            }
            if (baseName.equals(classNode.getName())) {
                if (innerName == null) {
                    return classNode;
                }
                return this.findClassInNodes(classNode.getChildren(), innerName, typeName);
            }
            if (name.equals(classNode.getName())) {
                return classNode;
            }
            if (typeName.equals(classNode.getBytecodeSignature())) {
                return classNode;
            }
            if (classNode.getChildren() == null || classNode.getChildren().isEmpty() || (node = this.findClassInNodes(classNode.getChildren(), name, typeName)) == null) continue;
            return node;
        }
        return null;
    }
 -> java.lang.String.indexOf(int): int -> java.util.Collection.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.util.List.isEmpty(): boolean -> java.lang.String.indexOf(int): int -> java.util.Collection.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.List.isEmpty(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.List.isEmpty(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.List.isEmpty(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.List.isEmpty(): boolean -> java.util.Iterator.hasNext(): boolean
 [CALL] -> java.lang.String.indexOf(int): int -> java.util.Collection.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.isEmpty(): boolean [CALL] [EXIT] [CALL] -> java.lang.String.indexOf(int): int -> java.util.Collection.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.isEmpty(): boolean -> java.util.Iterator.hasNext(): boolean [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.isEmpty(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.isEmpty(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.isEmpty(): boolean -> java.util.Iterator.hasNext(): boolean [EXIT]