org_aspectj_systemtest_incremental_tools_OutputLocationManagerTests_java
org.aspectj.ajdt.internal.core.builder.AsmHierarchyBuilder
private IProgramElement genAddToNode(File sourceFile, CompilationUnitDeclaration unit, AsmManager structureModel) {
        String pkgName;
        CompilationResultDestinationManager manager = this.buildConfig.getCompilationResultDestinationManager();
        String sourceFolder = manager == null ? null : manager.getSourceFolderForFile(sourceFile);
        ImportReference unitPackage = unit.currentPackage;
        IProgramElement rootForSource = structureModel.getHierarchy().getRoot();
        if (sourceFolder != null) {
            rootForSource = this.findOrCreateChildSourceFolder(sourceFolder, structureModel);
        }
        if (unitPackage == null) {
            pkgName = "";
        } else {
            StringBuilder nameBuffer = new StringBuilder();
            char[][] importName = unitPackage.getImportName();
            int last = importName.length - 1;
            for (int i = 0; i < importName.length; ++i) {
                nameBuffer.append(new String(importName[i]));
                if (i >= last) continue;
                nameBuffer.append('.');
            }
            pkgName = nameBuffer.toString();
        }
        IProgramElement pkgNode = null;
        if (structureModel != null && structureModel.getHierarchy().getRoot() != null && rootForSource.getChildren() != null) {
            for (IProgramElement currNode : rootForSource.getChildren()) {
                if (!pkgName.equals(currNode.getName())) continue;
                pkgNode = currNode;
                break;
            }
        }
        if (pkgNode == null) {
            pkgNode = new ProgramElement(this.activeStructureModel, pkgName, IProgramElement.Kind.PACKAGE, new ArrayList<IProgramElement>());
            rootForSource.addChild(pkgNode);
        }
        ProgramElement addToNode = pkgNode;
        return addToNode;
    }
 -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.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.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean
 [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT]