public class jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider implements jdk.vm.ci.meta.ConstantReflectionProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider
  super_class: java.lang.Object
{
  protected final jdk.vm.ci.hotspot.HotSpotJVMCIRuntime runtime;
    descriptor: Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final jdk.vm.ci.hotspot.HotSpotMethodHandleAccessProvider methodHandleAccess;
    descriptor: Ljdk/vm/ci/hotspot/HotSpotMethodHandleAccessProvider;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final jdk.vm.ci.hotspot.HotSpotMemoryAccessProviderImpl memoryAccess;
    descriptor: Ljdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static volatile int[] $SWITCH_TABLE$jdk$vm$ci$meta$JavaKind;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  public void <init>(jdk.vm.ci.hotspot.HotSpotJVMCIRuntime);
    descriptor: (Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.hotspot.HotSpotJVMCIRuntime runtime
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            aload 1 /* runtime */
            putfield jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.runtime:Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
         2: .line 49
            aload 0 /* this */
            new jdk.vm.ci.hotspot.HotSpotMethodHandleAccessProvider
            dup
            aload 0 /* this */
            invokespecial jdk.vm.ci.hotspot.HotSpotMethodHandleAccessProvider.<init>:(Ljdk/vm/ci/meta/ConstantReflectionProvider;)V
            putfield jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.methodHandleAccess:Ljdk/vm/ci/hotspot/HotSpotMethodHandleAccessProvider;
         3: .line 50
            aload 0 /* this */
            new jdk.vm.ci.hotspot.HotSpotMemoryAccessProviderImpl
            dup
            aload 1 /* runtime */
            invokespecial jdk.vm.ci.hotspot.HotSpotMemoryAccessProviderImpl.<init>:(Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;)V
            putfield jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.memoryAccess:Ljdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl;
         4: .line 51
            return
        end local 1 // jdk.vm.ci.hotspot.HotSpotJVMCIRuntime runtime
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    5     1  runtime  Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
    MethodParameters:
         Name  Flags
      runtime  

  public jdk.vm.ci.meta.MethodHandleAccessProvider getMethodHandleAccess();
    descriptor: ()Ljdk/vm/ci/meta/MethodHandleAccessProvider;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
         0: .line 55
            aload 0 /* this */
            getfield jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.methodHandleAccess:Ljdk/vm/ci/hotspot/HotSpotMethodHandleAccessProvider;
            areturn
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;

  public jdk.vm.ci.meta.MemoryAccessProvider getMemoryAccessProvider();
    descriptor: ()Ljdk/vm/ci/meta/MemoryAccessProvider;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
         0: .line 60
            aload 0 /* this */
            getfield jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.memoryAccess:Ljdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl;
            areturn
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;

  public java.lang.Boolean constantEquals(jdk.vm.ci.meta.Constant, jdk.vm.ci.meta.Constant);
    descriptor: (Ljdk/vm/ci/meta/Constant;Ljdk/vm/ci/meta/Constant;)Ljava/lang/Boolean;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.meta.Constant x
        start local 2 // jdk.vm.ci.meta.Constant y
         0: .line 65
            aload 1 /* x */
            aload 2 /* y */
            if_acmpne 2
         1: .line 66
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
         2: .line 67
      StackMap locals:
      StackMap stack:
            aload 1 /* x */
            instanceof jdk.vm.ci.hotspot.HotSpotObjectConstantImpl
            ifeq 5
         3: .line 68
            aload 2 /* y */
            instanceof jdk.vm.ci.hotspot.HotSpotObjectConstantImpl
            ifeq 4
            aload 1 /* x */
            checkcast jdk.vm.ci.hotspot.HotSpotObjectConstantImpl
            invokevirtual jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.object:()Ljava/lang/Object;
            aload 2 /* y */
            checkcast jdk.vm.ci.hotspot.HotSpotObjectConstantImpl
            invokevirtual jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.object:()Ljava/lang/Object;
            if_acmpne 4
            iconst_1
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
         5: .line 70
      StackMap locals:
      StackMap stack:
            aload 1 /* x */
            aload 2 /* y */
            invokestatic java.util.Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
        end local 2 // jdk.vm.ci.meta.Constant y
        end local 1 // jdk.vm.ci.meta.Constant x
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    6     1     x  Ljdk/vm/ci/meta/Constant;
            0    6     2     y  Ljdk/vm/ci/meta/Constant;
    MethodParameters:
      Name  Flags
      x     
      y     

  public java.lang.Integer readArrayLength(jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;)Ljava/lang/Integer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.meta.JavaConstant array
         0: .line 76
            aload 1 /* array */
            ifnull 1
            aload 1 /* array */
            invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            if_acmpne 1
            aload 1 /* array */
            invokeinterface jdk.vm.ci.meta.JavaConstant.isNull:()Z
            ifeq 2
         1: .line 77
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 80
      StackMap locals:
      StackMap stack:
            aload 1 /* array */
            checkcast jdk.vm.ci.hotspot.HotSpotObjectConstantImpl
            invokevirtual jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.object:()Ljava/lang/Object;
            astore 2 /* arrayObject */
        start local 2 // java.lang.Object arrayObject
         3: .line 81
            aload 2 /* arrayObject */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isArray:()Z
            ifne 5
         4: .line 82
            aconst_null
            areturn
         5: .line 84
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 2 /* arrayObject */
            invokestatic java.lang.reflect.Array.getLength:(Ljava/lang/Object;)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            areturn
        end local 2 // java.lang.Object arrayObject
        end local 1 // jdk.vm.ci.meta.JavaConstant array
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    6     1        array  Ljdk/vm/ci/meta/JavaConstant;
            3    6     2  arrayObject  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      array  

  public jdk.vm.ci.meta.JavaConstant readArrayElement(jdk.vm.ci.meta.JavaConstant, int);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;I)Ljdk/vm/ci/meta/JavaConstant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.meta.JavaConstant array
        start local 2 // int index
         0: .line 89
            aload 1 /* array */
            ifnull 1
            aload 1 /* array */
            invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            if_acmpne 1
            aload 1 /* array */
            invokeinterface jdk.vm.ci.meta.JavaConstant.isNull:()Z
            ifeq 2
         1: .line 90
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 92
      StackMap locals:
      StackMap stack:
            aload 1 /* array */
            checkcast jdk.vm.ci.hotspot.HotSpotObjectConstantImpl
            invokevirtual jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.object:()Ljava/lang/Object;
            astore 3 /* a */
        start local 3 // java.lang.Object a
         3: .line 94
            aload 3 /* a */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.isArray:()Z
            ifeq 4
            iload 2 /* index */
            iflt 4
            iload 2 /* index */
            aload 3 /* a */
            invokestatic java.lang.reflect.Array.getLength:(Ljava/lang/Object;)I
            if_icmplt 5
         4: .line 95
      StackMap locals: java.lang.Object
      StackMap stack:
            aconst_null
            areturn
         5: .line 98
      StackMap locals:
      StackMap stack:
            aload 3 /* a */
            instanceof java.lang.Object[]
            ifeq 8
         6: .line 99
            aload 3 /* a */
            checkcast java.lang.Object[]
            iload 2 /* index */
            aaload
            astore 4 /* element */
        start local 4 // java.lang.Object element
         7: .line 100
            aload 4 /* element */
            invokestatic jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.forObject:(Ljava/lang/Object;)Ljdk/vm/ci/meta/JavaConstant;
            areturn
        end local 4 // java.lang.Object element
         8: .line 102
      StackMap locals:
      StackMap stack:
            aload 3 /* a */
            iload 2 /* index */
            invokestatic java.lang.reflect.Array.get:(Ljava/lang/Object;I)Ljava/lang/Object;
            invokestatic jdk.vm.ci.meta.JavaConstant.forBoxedPrimitive:(Ljava/lang/Object;)Ljdk/vm/ci/meta/PrimitiveConstant;
            areturn
        end local 3 // java.lang.Object a
        end local 2 // int index
        end local 1 // jdk.vm.ci.meta.JavaConstant array
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    9     1    array  Ljdk/vm/ci/meta/JavaConstant;
            0    9     2    index  I
            3    9     3        a  Ljava/lang/Object;
            7    8     4  element  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      array  
      index  

  private static boolean isBoxCached(jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // jdk.vm.ci.meta.JavaConstant source
         0: .line 114
            invokestatic jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:()[I
            aload 0 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iaload
            tableswitch { // 1 - 8
                    1: 1
                    2: 4
                    3: 4
                    4: 2
                    5: 4
                    6: 8
                    7: 6
                    8: 8
              default: 9
          }
         1: .line 116
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
         2: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
            bipush 127
            if_icmpgt 3
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
         4: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
            bipush -128
            if_icmplt 5
            aload 0 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asInt:()I
            bipush 127
            if_icmpgt 5
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
         6: .line 124
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
            ldc -128
            lcmp
            iflt 7
            aload 0 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asLong:()J
            ldc 127
            lcmp
            ifgt 7
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         7: iconst_0
            ireturn
         8: .line 127
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         9: .line 129
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "unexpected kind "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // jdk.vm.ci.meta.JavaConstant source
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0  source  Ljdk/vm/ci/meta/JavaConstant;
    MethodParameters:
        Name  Flags
      source  

  public jdk.vm.ci.meta.JavaConstant boxPrimitive(jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;)Ljdk/vm/ci/meta/JavaConstant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.meta.JavaConstant source
         0: .line 135
            aload 1 /* source */
            ifnull 1
            aload 1 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.isPrimitive:()Z
            ifeq 1
            aload 1 /* source */
            invokestatic jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.isBoxCached:(Ljdk/vm/ci/meta/JavaConstant;)Z
            ifne 2
         1: .line 136
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 138
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.asBoxedPrimitive:()Ljava/lang/Object;
            invokestatic jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.forObject:(Ljava/lang/Object;)Ljdk/vm/ci/meta/JavaConstant;
            areturn
        end local 1 // jdk.vm.ci.meta.JavaConstant source
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    3     1  source  Ljdk/vm/ci/meta/JavaConstant;
    MethodParameters:
        Name  Flags
      source  

  public jdk.vm.ci.meta.JavaConstant unboxPrimitive(jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/JavaConstant;)Ljdk/vm/ci/meta/JavaConstant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.meta.JavaConstant source
         0: .line 143
            aload 1 /* source */
            ifnull 1
            aload 1 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.getJavaKind:()Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.isObject:()Z
            ifne 2
         1: .line 144
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 146
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            invokeinterface jdk.vm.ci.meta.JavaConstant.isNull:()Z
            ifeq 4
         3: .line 147
            aconst_null
            areturn
         4: .line 149
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            checkcast jdk.vm.ci.hotspot.HotSpotObjectConstantImpl
            invokevirtual jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.object:()Ljava/lang/Object;
            invokestatic jdk.vm.ci.meta.JavaConstant.forBoxedPrimitive:(Ljava/lang/Object;)Ljdk/vm/ci/meta/PrimitiveConstant;
            areturn
        end local 1 // jdk.vm.ci.meta.JavaConstant source
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    5     1  source  Ljdk/vm/ci/meta/JavaConstant;
    MethodParameters:
        Name  Flags
      source  

  public jdk.vm.ci.meta.JavaConstant forString(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljdk/vm/ci/meta/JavaConstant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // java.lang.String value
         0: .line 154
            aload 1 /* value */
            invokestatic jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.forObject:(Ljava/lang/Object;)Ljdk/vm/ci/meta/JavaConstant;
            areturn
        end local 1 // java.lang.String value
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    1     1  value  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      value  

  public jdk.vm.ci.meta.JavaConstant forObject(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Ljdk/vm/ci/meta/JavaConstant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // java.lang.Object value
         0: .line 158
            aload 1 /* value */
            invokestatic jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.forObject:(Ljava/lang/Object;)Ljdk/vm/ci/meta/JavaConstant;
            areturn
        end local 1 // java.lang.Object value
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    1     1  value  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      value  

  public jdk.vm.ci.meta.ResolvedJavaType asJavaType(jdk.vm.ci.meta.Constant);
    descriptor: (Ljdk/vm/ci/meta/Constant;)Ljdk/vm/ci/meta/ResolvedJavaType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.meta.Constant constant
         0: .line 163
            aload 1 /* constant */
            instanceof jdk.vm.ci.hotspot.HotSpotObjectConstant
            ifeq 4
         1: .line 164
            aload 1 /* constant */
            checkcast jdk.vm.ci.hotspot.HotSpotObjectConstantImpl
            invokevirtual jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.object:()Ljava/lang/Object;
            astore 2 /* obj */
        start local 2 // java.lang.Object obj
         2: .line 165
            aload 2 /* obj */
            instanceof java.lang.Class
            ifeq 4
         3: .line 166
            aload 0 /* this */
            getfield jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.runtime:Ljdk/vm/ci/hotspot/HotSpotJVMCIRuntime;
            invokevirtual jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.getHostJVMCIBackend:()Ljdk/vm/ci/runtime/JVMCIBackend;
            invokevirtual jdk.vm.ci.runtime.JVMCIBackend.getMetaAccess:()Ljdk/vm/ci/meta/MetaAccessProvider;
            aload 2 /* obj */
            checkcast java.lang.Class
            invokeinterface jdk.vm.ci.meta.MetaAccessProvider.lookupJavaType:(Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaType;
            areturn
        end local 2 // java.lang.Object obj
         4: .line 169
      StackMap locals:
      StackMap stack:
            aload 1 /* constant */
            instanceof jdk.vm.ci.hotspot.HotSpotMetaspaceConstant
            ifeq 8
         5: .line 170
            aload 1 /* constant */
            invokestatic jdk.vm.ci.hotspot.HotSpotMetaspaceConstantImpl.getMetaspaceObject:(Ljdk/vm/ci/meta/Constant;)Ljdk/vm/ci/hotspot/MetaspaceWrapperObject;
            astore 2 /* obj */
        start local 2 // jdk.vm.ci.hotspot.MetaspaceWrapperObject obj
         6: .line 171
            aload 2 /* obj */
            instanceof jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl
            ifeq 8
         7: .line 172
            aload 2 /* obj */
            checkcast jdk.vm.ci.meta.ResolvedJavaType
            areturn
        end local 2 // jdk.vm.ci.hotspot.MetaspaceWrapperObject obj
         8: .line 175
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // jdk.vm.ci.meta.Constant constant
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    9     1  constant  Ljdk/vm/ci/meta/Constant;
            2    4     2       obj  Ljava/lang/Object;
            6    8     2       obj  Ljdk/vm/ci/hotspot/MetaspaceWrapperObject;
    MethodParameters:
          Name  Flags
      constant  

  public jdk.vm.ci.meta.JavaConstant readFieldValue(jdk.vm.ci.meta.ResolvedJavaField, jdk.vm.ci.meta.JavaConstant);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaField;Ljdk/vm/ci/meta/JavaConstant;)Ljdk/vm/ci/meta/JavaConstant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaField field
        start local 2 // jdk.vm.ci.meta.JavaConstant receiver
         0: .line 180
            aload 1 /* field */
            checkcast jdk.vm.ci.hotspot.HotSpotResolvedJavaField
            astore 3 /* hotspotField */
        start local 3 // jdk.vm.ci.hotspot.HotSpotResolvedJavaField hotspotField
         1: .line 181
            aload 3 /* hotspotField */
            invokeinterface jdk.vm.ci.hotspot.HotSpotResolvedJavaField.isStatic:()Z
            ifeq 5
         2: .line 182
            aload 3 /* hotspotField */
            invokeinterface jdk.vm.ci.hotspot.HotSpotResolvedJavaField.getDeclaringClass:()Ljdk/vm/ci/meta/ResolvedJavaType;
            checkcast jdk.vm.ci.hotspot.HotSpotResolvedJavaType
            astore 4 /* holder */
        start local 4 // jdk.vm.ci.hotspot.HotSpotResolvedJavaType holder
         3: .line 183
            aload 4 /* holder */
            invokevirtual jdk.vm.ci.hotspot.HotSpotResolvedJavaType.isInitialized:()Z
            ifeq 9
         4: .line 184
            aload 0 /* this */
            getfield jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.memoryAccess:Ljdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl;
            aload 3 /* hotspotField */
            aload 4 /* holder */
            invokevirtual jdk.vm.ci.hotspot.HotSpotResolvedJavaType.mirror:()Ljava/lang/Class;
            aload 1 /* field */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaField.isVolatile:()Z
            invokevirtual jdk.vm.ci.hotspot.HotSpotMemoryAccessProviderImpl.readFieldValue:(Ljdk/vm/ci/hotspot/HotSpotResolvedJavaField;Ljava/lang/Object;Z)Ljdk/vm/ci/meta/JavaConstant;
            areturn
        end local 4 // jdk.vm.ci.hotspot.HotSpotResolvedJavaType holder
         5: .line 187
      StackMap locals: jdk.vm.ci.hotspot.HotSpotResolvedJavaField
      StackMap stack:
            aload 2 /* receiver */
            invokeinterface jdk.vm.ci.meta.JavaConstant.isNonNull:()Z
            ifeq 9
         6: .line 188
            aload 2 /* receiver */
            checkcast jdk.vm.ci.hotspot.HotSpotObjectConstantImpl
            invokevirtual jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.object:()Ljava/lang/Object;
            astore 4 /* object */
        start local 4 // java.lang.Object object
         7: .line 189
            aload 3 /* hotspotField */
            aload 2 /* receiver */
            invokeinterface jdk.vm.ci.hotspot.HotSpotResolvedJavaField.isInObject:(Ljdk/vm/ci/meta/JavaConstant;)Z
            ifeq 9
         8: .line 190
            aload 0 /* this */
            getfield jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.memoryAccess:Ljdk/vm/ci/hotspot/HotSpotMemoryAccessProviderImpl;
            aload 3 /* hotspotField */
            aload 4 /* object */
            aload 1 /* field */
            invokeinterface jdk.vm.ci.meta.ResolvedJavaField.isVolatile:()Z
            invokevirtual jdk.vm.ci.hotspot.HotSpotMemoryAccessProviderImpl.readFieldValue:(Ljdk/vm/ci/hotspot/HotSpotResolvedJavaField;Ljava/lang/Object;Z)Ljdk/vm/ci/meta/JavaConstant;
            areturn
        end local 4 // java.lang.Object object
         9: .line 194
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 3 // jdk.vm.ci.hotspot.HotSpotResolvedJavaField hotspotField
        end local 2 // jdk.vm.ci.meta.JavaConstant receiver
        end local 1 // jdk.vm.ci.meta.ResolvedJavaField field
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0   10     1         field  Ljdk/vm/ci/meta/ResolvedJavaField;
            0   10     2      receiver  Ljdk/vm/ci/meta/JavaConstant;
            1   10     3  hotspotField  Ljdk/vm/ci/hotspot/HotSpotResolvedJavaField;
            3    5     4        holder  Ljdk/vm/ci/hotspot/HotSpotResolvedJavaType;
            7    9     4        object  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      field     
      receiver  

  public jdk.vm.ci.meta.JavaConstant asJavaClass(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/JavaConstant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType type
         0: .line 199
            aload 1 /* type */
            checkcast jdk.vm.ci.hotspot.HotSpotResolvedJavaType
            invokevirtual jdk.vm.ci.hotspot.HotSpotResolvedJavaType.mirror:()Ljava/lang/Class;
            invokestatic jdk.vm.ci.hotspot.HotSpotObjectConstantImpl.forObject:(Ljava/lang/Object;)Ljdk/vm/ci/meta/JavaConstant;
            areturn
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType type
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    1     1  type  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
      Name  Flags
      type  

  public jdk.vm.ci.meta.Constant asObjectHub(jdk.vm.ci.meta.ResolvedJavaType);
    descriptor: (Ljdk/vm/ci/meta/ResolvedJavaType;)Ljdk/vm/ci/meta/Constant;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
        start local 1 // jdk.vm.ci.meta.ResolvedJavaType type
         0: .line 204
            aload 1 /* type */
            instanceof jdk.vm.ci.hotspot.HotSpotResolvedObjectType
            ifeq 2
         1: .line 205
            aload 1 /* type */
            checkcast jdk.vm.ci.hotspot.HotSpotResolvedObjectType
            invokeinterface jdk.vm.ci.hotspot.HotSpotResolvedObjectType.klass:()Ljdk/vm/ci/meta/Constant;
            areturn
         2: .line 207
      StackMap locals:
      StackMap stack:
            invokestatic jdk.vm.ci.common.JVMCIError.unimplemented:()Ljava/lang/RuntimeException;
            athrow
        end local 1 // jdk.vm.ci.meta.ResolvedJavaType type
        end local 0 // jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljdk/vm/ci/hotspot/HotSpotConstantReflectionProvider;
            0    3     1  type  Ljdk/vm/ci/meta/ResolvedJavaType;
    MethodParameters:
      Name  Flags
      type  

  static int[] $SWITCH_TABLE$jdk$vm$ci$meta$JavaKind();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 41
            getstatic jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic jdk.vm.ci.meta.JavaKind.values:()[Ljdk/vm/ci/meta/JavaKind;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Boolean:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_1
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Byte:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Char:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_4
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Double:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 8
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Float:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 6
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Illegal:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 11
            iastore
        18: goto 20
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        19: pop
      StackMap locals:
      StackMap stack:
        20: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Int:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_5
            iastore
        21: goto 23
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        22: pop
      StackMap locals:
      StackMap stack:
        23: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Long:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 7
            iastore
        24: goto 26
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        25: pop
      StackMap locals:
      StackMap stack:
        26: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Object:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 9
            iastore
        27: goto 29
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        28: pop
      StackMap locals:
      StackMap stack:
        29: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Short:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            iconst_3
            iastore
        30: goto 32
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        31: pop
      StackMap locals:
      StackMap stack:
        32: aload 0
            getstatic jdk.vm.ci.meta.JavaKind.Void:Ljdk/vm/ci/meta/JavaKind;
            invokevirtual jdk.vm.ci.meta.JavaKind.ordinal:()I
            bipush 10
            iastore
        33: goto 35
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        34: pop
      StackMap locals:
      StackMap stack:
        35: aload 0
            dup
            putstatic jdk.vm.ci.hotspot.HotSpotConstantReflectionProvider.$SWITCH_TABLE$jdk$vm$ci$meta$JavaKind:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
          17    18      19  Class java.lang.NoSuchFieldError
          20    21      22  Class java.lang.NoSuchFieldError
          23    24      25  Class java.lang.NoSuchFieldError
          26    27      28  Class java.lang.NoSuchFieldError
          29    30      31  Class java.lang.NoSuchFieldError
          32    33      34  Class java.lang.NoSuchFieldError
}
SourceFile: "HotSpotConstantReflectionProvider.java"