org_aspectj_ajde_core_tests_ShowWeaveMessagesTest_java
org.aspectj.ajdt.internal.compiler.lookup.AjLookupEnvironment
private void weaveIntertypes(List<SourceTypeBinding> typesToProcess, SourceTypeBinding typeToWeave, List<ConcreteTypeMunger> typeMungers, List<DeclareParents> declareParents, List<DeclareAnnotation> declareAnnotationOnTypes, int mode) {
        ReferenceBinding[] interfaceTypes;
        ReferenceBinding superType = typeToWeave.superclass();
        if (typesToProcess.contains(superType) && superType instanceof SourceTypeBinding) {
            this.weaveIntertypes(typesToProcess, (SourceTypeBinding)superType, typeMungers, declareParents, declareAnnotationOnTypes, mode);
        }
        for (ReferenceBinding binding : interfaceTypes = typeToWeave.superInterfaces()) {
            if (typesToProcess.contains(binding) && binding instanceof SourceTypeBinding) {
                this.weaveIntertypes(typesToProcess, (SourceTypeBinding)binding, typeMungers, declareParents, declareAnnotationOnTypes, mode);
                continue;
            }
            if (!(binding instanceof ParameterizedTypeBinding) || !(((ParameterizedTypeBinding)binding).type instanceof SourceTypeBinding) || !typesToProcess.contains(((ParameterizedTypeBinding)binding).type)) continue;
            this.weaveIntertypes(typesToProcess, (SourceTypeBinding)((ParameterizedTypeBinding)binding).type, typeMungers, declareParents, declareAnnotationOnTypes, mode);
        }
        this.weaveInterTypeDeclarations(typeToWeave, typeMungers, declareParents, declareAnnotationOnTypes, false, mode);
        typesToProcess.remove(typeToWeave);
    }
 -> java.util.List.contains(java.lang.Object): boolean -> java.lang.ThreadLocal.get(): java.lang.Object -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.indexOf(int): int -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.lang.ref.WeakReference.clear(): void -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ThreadLocal.get(): java.lang.Object -> java.util.Stack.push(java.lang.Object): java.lang.Object -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.indexOf(int): int -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Collections.emptyList(): java.util.List -> java.util.List.isEmpty(): boolean -> java.lang.ThreadLocal.get(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.lang.ThreadLocal.get(): java.lang.Object -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object -> java.util.List.remove(java.lang.Object): boolean
 [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.util.List.contains(java.lang.Object): boolean [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] -> java.lang.ThreadLocal.get(): java.lang.Object [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.charAt(int): char [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.indexOf(int): int [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.util.Map.entrySet(): java.util.Set -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean [CALL] [CALL] [EXIT] [EXIT] [CALL] -> java.lang.ref.WeakReference.clear(): void [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [CALL] -> java.lang.ThreadLocal.get(): java.lang.Object [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.util.Stack.push(java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.charAt(int): char [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.indexOf(int): int [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] -> java.util.Collections.emptyList(): java.util.List [EXIT] -> java.util.List.isEmpty(): boolean [CALL] [CALL] -> java.lang.ThreadLocal.get(): java.lang.Object [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean [CALL] [CALL] -> java.lang.ThreadLocal.get(): java.lang.Object [EXIT] -> java.util.Stack.isEmpty(): boolean -> java.util.Stack.pop(): java.lang.Object [EXIT] [EXIT] -> java.util.List.remove(java.lang.Object): boolean [EXIT]