class com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck
  super_class: java.lang.Object
{
  private final java.lang.reflect.Method reflectionMethod;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.svm.hosted.FallbackFeature$InvokeChecker checker;
    descriptor: Lcom/oracle/svm/hosted/FallbackFeature$InvokeChecker;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private com.oracle.graal.pointsto.meta.AnalysisMethod trackedReflectionMethod;
    descriptor: Lcom/oracle/graal/pointsto/meta/AnalysisMethod;
    flags: (0x0002) ACC_PRIVATE

  void <init>(java.lang.reflect.Method, com.oracle.svm.hosted.FallbackFeature$InvokeChecker);
    descriptor: (Ljava/lang/reflect/Method;Lcom/oracle/svm/hosted/FallbackFeature$InvokeChecker;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck this
        start local 1 // java.lang.reflect.Method reflectionMethod
        start local 2 // com.oracle.svm.hosted.FallbackFeature$InvokeChecker checker
         0: .line 111
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 112
            aload 0 /* this */
            aload 1 /* reflectionMethod */
            putfield com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck.reflectionMethod:Ljava/lang/reflect/Method;
         2: .line 113
            aload 0 /* this */
            aload 2 /* checker */
            putfield com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck.checker:Lcom/oracle/svm/hosted/FallbackFeature$InvokeChecker;
         3: .line 114
            aload 0 /* this */
            aconst_null
            putfield com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck.trackedReflectionMethod:Lcom/oracle/graal/pointsto/meta/AnalysisMethod;
         4: .line 115
            return
        end local 2 // com.oracle.svm.hosted.FallbackFeature$InvokeChecker checker
        end local 1 // java.lang.reflect.Method reflectionMethod
        end local 0 // com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0              this  Lcom/oracle/svm/hosted/FallbackFeature$ReflectionInvocationCheck;
            0    5     1  reflectionMethod  Ljava/lang/reflect/Method;
            0    5     2           checker  Lcom/oracle/svm/hosted/FallbackFeature$InvokeChecker;
    MethodParameters:
                  Name  Flags
      reflectionMethod  
      checker           

  void trackMethod(com.oracle.graal.pointsto.meta.AnalysisMetaAccess);
    descriptor: (Lcom/oracle/graal/pointsto/meta/AnalysisMetaAccess;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck this
        start local 1 // com.oracle.graal.pointsto.meta.AnalysisMetaAccess metaAccess
         0: .line 118
            aload 0 /* this */
            aload 1 /* metaAccess */
            aload 0 /* this */
            getfield com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck.reflectionMethod:Ljava/lang/reflect/Method;
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisMetaAccess.lookupJavaMethod:(Ljava/lang/reflect/Executable;)Lcom/oracle/graal/pointsto/meta/AnalysisMethod;
            putfield com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck.trackedReflectionMethod:Lcom/oracle/graal/pointsto/meta/AnalysisMethod;
         1: .line 119
            aload 0 /* this */
            getfield com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck.trackedReflectionMethod:Lcom/oracle/graal/pointsto/meta/AnalysisMethod;
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisMethod.startTrackInvocations:()V
         2: .line 120
            return
        end local 1 // com.oracle.graal.pointsto.meta.AnalysisMetaAccess metaAccess
        end local 0 // com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lcom/oracle/svm/hosted/FallbackFeature$ReflectionInvocationCheck;
            0    3     1  metaAccess  Lcom/oracle/graal/pointsto/meta/AnalysisMetaAccess;
    MethodParameters:
            Name  Flags
      metaAccess  

  void apply(jdk.vm.ci.code.BytecodePosition);
    descriptor: (Ljdk/vm/ci/code/BytecodePosition;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck this
        start local 1 // jdk.vm.ci.code.BytecodePosition invokeLocation
         0: .line 123
            aload 1 /* invokeLocation */
            invokevirtual jdk.vm.ci.code.BytecodePosition.getMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            checkcast com.oracle.graal.pointsto.meta.AnalysisMethod
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisMethod.getDeclaringClass:()Lcom/oracle/graal/pointsto/meta/AnalysisType;
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisType.getJavaClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            astore 2 /* classLoader */
        start local 2 // java.lang.ClassLoader classLoader
         1: .line 124
            invokestatic com.oracle.svm.hosted.NativeImageSystemClassLoader.singleton:()Lcom/oracle/svm/hosted/NativeImageSystemClassLoader;
            aload 2 /* classLoader */
            invokevirtual com.oracle.svm.hosted.NativeImageSystemClassLoader.isNativeImageClassLoader:(Ljava/lang/ClassLoader;)Z
            ifeq 3
         2: .line 125
            aload 0 /* this */
            getfield com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck.checker:Lcom/oracle/svm/hosted/FallbackFeature$InvokeChecker;
            aload 0 /* this */
            aload 1 /* invokeLocation */
            invokeinterface com.oracle.svm.hosted.FallbackFeature$InvokeChecker.check:(Lcom/oracle/svm/hosted/FallbackFeature$ReflectionInvocationCheck;Ljdk/vm/ci/code/BytecodePosition;)V
         3: .line 127
      StackMap locals: java.lang.ClassLoader
      StackMap stack:
            return
        end local 2 // java.lang.ClassLoader classLoader
        end local 1 // jdk.vm.ci.code.BytecodePosition invokeLocation
        end local 0 // com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/oracle/svm/hosted/FallbackFeature$ReflectionInvocationCheck;
            0    4     1  invokeLocation  Ljdk/vm/ci/code/BytecodePosition;
            1    4     2     classLoader  Ljava/lang/ClassLoader;
    MethodParameters:
                Name  Flags
      invokeLocation  

  java.lang.String locationString(jdk.vm.ci.code.BytecodePosition);
    descriptor: (Ljdk/vm/ci/code/BytecodePosition;)Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck this
        start local 1 // jdk.vm.ci.code.BytecodePosition invokeLocation
         0: .line 130
            aload 1 /* invokeLocation */
            invokevirtual jdk.vm.ci.code.BytecodePosition.getMethod:()Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 2 /* caller */
        start local 2 // jdk.vm.ci.meta.ResolvedJavaMethod caller
         1: .line 131
            aload 2 /* caller */
            aload 1 /* invokeLocation */
            invokevirtual jdk.vm.ci.code.BytecodePosition.getBCI:()I
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.asStackTraceElement:(I)Ljava/lang/StackTraceElement;
            invokevirtual java.lang.StackTraceElement.toString:()Ljava/lang/String;
            astore 3 /* callerLocation */
        start local 3 // java.lang.String callerLocation
         2: .line 132
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck.trackedReflectionMethod:Lcom/oracle/graal/pointsto/meta/AnalysisMethod;
            ldc "%H.%n"
            invokevirtual com.oracle.graal.pointsto.meta.AnalysisMethod.format:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " invoked at "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* callerLocation */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // java.lang.String callerLocation
        end local 2 // jdk.vm.ci.meta.ResolvedJavaMethod caller
        end local 1 // jdk.vm.ci.code.BytecodePosition invokeLocation
        end local 0 // com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lcom/oracle/svm/hosted/FallbackFeature$ReflectionInvocationCheck;
            0    3     1  invokeLocation  Ljdk/vm/ci/code/BytecodePosition;
            1    3     2          caller  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            2    3     3  callerLocation  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      invokeLocation  
}
SourceFile: "FallbackFeature.java"
NestHost: com.oracle.svm.hosted.FallbackFeature
InnerClasses:
  private abstract InvokeChecker = com.oracle.svm.hosted.FallbackFeature$InvokeChecker of com.oracle.svm.hosted.FallbackFeature
  private ReflectionInvocationCheck = com.oracle.svm.hosted.FallbackFeature$ReflectionInvocationCheck of com.oracle.svm.hosted.FallbackFeature