public class com.oracle.svm.hosted.annotation.AnnotationSupport extends com.oracle.svm.hosted.annotation.CustomSubstitution<com.oracle.svm.hosted.annotation.AnnotationSubstitutionType>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.svm.hosted.annotation.AnnotationSupport
  super_class: com.oracle.svm.hosted.annotation.CustomSubstitution
{
  public static final java.lang.Class<?> constantAnnotationMarkerInterface;
    descriptor: Ljava/lang/Class;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private final org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflection;
    descriptor: Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.meta.ResolvedJavaType javaLangAnnotationAnnotation;
    descriptor: Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.meta.ResolvedJavaType javaLangReflectProxy;
    descriptor: Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.meta.ResolvedJavaType constantAnnotationMarkerOriginalType;
    descriptor: Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.vm.ci.meta.ResolvedJavaType constantAnnotationMarkerSubstitutionType;
    descriptor: Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 87
            ldc Lcom/oracle/svm/hosted/annotation/AnnotationSupport;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.svm.hosted.annotation.AnnotationSupport.$assertionsDisabled:Z
         3: .line 124
            ldc Ljava/lang/Override;
            putstatic com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerInterface:Ljava/lang/Class;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(jdk.vm.ci.meta.MetaAccessProvider, org.graalvm.compiler.api.replacements.SnippetReflectionProvider);
    descriptor: (Ljdk/vm/ci/meta/MetaAccessProvider;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
        start local 1 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        start local 2 // org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflection
         0: .line 143
            aload 0 /* this */
            aload 1 /* metaAccess */
            invokespecial com.oracle.svm.hosted.annotation.CustomSubstitution.<init>:(Ljdk/vm/ci/meta/MetaAccessProvider;)V
         1: .line 144
            aload 0 /* this */
            aload 2 /* snippetReflection */
            putfield com.oracle.svm.hosted.annotation.AnnotationSupport.snippetReflection:Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
         2: .line 146
            aload 0 /* this */
            aload 1 /* metaAccess */
            ldc Ljava/lang/annotation/Annotation;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            putfield com.oracle.svm.hosted.annotation.AnnotationSupport.javaLangAnnotationAnnotation:Ljdk/vm/ci/meta/ResolvedJavaType;
         3: .line 147
            aload 0 /* this */
            aload 1 /* metaAccess */
            ldc Ljava/lang/reflect/Proxy;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            putfield com.oracle.svm.hosted.annotation.AnnotationSupport.javaLangReflectProxy:Ljdk/vm/ci/meta/ResolvedJavaType;
         4: .line 148
            aload 0 /* this */
            aload 1 /* metaAccess */
            getstatic com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerInterface:Ljava/lang/Class;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            putfield com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerOriginalType:Ljdk/vm/ci/meta/ResolvedJavaType;
         5: .line 149
            aload 0 /* this */
            new com.oracle.svm.hosted.annotation.ConstantAnnotationMarkerSubstitutionType
            dup
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerOriginalType:Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 0 /* this */
            invokespecial com.oracle.svm.hosted.annotation.ConstantAnnotationMarkerSubstitutionType.<init>:(Ljdk/vm/ci/meta/ResolvedJavaType;Lcom/oracle/graal/pointsto/infrastructure/SubstitutionProcessor;)V
            putfield com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerSubstitutionType:Ljdk/vm/ci/meta/ResolvedJavaType;
         6: .line 151
            invokestatic com.oracle.svm.core.jdk.AnnotationSupportConfig.initialize:()V
         7: .line 152
            return
        end local 2 // org.graalvm.compiler.api.replacements.SnippetReflectionProvider snippetReflection
        end local 1 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    8     0               this  Lcom/oracle/svm/hosted/annotation/AnnotationSupport;
            0    8     1         metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
            0    8     2  snippetReflection  Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
    MethodParameters:
                   Name  Flags
      metaAccess         
      snippetReflection  

  private boolean isConstantAnnotationType(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType type
         0: .line 164
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.javaLangAnnotationAnnotation:Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 1 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isAssignableFrom:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 3
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.javaLangReflectProxy:Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 1 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isAssignableFrom:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 3
         1: .line 165
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerOriginalType:Ljdk/vm/ci/meta/ResolvedJavaType;
            aload 1 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.isAssignableFrom:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 3
         2: .line 164
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType type
        end local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/oracle/svm/hosted/annotation/AnnotationSupport;
            0    4     1  type  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
      Name  Flags
      type  

  public jdk.vm.ci.meta.ResolvedJavaType lookup(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType type
         0: .line 170
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSupport.isConstantAnnotationType:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 2
         1: .line 171
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSupport.getSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaType;)Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionType;
            areturn
         2: .line 172
      StackMap locals:
      StackMap stack:
            aload 1 /* type */
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerOriginalType:Ljdk/vm/ci/meta/ResolvedJavaType;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 173
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerSubstitutionType:Ljdk/vm/ci/meta/ResolvedJavaType;
            areturn
         4: .line 175
      StackMap locals:
      StackMap stack:
            aload 1 /* type */
            areturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType type
        end local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/svm/hosted/annotation/AnnotationSupport;
            0    5     1  type  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
      Name  Flags
      type  

  public jdk.vm.ci.meta.ResolvedJavaType resolve(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType type
         0: .line 180
            aload 1 /* type */
            instanceof com.oracle.svm.hosted.annotation.AnnotationSubstitutionType
            ifeq 2
         1: .line 181
            aload 1 /* type */
            checkcast com.oracle.svm.hosted.annotation.AnnotationSubstitutionType
            getfield com.oracle.svm.hosted.annotation.AnnotationSubstitutionType.original:Ljdk/vm/ci/meta/ResolvedJavaType;
            areturn
         2: .line 182
      StackMap locals:
      StackMap stack:
            aload 1 /* type */
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerSubstitutionType:Ljdk/vm/ci/meta/ResolvedJavaType;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 183
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerOriginalType:Ljdk/vm/ci/meta/ResolvedJavaType;
            areturn
         4: .line 185
      StackMap locals:
      StackMap stack:
            aload 1 /* type */
            areturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType type
        end local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/svm/hosted/annotation/AnnotationSupport;
            0    5     1  type  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
      Name  Flags
      type  

  public jdk.vm.ci.meta.ResolvedJavaField lookup(jdk.vm.ci.meta.ResolvedJavaField);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;)Ljdk/vm/ci/meta/ResolvedJavaField;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaField field
         0: .line 190
            aload 0 /* this */
            aload 1 /* field */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaField.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSupport.isConstantAnnotationType:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 2
         1: .line 191
            new com.oracle.graal.pointsto.constraints.UnsupportedFeatureException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Field of annotation proxy is not accessible: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* field */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial com.oracle.graal.pointsto.constraints.UnsupportedFeatureException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 193
      StackMap locals:
      StackMap stack:
            aload 1 /* field */
            areturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaField field
        end local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/svm/hosted/annotation/AnnotationSupport;
            0    3     1  field  Ljdk/vm/ci/meta/ResolvedJavaField;
    MethodParameters:
       Name  Flags
      field  

  public jdk.vm.ci.meta.ResolvedJavaMethod lookup(jdk.vm.ci.meta.ResolvedJavaMethod);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaMethod;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaMethod method
         0: .line 198
            aload 0 /* this */
            aload 1 /* method */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSupport.isConstantAnnotationType:(Ljdk/vm/ci/meta/ResolvedJavaType;)Z
            ifeq 6
         1: .line 199
            aload 0 /* this */
            aload 1 /* method */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaMethod.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSupport.getSubstitution:(Ljdk/vm/ci/meta/ResolvedJavaType;)Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionType;
            astore 2 /* declaringClass */
        start local 2 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionType declaringClass
         2: .line 200
            aload 2 /* declaringClass */
            aload 1 /* method */
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSubstitutionType.getSubstitutionMethod:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)Lcom/oracle/svm/hosted/annotation/CustomSubstitutionMethod;
            checkcast com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod
            astore 3 /* result */
        start local 3 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod result
         3: .line 201
            getstatic com.oracle.svm.hosted.annotation.AnnotationSupport.$assertionsDisabled:Z
            ifne 5
            aload 3 /* result */
            ifnull 4
            aload 3 /* result */
            getfield com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod.original:Ljdk/vm/ci/meta/ResolvedJavaMethod;
            aload 1 /* method */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 5
      StackMap locals: com.oracle.svm.hosted.annotation.AnnotationSubstitutionType com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod
      StackMap stack:
         4: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 202
      StackMap locals:
      StackMap stack:
            aload 3 /* result */
            areturn
        end local 3 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod result
        end local 2 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionType declaringClass
         6: .line 204
      StackMap locals:
      StackMap stack:
            aload 1 /* method */
            areturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaMethod method
        end local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lcom/oracle/svm/hosted/annotation/AnnotationSupport;
            0    7     1          method  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            2    6     2  declaringClass  Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionType;
            3    6     3          result  Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionMethod;
    MethodParameters:
        Name  Flags
      method  

  public jdk.vm.ci.meta.ResolvedJavaMethod resolve(jdk.vm.ci.meta.ResolvedJavaMethod);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaMethod;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaMethod method
         0: .line 209
            aload 1 /* method */
            instanceof com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod
            ifeq 2
         1: .line 210
            aload 1 /* method */
            checkcast com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod
            getfield com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod.original:Ljdk/vm/ci/meta/ResolvedJavaMethod;
            areturn
         2: .line 212
      StackMap locals:
      StackMap stack:
            aload 1 /* method */
            areturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaMethod method
        end local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/oracle/svm/hosted/annotation/AnnotationSupport;
            0    3     1  method  Ljdk/vm/ci/meta/ResolvedJavaMethod;
    MethodParameters:
        Name  Flags
      method  

  private synchronized com.oracle.svm.hosted.annotation.AnnotationSubstitutionType getSubstitution(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionType;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=7, locals=9, args_size=2
        start local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType type
         0: .line 216
            aload 0 /* this */
            aload 1 /* type */
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSupport.getSubstitutionType:(Ljdk/vm/ci/meta/ResolvedJavaType;)Lcom/oracle/svm/hosted/annotation/CustomSubstitutionType;
            checkcast com.oracle.svm.hosted.annotation.AnnotationSubstitutionType
            astore 2 /* result */
        start local 2 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionType result
         1: .line 217
            aload 2 /* result */
            ifnonnull 30
         2: .line 218
            new com.oracle.svm.hosted.annotation.AnnotationSubstitutionType
            dup
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 1 /* type */
            invokespecial com.oracle.svm.hosted.annotation.AnnotationSubstitutionType.<init>:(Ljdk/vm/ci/meta/MetaAccessProvider;Ljdk/vm/ci/meta/ResolvedJavaType;)V
            astore 2 /* result */
         3: .line 220
            aload 1 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getDeclaredMethods:()[Ljdk/vm/ci/meta/ResolvedJavaMethod;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 22
      StackMap locals: com.oracle.svm.hosted.annotation.AnnotationSupport jdk.vm.ci.meta.ResolvedJavaType com.oracle.svm.hosted.annotation.AnnotationSubstitutionType top int int jdk.vm.ci.meta.ResolvedJavaMethod[]
      StackMap stack:
         4: aload 6
            iload 4
            aaload
            astore 3 /* originalMethod */
        start local 3 // jdk.vm.ci.meta.ResolvedJavaMethod originalMethod
         5: .line 222
            aload 3 /* originalMethod */
            invokestatic com.oracle.svm.hosted.annotation.AnnotationSupport.canonicalMethodName:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)Ljava/lang/String;
            astore 8 /* methodName */
        start local 8 // java.lang.String methodName
         6: .line 223
            aload 8 /* methodName */
            ldc "equals"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         7: .line 224
            new com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationEqualsMethod
            dup
            aload 3 /* originalMethod */
            invokespecial com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationEqualsMethod.<init>:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)V
            astore 7 /* substitutionMethod */
        start local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
         8: .line 225
            goto 20
        end local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
      StackMap locals: com.oracle.svm.hosted.annotation.AnnotationSupport jdk.vm.ci.meta.ResolvedJavaType com.oracle.svm.hosted.annotation.AnnotationSubstitutionType jdk.vm.ci.meta.ResolvedJavaMethod int int jdk.vm.ci.meta.ResolvedJavaMethod[] top java.lang.String
      StackMap stack:
         9: aload 8 /* methodName */
            ldc "hashCode"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 12
        10: .line 226
            new com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationHashCodeMethod
            dup
            aload 3 /* originalMethod */
            invokespecial com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationHashCodeMethod.<init>:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)V
            astore 7 /* substitutionMethod */
        start local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
        11: .line 227
            goto 20
        end local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
      StackMap locals:
      StackMap stack:
        12: aload 8 /* methodName */
            ldc "toString"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
        13: .line 228
            new com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationToStringMethod
            dup
            aload 3 /* originalMethod */
            invokespecial com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationToStringMethod.<init>:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)V
            astore 7 /* substitutionMethod */
        start local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
        14: .line 229
            goto 20
        end local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
      StackMap locals:
      StackMap stack:
        15: aload 8 /* methodName */
            ldc "annotationType"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 18
        16: .line 230
            new com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationAnnotationTypeMethod
            dup
            aload 3 /* originalMethod */
            invokespecial com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationAnnotationTypeMethod.<init>:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)V
            astore 7 /* substitutionMethod */
        start local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
        17: .line 231
            goto 20
        end local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
        18: .line 232
      StackMap locals:
      StackMap stack:
            new com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationAccessorMethod
            dup
            aload 3 /* originalMethod */
            invokespecial com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationAccessorMethod.<init>:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)V
            astore 7 /* substitutionMethod */
        start local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
        19: .line 233
            aload 2 /* result */
            new com.oracle.svm.hosted.annotation.AnnotationSubstitutionField
            dup
            aload 2 /* result */
            aload 3 /* originalMethod */
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.snippetReflection:Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.metaAccess:Ljdk/vm/ci/meta/MetaAccessProvider;
            invokespecial com.oracle.svm.hosted.annotation.AnnotationSubstitutionField.<init>:(Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionType;Ljdk/vm/ci/meta/ResolvedJavaMethod;Lorg/graalvm/compiler/api/replacements/SnippetReflectionProvider;Ljdk/vm/ci/meta/MetaAccessProvider;)V
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSubstitutionType.addSubstitutionField:(Lcom/oracle/svm/hosted/annotation/CustomSubstitutionField;)V
        20: .line 235
      StackMap locals: com.oracle.svm.hosted.annotation.AnnotationSupport jdk.vm.ci.meta.ResolvedJavaType com.oracle.svm.hosted.annotation.AnnotationSubstitutionType jdk.vm.ci.meta.ResolvedJavaMethod int int jdk.vm.ci.meta.ResolvedJavaMethod[] com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod java.lang.String
      StackMap stack:
            aload 2 /* result */
            aload 3 /* originalMethod */
            aload 7 /* substitutionMethod */
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSubstitutionType.addSubstitutionMethod:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Lcom/oracle/svm/hosted/annotation/CustomSubstitutionMethod;)V
        end local 8 // java.lang.String methodName
        end local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
        end local 3 // jdk.vm.ci.meta.ResolvedJavaMethod originalMethod
        21: .line 220
            iinc 4 1
      StackMap locals: com.oracle.svm.hosted.annotation.AnnotationSupport jdk.vm.ci.meta.ResolvedJavaType com.oracle.svm.hosted.annotation.AnnotationSubstitutionType top int int jdk.vm.ci.meta.ResolvedJavaMethod[]
      StackMap stack:
        22: iload 4
            iload 5
            if_icmplt 4
        23: .line 238
            aload 1 /* type */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getDeclaredConstructors:()[Ljdk/vm/ci/meta/ResolvedJavaMethod;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 28
      StackMap locals:
      StackMap stack:
        24: aload 6
            iload 4
            aaload
            astore 3 /* originalMethod */
        start local 3 // jdk.vm.ci.meta.ResolvedJavaMethod originalMethod
        25: .line 239
            new com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationConstructorMethod
            dup
            aload 3 /* originalMethod */
            invokespecial com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationConstructorMethod.<init>:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)V
            astore 7 /* substitutionMethod */
        start local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
        26: .line 240
            aload 2 /* result */
            aload 3 /* originalMethod */
            aload 7 /* substitutionMethod */
            invokevirtual com.oracle.svm.hosted.annotation.AnnotationSubstitutionType.addSubstitutionMethod:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Lcom/oracle/svm/hosted/annotation/CustomSubstitutionMethod;)V
        end local 7 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionMethod substitutionMethod
        end local 3 // jdk.vm.ci.meta.ResolvedJavaMethod originalMethod
        27: .line 238
            iinc 4 1
      StackMap locals:
      StackMap stack:
        28: iload 4
            iload 5
            if_icmplt 24
        29: .line 243
            aload 0 /* this */
            getfield com.oracle.svm.hosted.annotation.AnnotationSupport.typeSubstitutions:Ljava/util/Map;
            aload 1 /* type */
            aload 2 /* result */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        30: .line 245
      StackMap locals: com.oracle.svm.hosted.annotation.AnnotationSupport jdk.vm.ci.meta.ResolvedJavaType com.oracle.svm.hosted.annotation.AnnotationSubstitutionType
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // com.oracle.svm.hosted.annotation.AnnotationSubstitutionType result
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType type
        end local 0 // com.oracle.svm.hosted.annotation.AnnotationSupport this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   31     0                this  Lcom/oracle/svm/hosted/annotation/AnnotationSupport;
            0   31     1                type  Ljdk/vm/ci/meta/ResolvedJavaType;
            1   31     2              result  Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionType;
            5   21     3      originalMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            8    9     7  substitutionMethod  Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionMethod;
           11   12     7  substitutionMethod  Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionMethod;
           14   15     7  substitutionMethod  Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionMethod;
           17   18     7  substitutionMethod  Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionMethod;
           19   21     7  substitutionMethod  Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionMethod;
            6   21     8          methodName  Ljava/lang/String;
           25   27     3      originalMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
           26   27     7  substitutionMethod  Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionMethod;
    MethodParameters:
      Name  Flags
      type  

  static boolean isClassType(jdk.vm.ci.meta.JavaType, jdk.vm.ci.meta.MetaAccessProvider);
    descriptor: (Ljdk/vm/ci/meta/JavaType;Ljdk/vm/ci/meta/MetaAccessProvider;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.vm.ci.meta.JavaType type
        start local 1 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
         0: .line 264
            aload 0 /* type */
            invokeinterface jdk.vm.ci.meta.JavaType.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            if_acmpne 3
         1: .line 265
            aload 0 /* type */
            aload 1 /* metaAccess */
            ldc Ljava/lang/Class;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifne 2
            aload 0 /* type */
            aload 1 /* metaAccess */
            ldc [Ljava/lang/Class;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 3
         2: .line 264
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 1 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 0 // jdk.vm.ci.meta.JavaType type
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        type  Ljdk/vm/ci/meta/JavaType;
            0    4     1  metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
    MethodParameters:
            Name  Flags
      type        
      metaAccess  

  private static org.graalvm.compiler.nodes.ValueNode unpackAttribute(com.oracle.graal.pointsto.meta.HostedProviders, com.oracle.svm.hosted.phases.HostedGraphKit, org.graalvm.compiler.nodes.ValueNode, jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Lcom/oracle/graal/pointsto/meta/HostedProviders;Lcom/oracle/svm/hosted/phases/HostedGraphKit;Lorg/graalvm/compiler/nodes/ValueNode;Ljdk/vm/ci/meta/ResolvedJavaType;)Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.graal.pointsto.meta.HostedProviders providers
        start local 1 // com.oracle.svm.hosted.phases.HostedGraphKit kit
        start local 2 // org.graalvm.compiler.nodes.ValueNode attribute
        start local 3 // jdk.vm.ci.meta.ResolvedJavaType attributeType
         0: .line 503
            aload 3 /* attributeType */
            aload 0 /* providers */
            invokevirtual com.oracle.graal.pointsto.meta.HostedProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            invokestatic com.oracle.svm.hosted.annotation.AnnotationSupport.isClassType:(Ljdk/vm/ci/meta/JavaType;Ljdk/vm/ci/meta/MetaAccessProvider;)Z
            ifeq 2
         1: .line 505
            aload 0 /* providers */
            aload 1 /* kit */
            aload 3 /* attributeType */
            aload 2 /* attribute */
            invokestatic com.oracle.svm.hosted.annotation.AnnotationSupport.unpackClassAttribute:(Lcom/oracle/graal/pointsto/meta/HostedProviders;Lcom/oracle/svm/hosted/phases/HostedGraphKit;Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            areturn
         2: .line 507
      StackMap locals:
      StackMap stack:
            aload 2 /* attribute */
            areturn
        end local 3 // jdk.vm.ci.meta.ResolvedJavaType attributeType
        end local 2 // org.graalvm.compiler.nodes.ValueNode attribute
        end local 1 // com.oracle.svm.hosted.phases.HostedGraphKit kit
        end local 0 // com.oracle.graal.pointsto.meta.HostedProviders providers
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0      providers  Lcom/oracle/graal/pointsto/meta/HostedProviders;
            0    3     1            kit  Lcom/oracle/svm/hosted/phases/HostedGraphKit;
            0    3     2      attribute  Lorg/graalvm/compiler/nodes/ValueNode;
            0    3     3  attributeType  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
               Name  Flags
      providers      
      kit            
      attribute      
      attributeType  

  private static org.graalvm.compiler.nodes.ValueNode unpackClassAttribute(com.oracle.graal.pointsto.meta.HostedProviders, com.oracle.svm.hosted.phases.HostedGraphKit, jdk.vm.ci.meta.ResolvedJavaType, org.graalvm.compiler.nodes.ValueNode);
    descriptor: (Lcom/oracle/graal/pointsto/meta/HostedProviders;Lcom/oracle/svm/hosted/phases/HostedGraphKit;Ljdk/vm/ci/meta/ResolvedJavaType;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=12, args_size=4
        start local 0 // com.oracle.graal.pointsto.meta.HostedProviders providers
        start local 1 // com.oracle.svm.hosted.phases.HostedGraphKit kit
        start local 2 // jdk.vm.ci.meta.ResolvedJavaType attributeType
        start local 3 // org.graalvm.compiler.nodes.ValueNode inputAttribute
         0: .line 516
            aload 3 /* inputAttribute */
            astore 4 /* attribute */
        start local 4 // org.graalvm.compiler.nodes.ValueNode attribute
         1: .line 519
            aload 0 /* providers */
            invokevirtual com.oracle.graal.pointsto.meta.HostedProviders.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            ldc Lsun/reflect/annotation/TypeNotPresentExceptionProxy;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 5 /* exceptionProxyType */
        start local 5 // jdk.vm.ci.meta.ResolvedJavaType exceptionProxyType
         2: .line 520
            aload 1 /* kit */
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.getAssumptions:()Ljdk/vm/ci/meta/Assumptions;
            aload 5 /* exceptionProxyType */
            invokestatic org.graalvm.compiler.core.common.type.TypeReference.createTrusted:(Ljdk/vm/ci/meta/Assumptions;Ljdk/vm/ci/meta/ResolvedJavaType;)Lorg/graalvm/compiler/core/common/type/TypeReference;
            astore 6 /* exceptionProxyTypeRef */
        start local 6 // org.graalvm.compiler.core.common.type.TypeReference exceptionProxyTypeRef
         3: .line 522
            aload 1 /* kit */
            aload 6 /* exceptionProxyTypeRef */
            aload 4 /* attribute */
            invokestatic org.graalvm.compiler.nodes.java.InstanceOfNode.create:(Lorg/graalvm/compiler/core/common/type/TypeReference;Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/LogicNode;
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.append:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            checkcast org.graalvm.compiler.nodes.LogicNode
            astore 7 /* condition */
        start local 7 // org.graalvm.compiler.nodes.LogicNode condition
         4: .line 523
            aload 1 /* kit */
            aload 7 /* condition */
            ldc 0.010000000000000009
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.startIf:(Lorg/graalvm/compiler/nodes/LogicNode;D)Lorg/graalvm/compiler/nodes/IfNode;
            pop
         5: .line 524
            aload 1 /* kit */
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.thenPart:()V
         6: .line 527
            aload 1 /* kit */
            aload 4 /* attribute */
            aload 6 /* exceptionProxyTypeRef */
            iconst_1
            invokestatic org.graalvm.compiler.core.common.type.StampFactory.object:(Lorg/graalvm/compiler/core/common/type/TypeReference;Z)Lorg/graalvm/compiler/core/common/type/ObjectStamp;
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.createPiNode:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/core/common/type/Stamp;)Lorg/graalvm/compiler/nodes/PiNode;
            astore 8 /* casted */
        start local 8 // org.graalvm.compiler.nodes.PiNode casted
         7: .line 528
            aload 1 /* kit */
            ldc Lsun/reflect/annotation/TypeNotPresentExceptionProxy;
            ldc "generateException"
            iconst_0
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.findMethod:(Ljava/lang/Class;Ljava/lang/String;Z)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 9 /* generateExceptionMethod */
        start local 9 // jdk.vm.ci.meta.ResolvedJavaMethod generateExceptionMethod
         8: .line 529
            aload 1 /* kit */
            getstatic org.graalvm.compiler.nodes.CallTargetNode$InvokeKind.Virtual:Lorg/graalvm/compiler/nodes/CallTargetNode$InvokeKind;
            aload 9 /* generateExceptionMethod */
            iconst_1
            anewarray org.graalvm.compiler.nodes.ValueNode
            dup
            iconst_0
            aload 8 /* casted */
            aastore
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.createJavaCallWithExceptionAndUnwind:(Lorg/graalvm/compiler/nodes/CallTargetNode$InvokeKind;Ljdk/vm/ci/meta/ResolvedJavaMethod;[Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            astore 10 /* exception */
        start local 10 // org.graalvm.compiler.nodes.ValueNode exception
         9: .line 530
            aload 1 /* kit */
            new org.graalvm.compiler.nodes.UnwindNode
            dup
            aload 10 /* exception */
            invokespecial org.graalvm.compiler.nodes.UnwindNode.<init>:(Lorg/graalvm/compiler/nodes/ValueNode;)V
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.append:(Lorg/graalvm/compiler/nodes/ValueNode;)Lorg/graalvm/compiler/nodes/ValueNode;
            pop
        10: .line 532
            aload 1 /* kit */
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.elsePart:()V
        11: .line 535
            aload 1 /* kit */
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.getAssumptions:()Ljdk/vm/ci/meta/Assumptions;
            aload 2 /* attributeType */
            invokestatic org.graalvm.compiler.core.common.type.TypeReference.createTrusted:(Ljdk/vm/ci/meta/Assumptions;Ljdk/vm/ci/meta/ResolvedJavaType;)Lorg/graalvm/compiler/core/common/type/TypeReference;
            astore 11 /* resultTypeRef */
        start local 11 // org.graalvm.compiler.core.common.type.TypeReference resultTypeRef
        12: .line 536
            aload 1 /* kit */
            aload 4 /* attribute */
            aload 11 /* resultTypeRef */
            iconst_1
            invokestatic org.graalvm.compiler.core.common.type.StampFactory.object:(Lorg/graalvm/compiler/core/common/type/TypeReference;Z)Lorg/graalvm/compiler/core/common/type/ObjectStamp;
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.createPiNode:(Lorg/graalvm/compiler/nodes/ValueNode;Lorg/graalvm/compiler/core/common/type/Stamp;)Lorg/graalvm/compiler/nodes/PiNode;
            astore 4 /* attribute */
        13: .line 538
            aload 1 /* kit */
            invokevirtual com.oracle.svm.hosted.phases.HostedGraphKit.endIf:()Lorg/graalvm/compiler/nodes/AbstractMergeNode;
            pop
        14: .line 540
            aload 4 /* attribute */
            areturn
        end local 11 // org.graalvm.compiler.core.common.type.TypeReference resultTypeRef
        end local 10 // org.graalvm.compiler.nodes.ValueNode exception
        end local 9 // jdk.vm.ci.meta.ResolvedJavaMethod generateExceptionMethod
        end local 8 // org.graalvm.compiler.nodes.PiNode casted
        end local 7 // org.graalvm.compiler.nodes.LogicNode condition
        end local 6 // org.graalvm.compiler.core.common.type.TypeReference exceptionProxyTypeRef
        end local 5 // jdk.vm.ci.meta.ResolvedJavaType exceptionProxyType
        end local 4 // org.graalvm.compiler.nodes.ValueNode attribute
        end local 3 // org.graalvm.compiler.nodes.ValueNode inputAttribute
        end local 2 // jdk.vm.ci.meta.ResolvedJavaType attributeType
        end local 1 // com.oracle.svm.hosted.phases.HostedGraphKit kit
        end local 0 // com.oracle.graal.pointsto.meta.HostedProviders providers
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   15     0                providers  Lcom/oracle/graal/pointsto/meta/HostedProviders;
            0   15     1                      kit  Lcom/oracle/svm/hosted/phases/HostedGraphKit;
            0   15     2            attributeType  Ljdk/vm/ci/meta/ResolvedJavaType;
            0   15     3           inputAttribute  Lorg/graalvm/compiler/nodes/ValueNode;
            1   15     4                attribute  Lorg/graalvm/compiler/nodes/ValueNode;
            2   15     5       exceptionProxyType  Ljdk/vm/ci/meta/ResolvedJavaType;
            3   15     6    exceptionProxyTypeRef  Lorg/graalvm/compiler/core/common/type/TypeReference;
            4   15     7                condition  Lorg/graalvm/compiler/nodes/LogicNode;
            7   15     8                   casted  Lorg/graalvm/compiler/nodes/PiNode;
            8   15     9  generateExceptionMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            9   15    10                exception  Lorg/graalvm/compiler/nodes/ValueNode;
           12   15    11            resultTypeRef  Lorg/graalvm/compiler/core/common/type/TypeReference;
    MethodParameters:
                Name  Flags
      providers       
      kit             
      attributeType   
      inputAttribute  

  private static jdk.vm.ci.meta.ResolvedJavaType findAnnotationInterfaceType(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // jdk.vm.ci.meta.ResolvedJavaType annotationType
         0: .line 577
            aload 0 /* annotationType */
            invokestatic com.oracle.svm.hosted.analysis.Inflation.toWrappedType:(Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/ResolvedJavaType;
            instanceof com.oracle.svm.hosted.annotation.AnnotationSubstitutionType
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(Z)V
         1: .line 578
            aload 0 /* annotationType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getInterfaces:()[Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 1 /* interfaces */
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType[] interfaces
         2: .line 579
            aload 1 /* interfaces */
            arraylength
            iconst_1
            if_icmpne 3
            iconst_1
            goto 4
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType[]
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: ldc "Unexpected number of interfaces for annotation proxy class."
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
         5: .line 580
            aload 1 /* interfaces */
            iconst_0
            aaload
            areturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType[] interfaces
        end local 0 // jdk.vm.ci.meta.ResolvedJavaType annotationType
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0  annotationType  Ljdk/vm/ci/meta/ResolvedJavaType;
            2    6     1      interfaces  [Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
                Name  Flags
      annotationType  

  static jdk.vm.ci.meta.ResolvedJavaType findAnnotationInterfaceTypeForMarkedAnnotationType(jdk.vm.ci.meta.ResolvedJavaType, jdk.vm.ci.meta.MetaAccessProvider);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/MetaAccessProvider;)Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.vm.ci.meta.ResolvedJavaType annotationType
        start local 1 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
         0: .line 590
            aload 0 /* annotationType */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaType.getInterfaces:()[Ljdk/vm/ci/meta/ResolvedJavaType;
            astore 2 /* interfaces */
        start local 2 // jdk.vm.ci.meta.ResolvedJavaType[] interfaces
         1: .line 591
            aload 2 /* interfaces */
            arraylength
            iconst_2
            if_icmpne 2
            iconst_1
            goto 3
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaType[]
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "Unexpected number of interfaces for annotation proxy class."
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
         4: .line 592
            aload 2 /* interfaces */
            iconst_1
            aaload
            aload 1 /* metaAccess */
            getstatic com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerInterface:Ljava/lang/Class;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(Z)V
         5: .line 593
            aload 2 /* interfaces */
            iconst_0
            aaload
            areturn
        end local 2 // jdk.vm.ci.meta.ResolvedJavaType[] interfaces
        end local 1 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 0 // jdk.vm.ci.meta.ResolvedJavaType annotationType
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0  annotationType  Ljdk/vm/ci/meta/ResolvedJavaType;
            0    6     1      metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
            1    6     2      interfaces  [Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
                Name  Flags
      annotationType  
      metaAccess      

  static java.lang.Class<?> findAnnotationInterfaceTypeForMarkedAnnotationType(java.lang.Class<? extends java.lang.reflect.Proxy>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Class;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 601
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getInterfaces:()[Ljava/lang/Class;
            astore 1 /* interfaces */
        start local 1 // java.lang.Class[] interfaces
         1: .line 602
            aload 1 /* interfaces */
            arraylength
            iconst_2
            if_icmpne 2
            iconst_1
            goto 3
      StackMap locals: java.lang.Class[]
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "Unexpected number of interfaces for annotation proxy class."
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(ZLjava/lang/String;)V
         4: .line 603
            aload 1 /* interfaces */
            iconst_1
            aaload
            getstatic com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerInterface:Ljava/lang/Class;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            invokestatic com.oracle.svm.core.util.VMError.guarantee:(Z)V
         5: .line 604
            aload 1 /* interfaces */
            iconst_0
            aaload
            areturn
        end local 1 // java.lang.Class[] interfaces
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0       clazz  Ljava/lang/Class<+Ljava/lang/reflect/Proxy;>;
            1    6     1  interfaces  [Ljava/lang/Class;
    Signature: (Ljava/lang/Class<+Ljava/lang/reflect/Proxy;>;)Ljava/lang/Class<*>;
    MethodParameters:
       Name  Flags
      clazz  

  static boolean isAnnotationMarkerInterface(jdk.vm.ci.meta.ResolvedJavaType, jdk.vm.ci.meta.MetaAccessProvider);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;Ljdk/vm/ci/meta/MetaAccessProvider;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // jdk.vm.ci.meta.ResolvedJavaType type
        start local 1 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
         0: .line 608
            aload 0 /* type */
            aload 1 /* metaAccess */
            getstatic com.oracle.svm.hosted.annotation.AnnotationSupport.constantAnnotationMarkerInterface:Ljava/lang/Class;
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // jdk.vm.ci.meta.MetaAccessProvider metaAccess
        end local 0 // jdk.vm.ci.meta.ResolvedJavaType type
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        type  Ljdk/vm/ci/meta/ResolvedJavaType;
            0    1     1  metaAccess  Ljdk/vm/ci/meta/MetaAccessProvider;
    MethodParameters:
            Name  Flags
      type        
      metaAccess  
}
Signature: Lcom/oracle/svm/hosted/annotation/CustomSubstitution<Lcom/oracle/svm/hosted/annotation/AnnotationSubstitutionType;>;
SourceFile: "AnnotationSupport.java"
NestMembers:
  com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationAccessorMethod  com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationAnnotationTypeMethod  com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationConstructorMethod  com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationEqualsMethod  com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationHashCodeMethod  com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationToStringMethod
InnerClasses:
  AnnotationAccessorMethod = com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationAccessorMethod of com.oracle.svm.hosted.annotation.AnnotationSupport
  AnnotationAnnotationTypeMethod = com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationAnnotationTypeMethod of com.oracle.svm.hosted.annotation.AnnotationSupport
  AnnotationConstructorMethod = com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationConstructorMethod of com.oracle.svm.hosted.annotation.AnnotationSupport
  AnnotationEqualsMethod = com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationEqualsMethod of com.oracle.svm.hosted.annotation.AnnotationSupport
  AnnotationHashCodeMethod = com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationHashCodeMethod of com.oracle.svm.hosted.annotation.AnnotationSupport
  AnnotationToStringMethod = com.oracle.svm.hosted.annotation.AnnotationSupport$AnnotationToStringMethod of com.oracle.svm.hosted.annotation.AnnotationSupport
  public final InvokeKind = org.graalvm.compiler.nodes.CallTargetNode$InvokeKind of org.graalvm.compiler.nodes.CallTargetNode