org_aspectj_weaver_ReferenceTypeTestCase_java
org.aspectj.weaver.ReferenceType
@Override
    public ResolvedType[] getDeclaredInterfaces() {
        ResolvedType[] interfaces = (ResolvedType[])this.parameterizedInterfaces.get();
        if (interfaces != null) {
            return interfaces;
        }
        ResolvedType[] delegateInterfaces = this.getDelegate().getDeclaredInterfaces();
        if (this.isRawType()) {
            if (this.newInterfaces != null) {
                throw new IllegalStateException("The raw type should never be accumulating new interfaces, they should be on the generic type.  Type is " + this.getName());
            }
            ResolvedType[] newInterfacesFromGenericType = this.genericType.newInterfaces;
            if (newInterfacesFromGenericType != null) {
                ResolvedType[] extraInterfaces = new ResolvedType[delegateInterfaces.length + newInterfacesFromGenericType.length];
                System.arraycopy(delegateInterfaces, 0, extraInterfaces, 0, delegateInterfaces.length);
                System.arraycopy(newInterfacesFromGenericType, 0, extraInterfaces, delegateInterfaces.length, newInterfacesFromGenericType.length);
                delegateInterfaces = extraInterfaces;
            }
        } else if (this.newInterfaces != null) {
            ResolvedType[] extraInterfaces = new ResolvedType[delegateInterfaces.length + this.newInterfaces.length];
            System.arraycopy(delegateInterfaces, 0, extraInterfaces, 0, delegateInterfaces.length);
            System.arraycopy(this.newInterfaces, 0, extraInterfaces, delegateInterfaces.length, this.newInterfaces.length);
            delegateInterfaces = extraInterfaces;
        }
        if (this.isParameterizedType()) {
            interfaces = new ResolvedType[delegateInterfaces.length];
            for (int i = 0; i < delegateInterfaces.length; ++i) {
                interfaces[i] = delegateInterfaces[i].isParameterizedType() ? delegateInterfaces[i].parameterize(this.getMemberParameterizationMap()).resolve(this.world) : delegateInterfaces[i];
            }
            this.parameterizedInterfaces = new WeakReference<ResolvedType[]>(interfaces);
            return interfaces;
        }
        if (this.isRawType()) {
            UnresolvedType[] paramTypes = this.getTypesForMemberParameterization();
            interfaces = new ResolvedType[delegateInterfaces.length];
            int max = interfaces.length;
            for (int i = 0; i < max; ++i) {
                interfaces[i] = delegateInterfaces[i];
                if (interfaces[i].isGenericType()) {
                    interfaces[i] = interfaces[i].getRawType().resolve(this.getWorld());
                    continue;
                }
                if (!interfaces[i].isParameterizedType()) continue;
                UnresolvedType[] toUseForParameterization = this.determineThoseTypesToUse(interfaces[i], paramTypes);
                interfaces[i] = interfaces[i].parameterizedWith(toUseForParameterization);
            }
            this.parameterizedInterfaces = new WeakReference<ResolvedType[]>(interfaces);
            return interfaces;
        }
        if (this.getDelegate().isCacheable()) {
            this.parameterizedInterfaces = new WeakReference<ResolvedType[]>(delegateInterfaces);
        }
        return delegateInterfaces;
    }
 -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.List.removeAll(java.util.Collection): boolean -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.String.length(): int -> java.lang.String.substring(int,int): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object
 [CALL] -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] -> java.lang.ref.WeakReference.get(): java.lang.Object [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.List.removeAll(java.util.Collection): boolean [EXIT] [CALL] [CALL] [CALL] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.String.length(): int -> java.lang.String.substring(int,int): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder [CALL] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.util.List.add(java.lang.Object): boolean [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT]