org_aspectj_ajde_core_tests_model_SavedModelConsistencyTest_java
org.aspectj.org.eclipse.jdt.internal.compiler.lookup.Scope
public MethodBinding findExactMethod(ReferenceBinding receiverType, char[] selector, TypeBinding[] argumentTypes, InvocationSite invocationSite) {
        CompilationUnitScope unitScope = this.compilationUnitScope();
        unitScope.recordTypeReferences(argumentTypes);
        MethodBinding exactMethod = receiverType.getExactMethod(selector, argumentTypes, unitScope);
        if (exactMethod != null && exactMethod.typeVariables == Binding.NO_TYPE_VARIABLES && !exactMethod.isBridge()) {
            if (this.compilerOptions().sourceLevel >= 0x310000L) {
                int i = argumentTypes.length;
                while (--i >= 0) {
                    ReferenceBinding r;
                    TypeBinding t = argumentTypes[i].leafComponentType();
                    if (!(t instanceof ReferenceBinding) || !((r = (ReferenceBinding)t).isHierarchyConnected() ? this.isSubtypeOfRawType(r) : r.isRawType())) continue;
                    return null;
                }
            }
            unitScope.recordTypeReferences(exactMethod.thrownExceptions);
            if (exactMethod.isAbstract() && exactMethod.thrownExceptions != Binding.NO_EXCEPTIONS) {
                return null;
            }
            if (exactMethod.canBeSeenBy(receiverType, invocationSite, this)) {
                if (argumentTypes == Binding.NO_PARAMETERS && CharOperation.equals(selector, TypeConstants.GETCLASS) && exactMethod.returnType.isParameterizedType()) {
                    return this.environment().createGetClassMethod(receiverType, exactMethod, this);
                }
                if (invocationSite.genericTypeArguments() != null) {
                    exactMethod = this.computeCompatibleMethod(exactMethod, argumentTypes, invocationSite);
                } else if ((exactMethod.tagBits & 0x10000000000000L) != 0L) {
                    return this.environment().createPolymorphicMethod(exactMethod, argumentTypes, this);
                }
                return exactMethod;
            }
        }
        return null;
    }
 -> java.lang.Math.min(int,int): int -> java.lang.Math.min(int,int): int -> java.lang.Math.min(int,int): int -> java.lang.Math.min(int,int): int -> java.lang.Math.min(int,int): int -> java.util.Arrays.equals(char[],char[]): boolean -> java.util.Arrays.equals(char[],char[]): boolean -> java.lang.Object.hashCode(): int -> java.util.LinkedHashSet.add(java.lang.Object): boolean -> java.util.Arrays.equals(char[],char[]): boolean
 [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] -> java.lang.Math.min(int,int): int [EXIT] [CALL] -> java.lang.Math.min(int,int): int [EXIT] [CALL] -> java.lang.Math.min(int,int): int [EXIT] [CALL] -> java.lang.Math.min(int,int): int [EXIT] [CALL] -> java.lang.Math.min(int,int): int [EXIT] [CALL] -> java.util.Arrays.equals(char[],char[]): boolean [EXIT] [CALL] -> java.util.Arrays.equals(char[],char[]): boolean [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.Object.hashCode(): int [EXIT] [EXIT] -> java.util.LinkedHashSet.add(java.lang.Object): boolean [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] -> java.util.Arrays.equals(char[],char[]): boolean [EXIT] [CALL] [EXIT] [EXIT]