org_aspectj_weaver_reflect_ReflectionWorldReferenceTypeTest_java
org.aspectj.weaver.reflect.Java15ReflectionBasedReferenceTypeDelegate
@Override
    public TypeVariable[] getTypeVariables() {
        TypeVariable[] workInProgressSetOfVariables = this.getResolvedTypeX().getWorld().getTypeVariablesCurrentlyBeingProcessed(this.getBaseClass());
        if (workInProgressSetOfVariables != null) {
            return workInProgressSetOfVariables;
        }
        if (this.typeVariables == null) {
            int i;
            java.lang.reflect.TypeVariable<Class<T>>[] tVars = this.getBaseClass().getTypeParameters();
            TypeVariable[] rTypeVariables = new TypeVariable[tVars.length];
            for (i = 0; i < tVars.length; ++i) {
                rTypeVariables[i] = new TypeVariable(tVars[i].getName());
            }
            this.getResolvedTypeX().getWorld().recordTypeVariablesCurrentlyBeingProcessed(this.getBaseClass(), rTypeVariables);
            for (i = 0; i < tVars.length; ++i) {
                TypeVariableReferenceType tvrt = (TypeVariableReferenceType)this.typeConverter.fromType(tVars[i]);
                TypeVariable tv = tvrt.getTypeVariable();
                rTypeVariables[i].setSuperclass(tv.getSuperclass());
                rTypeVariables[i].setAdditionalInterfaceBounds(tv.getSuperInterfaces());
                rTypeVariables[i].setDeclaringElement(tv.getDeclaringElement());
                rTypeVariables[i].setDeclaringElementKind(tv.getDeclaringElementKind());
                rTypeVariables[i].setRank(tv.getRank());
            }
            this.typeVariables = rTypeVariables;
            this.getResolvedTypeX().getWorld().forgetTypeVariablesCurrentlyBeingProcessed(this.getBaseClass());
        }
        return this.typeVariables;
    }
 -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Class.getTypeParameters(): java.lang.reflect.TypeVariable[] -> java.lang.reflect.TypeVariable.getName(): java.lang.String -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.reflect.TypeVariable.getName(): 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.toString(): java.lang.String -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.reflect.TypeVariable.getBounds(): java.lang.reflect.Type[] -> java.lang.Class.getName(): java.lang.String -> java.lang.Class.isArray(): boolean -> java.lang.String.length(): int -> java.lang.String.endsWith(java.lang.String): boolean -> java.lang.String.charAt(int): char -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.replace(char,char): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> 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.get(java.lang.Object): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.length(): int -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.substring(int,int): java.lang.String -> java.lang.String.replace(char,char): java.lang.String -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class -> java.lang.Class.forName(java.lang.String): java.lang.Class -> java.lang.Class.getDeclaredConstructor(java.lang.Class[]): java.lang.reflect.Constructor -> java.lang.reflect.Constructor.newInstance(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.lang.Class.getTypeParameters(): java.lang.reflect.TypeVariable[] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.List.removeAll(java.util.Collection): boolean -> java.lang.ref.WeakReference.clear(): void -> java.lang.ref.WeakReference.clear(): void -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Class.getTypeParameters(): java.lang.reflect.TypeVariable[] -> java.lang.Class.getTypeParameters(): java.lang.reflect.TypeVariable[] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.List.add(java.lang.Object): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.util.Map.remove(java.lang.Object): java.lang.Object -> java.util.Map.remove(java.lang.Object): java.lang.Object
 [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [CALL] [EXIT] -> java.lang.Class.getTypeParameters(): java.lang.reflect.TypeVariable[] -> java.lang.reflect.TypeVariable.getName(): java.lang.String [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.reflect.TypeVariable.getName(): java.lang.String [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] -> 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 [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.lang.reflect.TypeVariable.getBounds(): java.lang.reflect.Type[] [CALL] [CALL] -> java.lang.Class.getName(): java.lang.String -> java.lang.Class.isArray(): boolean [CALL] [EXIT] [CALL] [CALL] [CALL] -> java.lang.String.length(): int -> java.lang.String.endsWith(java.lang.String): boolean -> java.lang.String.charAt(int): char -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.replace(char,char): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [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 -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean [CALL] -> java.lang.String.length(): int -> java.lang.String.charAt(int): char [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.substring(int,int): java.lang.String -> java.lang.String.replace(char,char): java.lang.String [EXIT] [EXIT] -> java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader): java.lang.Class [CALL] -> java.lang.Class.forName(java.lang.String): java.lang.Class -> java.lang.Class.getDeclaredConstructor(java.lang.Class[]): java.lang.reflect.Constructor -> java.lang.reflect.Constructor.newInstance(java.lang.Object[]): java.lang.Object [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.ref.WeakReference.get(): java.lang.Object [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.Class.getTypeParameters(): java.lang.reflect.TypeVariable[] [EXIT] [CALL] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.List.removeAll(java.util.Collection): boolean [CALL] [EXIT] [CALL] -> java.lang.ref.WeakReference.clear(): void [EXIT] [CALL] -> java.lang.ref.WeakReference.clear(): void [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [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] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.Class.getTypeParameters(): java.lang.reflect.TypeVariable[] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.Class.getTypeParameters(): java.lang.reflect.TypeVariable[] [EXIT] [EXIT] [CALL] [CALL] [CALL] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [EXIT] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.Map.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] -> java.util.Map.remove(java.lang.Object): java.lang.Object [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.util.Map.remove(java.lang.Object): java.lang.Object [EXIT] [EXIT]