org_aspectj_ajde_core_tests_CompilerMessagesTest_java
org.aspectj.asm.internal.JDTLikeHandleProvider
@Override
    public String createHandleIdentifier(IProgramElement ipe) {
        if (ipe == null || ipe.getKind().equals(IProgramElement.Kind.FILE_JAVA) && ipe.getName().equals("<root>")) {
            return emptyString;
        }
        if (ipe.getHandleIdentifier(false) != null) {
            return ipe.getHandleIdentifier();
        }
        if (ipe.getKind().equals(IProgramElement.Kind.FILE_LST)) {
            String configFile = this.asm.getHierarchy().getConfigFile();
            int start = configFile.lastIndexOf(File.separator);
            int end = configFile.lastIndexOf(".lst");
            configFile = end != -1 ? configFile.substring(start + 1, end) : "=" + configFile.substring(start + 1);
            ipe.setHandleIdentifier(configFile);
            return configFile;
        }
        if (ipe.getKind() == IProgramElement.Kind.SOURCE_FOLDER) {
            StringBuilder sb = new StringBuilder();
            sb.append(this.createHandleIdentifier(ipe.getParent())).append("/");
            String folder = ipe.getName();
            if (folder.endsWith("/")) {
                folder = folder.substring(0, folder.length() - 1);
            }
            if (folder.contains("/")) {
                folder = folder.replace("/", "\\/");
            }
            sb.append(folder);
            String handle = sb.toString();
            ipe.setHandleIdentifier(handle);
            return handle;
        }
        IProgramElement parent = ipe.getParent();
        if (parent != null && parent.getKind().equals(IProgramElement.Kind.IMPORT_REFERENCE)) {
            parent = ipe.getParent().getParent();
        }
        StringBuilder handle = new StringBuilder();
        handle.append(this.createHandleIdentifier(parent));
        handle.append(HandleProviderDelimiter.getDelimiter(ipe));
        if (!(ipe.getKind().equals(IProgramElement.Kind.INITIALIZER) || ipe.getKind() == IProgramElement.Kind.CLASS && ipe.getName().endsWith("{..}"))) {
            if (ipe.getKind() == IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR) {
                handle.append(ipe.getName()).append("_new").append(this.getParameters(ipe));
            } else if (ipe.getKind().isDeclareAnnotation()) {
                handle.append("declare \\@").append(ipe.getName().substring(9)).append(this.getParameters(ipe));
            } else {
                if (ipe.getFullyQualifiedName() != null) {
                    handle.append(ipe.getFullyQualifiedName());
                } else {
                    handle.append(ipe.getName());
                }
                handle.append(this.getParameters(ipe));
            }
        }
        handle.append(this.getCount(ipe));
        ipe.setHandleIdentifier(handle.toString());
        return handle.toString();
    }
 -> java.lang.Object.equals(java.lang.Object): boolean -> java.lang.Object.equals(java.lang.Object): boolean -> java.lang.String.lastIndexOf(java.lang.String): int -> java.lang.String.lastIndexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String
 [CALL] [CALL] [EXIT] -> java.lang.Object.equals(java.lang.Object): boolean [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.Object.equals(java.lang.Object): boolean [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.lastIndexOf(java.lang.String): int -> java.lang.String.lastIndexOf(java.lang.String): int -> java.lang.String.substring(int): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [CALL] [EXIT] [EXIT]