public class org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest extends org.graalvm.compiler.replacements.test.MethodSubstitutionTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest
  super_class: org.graalvm.compiler.replacements.test.MethodSubstitutionTest
{
  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 38
            ldc Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;
            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 org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
         0: .line 38
            aload 0 /* this */
            invokespecial org.graalvm.compiler.replacements.test.MethodSubstitutionTest.<init>:()V
            return
        end local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;

  public void testSubstitution(java.lang.String, java.lang.Class<?>, java.lang.String, java.lang.Class<?>[], , [], []);
    descriptor: (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Object;[Ljava/lang/Object;[Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=13, args_size=8
        start local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
        start local 1 // java.lang.String testMethodName
        start local 2 // java.lang.Class holder
        start local 3 // java.lang.String methodName
        start local 4 // java.lang.Class[] parameterTypes
        start local 5 // java.lang.Object receiver
        start local 6 // java.lang.Object[] args1
        start local 7 // java.lang.Object[] args2
         0: .line 41
            aload 0 /* this */
            aload 1 /* testMethodName */
            invokevirtual org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.getResolvedJavaMethod:(Ljava/lang/String;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 8 /* testMethod */
        start local 8 // jdk.vm.ci.meta.ResolvedJavaMethod testMethod
         1: .line 42
            aload 0 /* this */
            aload 2 /* holder */
            aload 3 /* methodName */
            aload 4 /* parameterTypes */
            invokevirtual org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.getResolvedJavaMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljdk/vm/ci/meta/ResolvedJavaMethod;
            astore 9 /* originalMethod */
        start local 9 // jdk.vm.ci.meta.ResolvedJavaMethod originalMethod
         2: .line 45
            aload 0 /* this */
            aload 8 /* testMethod */
            invokevirtual org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.getCode:(Ljdk/vm/ci/meta/ResolvedJavaMethod;)Ljdk/vm/ci/code/InstalledCode;
            astore 10 /* code */
        start local 10 // jdk.vm.ci.code.InstalledCode code
         3: .line 46
            getstatic org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.$assertionsDisabled:Z
            ifne 4
            aload 10 /* code */
            ifnonnull 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 49
      StackMap locals: jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.meta.ResolvedJavaMethod jdk.vm.ci.code.InstalledCode
      StackMap stack:
            aload 0 /* this */
            aload 9 /* originalMethod */
            aload 5 /* receiver */
            aload 6 /* args1 */
            invokevirtual org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.invokeSafe:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 11 /* expected */
        start local 11 // java.lang.Object expected
         5: .line 50
            aload 0 /* this */
            aload 8 /* testMethod */
            aconst_null
            aload 7 /* args2 */
            invokevirtual org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.invokeSafe:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 12 /* actual */
        start local 12 // java.lang.Object actual
         6: .line 51
            aload 0 /* this */
            aload 11 /* expected */
            aload 12 /* actual */
            invokevirtual org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.assertDeepEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 54
            aload 0 /* this */
            aload 9 /* originalMethod */
            aload 5 /* receiver */
            aload 6 /* args1 */
            invokevirtual org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.invokeSafe:(Ljdk/vm/ci/meta/ResolvedJavaMethod;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 11 /* expected */
         8: .line 55
            aload 10 /* code */
            aload 7 /* args2 */
            invokestatic org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.executeVarargsSafe:(Ljdk/vm/ci/code/InstalledCode;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 12 /* actual */
         9: .line 56
            aload 0 /* this */
            aload 11 /* expected */
            aload 12 /* actual */
            invokevirtual org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.assertDeepEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        10: .line 58
            return
        end local 12 // java.lang.Object actual
        end local 11 // java.lang.Object expected
        end local 10 // jdk.vm.ci.code.InstalledCode code
        end local 9 // jdk.vm.ci.meta.ResolvedJavaMethod originalMethod
        end local 8 // jdk.vm.ci.meta.ResolvedJavaMethod testMethod
        end local 7 // java.lang.Object[] args2
        end local 6 // java.lang.Object[] args1
        end local 5 // java.lang.Object receiver
        end local 4 // java.lang.Class[] parameterTypes
        end local 3 // java.lang.String methodName
        end local 2 // java.lang.Class holder
        end local 1 // java.lang.String testMethodName
        end local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;
            0   11     1  testMethodName  Ljava/lang/String;
            0   11     2          holder  Ljava/lang/Class<*>;
            0   11     3      methodName  Ljava/lang/String;
            0   11     4  parameterTypes  [Ljava/lang/Class;
            0   11     5        receiver  Ljava/lang/Object;
            0   11     6           args1  [Ljava/lang/Object;
            0   11     7           args2  [Ljava/lang/Object;
            1   11     8      testMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            2   11     9  originalMethod  Ljdk/vm/ci/meta/ResolvedJavaMethod;
            3   11    10            code  Ljdk/vm/ci/code/InstalledCode;
            5   11    11        expected  Ljava/lang/Object;
            6   11    12          actual  Ljava/lang/Object;
    Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class<*>;Ljava/lang/Object;[Ljava/lang/Object;[Ljava/lang/Object;)V
    MethodParameters:
                Name  Flags
      testMethodName  
      holder          
      methodName      
      parameterTypes  
      receiver        
      args1           
      args2           

  static long off(java.lang.Object, java.lang.String);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;)J
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
         0: .line 64
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tAssert cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
      Name  Flags
      o     
      name  

  public void testUnsafeSubstitutions();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
         0: .line 81
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tTest cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeInvisibleAnnotations: 
      Test()

  private static long fooOffset(java.lang.String);
    descriptor: (Ljava/lang/String;)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String name
         0: .line 152
            getstatic org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.UNSAFE:Lsun/misc/Unsafe;
            ldc Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest$Foo;
            aload 0 /* name */
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
         1: lreturn
         2: .line 153
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
         3: .line 154
            new java.lang.AssertionError
            dup
            aload 1 /* e */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 1 // java.lang.Exception e
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  name  Ljava/lang/String;
            3    4     1     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NoSuchFieldException
           0     1       2  Class java.lang.SecurityException
    MethodParameters:
      Name  Flags
      name  

  public static boolean unsafeCompareAndSwapInt(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 160
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iconst_0
            iconst_1
            invokevirtual sun.misc.Unsafe.compareAndSwapInt:(Ljava/lang/Object;JII)Z
            ireturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static boolean unsafeCompareAndSwapLong(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 165
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            lconst_0
            lconst_1
            invokevirtual sun.misc.Unsafe.compareAndSwapLong:(Ljava/lang/Object;JJJ)Z
            ireturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static boolean unsafeCompareAndSwapObject(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 170
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            aconst_null
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            invokevirtual sun.misc.Unsafe.compareAndSwapObject:(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static boolean unsafeGetBoolean(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 175
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getBoolean:(Ljava/lang/Object;J)Z
            ifeq 1
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getBooleanVolatile:(Ljava/lang/Object;J)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  unsafe  Lsun/misc/Unsafe;
            0    2     1     obj  Ljava/lang/Object;
            0    2     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static int unsafeGetByte(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 180
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getByte:(Ljava/lang/Object;J)B
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getByteVolatile:(Ljava/lang/Object;J)B
            iadd
            ireturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static int unsafeGetShort(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 185
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getShort:(Ljava/lang/Object;J)S
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getShortVolatile:(Ljava/lang/Object;J)S
            iadd
            ireturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static int unsafeGetChar(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 190
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getChar:(Ljava/lang/Object;J)C
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getCharVolatile:(Ljava/lang/Object;J)C
            iadd
            ireturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static int unsafeGetInt(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 195
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getInt:(Ljava/lang/Object;J)I
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getIntVolatile:(Ljava/lang/Object;J)I
            iadd
            ireturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static long unsafeGetLong(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 200
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getLong:(Ljava/lang/Object;J)J
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getLongVolatile:(Ljava/lang/Object;J)J
            ladd
            lreturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static float unsafeGetFloat(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)F
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 205
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getFloat:(Ljava/lang/Object;J)F
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getFloatVolatile:(Ljava/lang/Object;J)F
            fadd
            freturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static double unsafeGetDouble(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 210
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getDouble:(Ljava/lang/Object;J)D
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getDoubleVolatile:(Ljava/lang/Object;J)D
            dadd
            dreturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1     obj  Ljava/lang/Object;
            0    1     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static boolean unsafeGetObject(sun.misc.Unsafe, java.lang.Object, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;J)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
         0: .line 215
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getObject:(Ljava/lang/Object;J)Ljava/lang/Object;
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getObjectVolatile:(Ljava/lang/Object;J)Ljava/lang/Object;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  unsafe  Lsun/misc/Unsafe;
            0    2     1     obj  Ljava/lang/Object;
            0    2     2  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  

  public static int unsafePutBoolean(sun.misc.Unsafe, java.lang.Object, long, boolean);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;JZ)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
        start local 4 // boolean value
         0: .line 220
            iconst_1
            istore 5 /* res */
        start local 5 // int res
         1: .line 221
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            invokevirtual sun.misc.Unsafe.putBoolean:(Ljava/lang/Object;JZ)V
         2: .line 222
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getBoolean:(Ljava/lang/Object;J)Z
            ifeq 3
            iconst_3
            goto 4
      StackMap locals: sun.misc.Unsafe java.lang.Object long int int
      StackMap stack: int
         3: iconst_5
      StackMap locals: sun.misc.Unsafe java.lang.Object long int int
      StackMap stack: int int
         4: iadd
            istore 5 /* res */
         5: .line 223
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            invokevirtual sun.misc.Unsafe.putBooleanVolatile:(Ljava/lang/Object;JZ)V
         6: .line 224
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getBoolean:(Ljava/lang/Object;J)Z
            ifeq 7
            bipush 7
            goto 8
      StackMap locals:
      StackMap stack: int
         7: bipush 11
      StackMap locals: sun.misc.Unsafe java.lang.Object long int int
      StackMap stack: int int
         8: iadd
            istore 5 /* res */
         9: .line 225
            iload 5 /* res */
            ireturn
        end local 5 // int res
        end local 4 // boolean value
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0  unsafe  Lsun/misc/Unsafe;
            0   10     1     obj  Ljava/lang/Object;
            0   10     2  offset  J
            0   10     4   value  Z
            1   10     5     res  I
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  
      value   

  public static int unsafePutByte(sun.misc.Unsafe, java.lang.Object, long, byte);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;JB)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
        start local 4 // byte value
         0: .line 230
            iconst_1
            istore 5 /* res */
        start local 5 // int res
         1: .line 231
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            iconst_1
            iadd
            i2b
            invokevirtual sun.misc.Unsafe.putByte:(Ljava/lang/Object;JB)V
         2: .line 232
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getByte:(Ljava/lang/Object;J)B
            iadd
            istore 5 /* res */
         3: .line 233
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            iconst_2
            iadd
            i2b
            invokevirtual sun.misc.Unsafe.putByteVolatile:(Ljava/lang/Object;JB)V
         4: .line 234
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getByte:(Ljava/lang/Object;J)B
            iadd
            istore 5 /* res */
         5: .line 235
            iload 5 /* res */
            ireturn
        end local 5 // int res
        end local 4 // byte value
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  unsafe  Lsun/misc/Unsafe;
            0    6     1     obj  Ljava/lang/Object;
            0    6     2  offset  J
            0    6     4   value  B
            1    6     5     res  I
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  
      value   

  public static int unsafePutShort(sun.misc.Unsafe, java.lang.Object, long, short);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;JS)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
        start local 4 // short value
         0: .line 240
            iconst_1
            istore 5 /* res */
        start local 5 // int res
         1: .line 241
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            iconst_1
            iadd
            i2s
            invokevirtual sun.misc.Unsafe.putShort:(Ljava/lang/Object;JS)V
         2: .line 242
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getShort:(Ljava/lang/Object;J)S
            iadd
            istore 5 /* res */
         3: .line 243
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            iconst_2
            iadd
            i2s
            invokevirtual sun.misc.Unsafe.putShortVolatile:(Ljava/lang/Object;JS)V
         4: .line 244
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getShort:(Ljava/lang/Object;J)S
            iadd
            istore 5 /* res */
         5: .line 245
            iload 5 /* res */
            ireturn
        end local 5 // int res
        end local 4 // short value
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  unsafe  Lsun/misc/Unsafe;
            0    6     1     obj  Ljava/lang/Object;
            0    6     2  offset  J
            0    6     4   value  S
            1    6     5     res  I
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  
      value   

  public static int unsafePutChar(sun.misc.Unsafe, java.lang.Object, long, char);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;JC)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
        start local 4 // char value
         0: .line 250
            iconst_1
            istore 5 /* res */
        start local 5 // int res
         1: .line 251
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            iconst_1
            iadd
            i2c
            invokevirtual sun.misc.Unsafe.putChar:(Ljava/lang/Object;JC)V
         2: .line 252
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getChar:(Ljava/lang/Object;J)C
            iadd
            istore 5 /* res */
         3: .line 253
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            iconst_2
            iadd
            i2c
            invokevirtual sun.misc.Unsafe.putCharVolatile:(Ljava/lang/Object;JC)V
         4: .line 254
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getChar:(Ljava/lang/Object;J)C
            iadd
            istore 5 /* res */
         5: .line 255
            iload 5 /* res */
            ireturn
        end local 5 // int res
        end local 4 // char value
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  unsafe  Lsun/misc/Unsafe;
            0    6     1     obj  Ljava/lang/Object;
            0    6     2  offset  J
            0    6     4   value  C
            1    6     5     res  I
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  
      value   

  public static int unsafePutInt(sun.misc.Unsafe, java.lang.Object, long, int);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;JI)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
        start local 4 // int value
         0: .line 260
            iconst_1
            istore 5 /* res */
        start local 5 // int res
         1: .line 261
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            invokevirtual sun.misc.Unsafe.putInt:(Ljava/lang/Object;JI)V
         2: .line 262
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getInt:(Ljava/lang/Object;J)I
            iadd
            istore 5 /* res */
         3: .line 263
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            iconst_1
            iadd
            invokevirtual sun.misc.Unsafe.putIntVolatile:(Ljava/lang/Object;JI)V
         4: .line 264
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getInt:(Ljava/lang/Object;J)I
            iadd
            istore 5 /* res */
         5: .line 265
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            iload 4 /* value */
            iconst_2
            iadd
            invokevirtual sun.misc.Unsafe.putOrderedInt:(Ljava/lang/Object;JI)V
         6: .line 266
            iload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getInt:(Ljava/lang/Object;J)I
            iadd
            istore 5 /* res */
         7: .line 267
            iload 5 /* res */
            ireturn
        end local 5 // int res
        end local 4 // int value
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0  unsafe  Lsun/misc/Unsafe;
            0    8     1     obj  Ljava/lang/Object;
            0    8     2  offset  J
            0    8     4   value  I
            1    8     5     res  I
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  
      value   

  public static long unsafePutLong(sun.misc.Unsafe, java.lang.Object, long, long);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;JJ)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=8, args_size=4
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
        start local 4 // long value
         0: .line 272
            lconst_1
            lstore 6 /* res */
        start local 6 // long res
         1: .line 273
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            lload 4 /* value */
            lconst_1
            ladd
            invokevirtual sun.misc.Unsafe.putLong:(Ljava/lang/Object;JJ)V
         2: .line 274
            lload 6 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getLong:(Ljava/lang/Object;J)J
            ladd
            lstore 6 /* res */
         3: .line 275
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            lload 4 /* value */
            ldc 2
            ladd
            invokevirtual sun.misc.Unsafe.putLongVolatile:(Ljava/lang/Object;JJ)V
         4: .line 276
            lload 6 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getLong:(Ljava/lang/Object;J)J
            ladd
            lstore 6 /* res */
         5: .line 277
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            lload 4 /* value */
            ldc 3
            ladd
            invokevirtual sun.misc.Unsafe.putOrderedLong:(Ljava/lang/Object;JJ)V
         6: .line 278
            lload 6 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getLong:(Ljava/lang/Object;J)J
            ladd
            lstore 6 /* res */
         7: .line 279
            lload 6 /* res */
            lreturn
        end local 6 // long res
        end local 4 // long value
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0  unsafe  Lsun/misc/Unsafe;
            0    8     1     obj  Ljava/lang/Object;
            0    8     2  offset  J
            0    8     4   value  J
            1    8     6     res  J
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  
      value   

  public static float unsafePutFloat(sun.misc.Unsafe, java.lang.Object, long, float);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;JF)F
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
        start local 4 // float value
         0: .line 284
            fconst_1
            fstore 5 /* res */
        start local 5 // float res
         1: .line 285
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            fload 4 /* value */
            fconst_1
            fadd
            invokevirtual sun.misc.Unsafe.putFloat:(Ljava/lang/Object;JF)V
         2: .line 286
            fload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getFloat:(Ljava/lang/Object;J)F
            fadd
            fstore 5 /* res */
         3: .line 287
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            fload 4 /* value */
            fconst_2
            fadd
            invokevirtual sun.misc.Unsafe.putFloatVolatile:(Ljava/lang/Object;JF)V
         4: .line 288
            fload 5 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getFloat:(Ljava/lang/Object;J)F
            fadd
            fstore 5 /* res */
         5: .line 289
            fload 5 /* res */
            freturn
        end local 5 // float res
        end local 4 // float value
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  unsafe  Lsun/misc/Unsafe;
            0    6     1     obj  Ljava/lang/Object;
            0    6     2  offset  J
            0    6     4   value  F
            1    6     5     res  F
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  
      value   

  public static double unsafePutDouble(sun.misc.Unsafe, java.lang.Object, long, double);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;JD)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
        start local 4 // double value
         0: .line 294
            dconst_1
            dstore 6 /* res */
        start local 6 // double res
         1: .line 295
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            dload 4 /* value */
            invokevirtual sun.misc.Unsafe.putDouble:(Ljava/lang/Object;JD)V
         2: .line 296
            dload 6 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getDouble:(Ljava/lang/Object;J)D
            dadd
            dstore 6 /* res */
         3: .line 297
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            dload 4 /* value */
            invokevirtual sun.misc.Unsafe.putDoubleVolatile:(Ljava/lang/Object;JD)V
         4: .line 298
            dload 6 /* res */
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getDouble:(Ljava/lang/Object;J)D
            dadd
            dstore 6 /* res */
         5: .line 299
            dload 6 /* res */
            dreturn
        end local 6 // double res
        end local 4 // double value
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0  unsafe  Lsun/misc/Unsafe;
            0    6     1     obj  Ljava/lang/Object;
            0    6     2  offset  J
            0    6     4   value  D
            1    6     6     res  D
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  
      value   

  public static java.lang.Object[] unsafePutObject(sun.misc.Unsafe, java.lang.Object, long, java.lang.Object, java.lang.Object, java.lang.Object);
    descriptor: (Lsun/misc/Unsafe;Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=6
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // java.lang.Object obj
        start local 2 // long offset
        start local 4 // java.lang.Object value1
        start local 5 // java.lang.Object value2
        start local 6 // java.lang.Object value3
         0: .line 304
            iconst_3
            anewarray java.lang.Object
            astore 7 /* res */
        start local 7 // java.lang.Object[] res
         1: .line 305
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            aload 4 /* value1 */
            invokevirtual sun.misc.Unsafe.putObject:(Ljava/lang/Object;JLjava/lang/Object;)V
         2: .line 306
            aload 7 /* res */
            iconst_0
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getObject:(Ljava/lang/Object;J)Ljava/lang/Object;
            aastore
         3: .line 307
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            aload 5 /* value2 */
            invokevirtual sun.misc.Unsafe.putObjectVolatile:(Ljava/lang/Object;JLjava/lang/Object;)V
         4: .line 308
            aload 7 /* res */
            iconst_1
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getObject:(Ljava/lang/Object;J)Ljava/lang/Object;
            aastore
         5: .line 309
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            aload 6 /* value3 */
            invokevirtual sun.misc.Unsafe.putOrderedObject:(Ljava/lang/Object;JLjava/lang/Object;)V
         6: .line 310
            aload 7 /* res */
            iconst_2
            aload 0 /* unsafe */
            aload 1 /* obj */
            lload 2 /* offset */
            invokevirtual sun.misc.Unsafe.getObject:(Ljava/lang/Object;J)Ljava/lang/Object;
            aastore
         7: .line 311
            aload 7 /* res */
            areturn
        end local 7 // java.lang.Object[] res
        end local 6 // java.lang.Object value3
        end local 5 // java.lang.Object value2
        end local 4 // java.lang.Object value1
        end local 2 // long offset
        end local 1 // java.lang.Object obj
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0  unsafe  Lsun/misc/Unsafe;
            0    8     1     obj  Ljava/lang/Object;
            0    8     2  offset  J
            0    8     4  value1  Ljava/lang/Object;
            0    8     5  value2  Ljava/lang/Object;
            0    8     6  value3  Ljava/lang/Object;
            1    8     7     res  [Ljava/lang/Object;
    MethodParameters:
        Name  Flags
      unsafe  
      obj     
      offset  
      value1  
      value2  
      value3  

  public static long unsafeGetAddress(sun.misc.Unsafe, long);
    descriptor: (Lsun/misc/Unsafe;J)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // long offset
         0: .line 316
            aload 0 /* unsafe */
            lload 1 /* offset */
            invokevirtual sun.misc.Unsafe.getAddress:(J)J
            lreturn
        end local 1 // long offset
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
            0    1     1  offset  J
    MethodParameters:
        Name  Flags
      unsafe  
      offset  

  public static long unsafePutAddress(sun.misc.Unsafe, long, long);
    descriptor: (Lsun/misc/Unsafe;JJ)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // long offset
        start local 3 // long value
         0: .line 321
            lconst_1
            lstore 5 /* res */
        start local 5 // long res
         1: .line 322
            aload 0 /* unsafe */
            lload 1 /* offset */
            lload 3 /* value */
            invokevirtual sun.misc.Unsafe.putAddress:(JJ)V
         2: .line 323
            lload 5 /* res */
            aload 0 /* unsafe */
            lload 1 /* offset */
            invokevirtual sun.misc.Unsafe.getAddress:(J)J
            ladd
            lstore 5 /* res */
         3: .line 324
            lload 5 /* res */
            lreturn
        end local 5 // long res
        end local 3 // long value
        end local 1 // long offset
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0  unsafe  Lsun/misc/Unsafe;
            0    4     1  offset  J
            0    4     3   value  J
            1    4     5     res  J
    MethodParameters:
        Name  Flags
      unsafe  
      offset  
      value   

  public static double unsafeDirectMemoryRead(sun.misc.Unsafe, long);
    descriptor: (Lsun/misc/Unsafe;J)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // long address
         0: .line 331
            aload 0 /* unsafe */
            lload 1 /* address */
            invokevirtual sun.misc.Unsafe.getByte:(J)B
         1: .line 332
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 8
            ladd
            invokevirtual sun.misc.Unsafe.getShort:(J)S
         2: .line 331
            iadd
         3: .line 333
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 16
            ladd
            invokevirtual sun.misc.Unsafe.getChar:(J)C
         4: .line 331
            iadd
         5: .line 334
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 24
            ladd
            invokevirtual sun.misc.Unsafe.getInt:(J)I
         6: .line 331
            iadd
            i2l
         7: .line 335
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 32
            ladd
            invokevirtual sun.misc.Unsafe.getLong:(J)J
         8: .line 331
            ladd
            l2f
         9: .line 336
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 40
            ladd
            invokevirtual sun.misc.Unsafe.getFloat:(J)F
        10: .line 331
            fadd
            f2d
        11: .line 337
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 48
            ladd
            invokevirtual sun.misc.Unsafe.getDouble:(J)D
        12: .line 331
            dadd
            dreturn
        end local 1 // long address
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0   unsafe  Lsun/misc/Unsafe;
            0   13     1  address  J
    MethodParameters:
         Name  Flags
      unsafe   
      address  

  public static double unsafeDirectMemoryWrite(sun.misc.Unsafe, long, long);
    descriptor: (Lsun/misc/Unsafe;JJ)D
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // sun.misc.Unsafe unsafe
        start local 1 // long address
        start local 3 // long value
         0: .line 344
            aload 0 /* unsafe */
            lload 1 /* address */
            lconst_0
            ladd
            lload 3 /* value */
            l2i
            i2b
            invokevirtual sun.misc.Unsafe.putByte:(JB)V
         1: .line 345
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 8
            ladd
            lload 3 /* value */
            l2i
            i2s
            invokevirtual sun.misc.Unsafe.putShort:(JS)V
         2: .line 346
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 16
            ladd
            lload 3 /* value */
            l2i
            i2c
            invokevirtual sun.misc.Unsafe.putChar:(JC)V
         3: .line 347
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 24
            ladd
            lload 3 /* value */
            l2i
            invokevirtual sun.misc.Unsafe.putInt:(JI)V
         4: .line 348
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 32
            ladd
            lload 3 /* value */
            invokevirtual sun.misc.Unsafe.putLong:(JJ)V
         5: .line 349
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 40
            ladd
            lload 3 /* value */
            l2f
            invokevirtual sun.misc.Unsafe.putFloat:(JF)V
         6: .line 350
            aload 0 /* unsafe */
            lload 1 /* address */
            ldc 48
            ladd
            lload 3 /* value */
            l2d
            invokevirtual sun.misc.Unsafe.putDouble:(JD)V
         7: .line 351
            aload 0 /* unsafe */
            lload 1 /* address */
            invokestatic org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.unsafeDirectMemoryRead:(Lsun/misc/Unsafe;J)D
            dreturn
        end local 3 // long value
        end local 1 // long address
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0   unsafe  Lsun/misc/Unsafe;
            0    8     1  address  J
            0    8     3    value  J
    MethodParameters:
         Name  Flags
      unsafe   
      address  
      value    

  public static java.lang.String unsafeAllocateInstance(sun.misc.Unsafe);
    descriptor: (Lsun/misc/Unsafe;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.misc.Unsafe unsafe
         0: .line 373
            aload 0 /* unsafe */
            ldc Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest$MyObject;
            invokevirtual sun.misc.Unsafe.allocateInstance:(Ljava/lang/Class;)Ljava/lang/Object;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            areturn
        end local 0 // sun.misc.Unsafe unsafe
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  unsafe  Lsun/misc/Unsafe;
    Exceptions:
      throws java.lang.InstantiationException
    MethodParameters:
        Name  Flags
      unsafe  

  public void testAllocateInstance();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
         0: .line 376
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tTest cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeInvisibleAnnotations: 
      Test()

  public void testGetAndAddInt();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
         0: .line 383
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tTest cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeInvisibleAnnotations: 
      Test()

  public static int getAndAddInt(java.lang.Object, long, int);
    descriptor: (Ljava/lang/Object;JI)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // java.lang.Object obj
        start local 1 // long offset
        start local 3 // int delta
         0: .line 397
            getstatic org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* obj */
            lload 1 /* offset */
            iload 3 /* delta */
            invokevirtual sun.misc.Unsafe.getAndAddInt:(Ljava/lang/Object;JI)I
            ireturn
        end local 3 // int delta
        end local 1 // long offset
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0     obj  Ljava/lang/Object;
            0    1     1  offset  J
            0    1     3   delta  I
    MethodParameters:
        Name  Flags
      obj     
      offset  
      delta   

  public void testGetAndAddLong();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
         0: .line 400
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tTest cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeInvisibleAnnotations: 
      Test()

  public static long getAndAddLong(java.lang.Object, long, long);
    descriptor: (Ljava/lang/Object;JJ)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // java.lang.Object obj
        start local 1 // long offset
        start local 3 // long delta
         0: .line 414
            getstatic org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* obj */
            lload 1 /* offset */
            lload 3 /* delta */
            invokevirtual sun.misc.Unsafe.getAndAddLong:(Ljava/lang/Object;JJ)J
            lreturn
        end local 3 // long delta
        end local 1 // long offset
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0     obj  Ljava/lang/Object;
            0    1     1  offset  J
            0    1     3   delta  J
    MethodParameters:
        Name  Flags
      obj     
      offset  
      delta   

  public void testGetAndSetInt();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
         0: .line 417
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tTest cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeInvisibleAnnotations: 
      Test()

  public static int getAndSetInt(java.lang.Object, long, int);
    descriptor: (Ljava/lang/Object;JI)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // java.lang.Object obj
        start local 1 // long offset
        start local 3 // int newValue
         0: .line 431
            getstatic org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* obj */
            lload 1 /* offset */
            iload 3 /* newValue */
            invokevirtual sun.misc.Unsafe.getAndSetInt:(Ljava/lang/Object;JI)I
            ireturn
        end local 3 // int newValue
        end local 1 // long offset
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0       obj  Ljava/lang/Object;
            0    1     1    offset  J
            0    1     3  newValue  I
    MethodParameters:
          Name  Flags
      obj       
      offset    
      newValue  

  public void testGetAndSetLong();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
         0: .line 434
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tTest cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeInvisibleAnnotations: 
      Test()

  public static long getAndSetLong(java.lang.Object, long, long);
    descriptor: (Ljava/lang/Object;JJ)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // java.lang.Object obj
        start local 1 // long offset
        start local 3 // long newValue
         0: .line 448
            getstatic org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* obj */
            lload 1 /* offset */
            lload 3 /* newValue */
            invokevirtual sun.misc.Unsafe.getAndSetLong:(Ljava/lang/Object;JJ)J
            lreturn
        end local 3 // long newValue
        end local 1 // long offset
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0       obj  Ljava/lang/Object;
            0    1     1    offset  J
            0    1     3  newValue  J
    MethodParameters:
          Name  Flags
      obj       
      offset    
      newValue  

  public void testGetAndSetObject();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
         0: .line 451
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tTest cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/graalvm/compiler/replacements/test/UnsafeSubstitutionsTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeInvisibleAnnotations: 
      Test()

  public static java.lang.Object getAndSetObject(java.lang.Object, long, java.lang.Object);
    descriptor: (Ljava/lang/Object;JLjava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // java.lang.Object obj
        start local 1 // long offset
        start local 3 // java.lang.Object newValue
         0: .line 467
            getstatic org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* obj */
            lload 1 /* offset */
            aload 3 /* newValue */
            invokevirtual sun.misc.Unsafe.getAndSetObject:(Ljava/lang/Object;JLjava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object newValue
        end local 1 // long offset
        end local 0 // java.lang.Object obj
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0       obj  Ljava/lang/Object;
            0    1     1    offset  J
            0    1     3  newValue  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      obj       
      offset    
      newValue  
}
SourceFile: "UnsafeSubstitutionsTest.java"
NestMembers:
  org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest$Foo  org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest$MyObject
InnerClasses:
  Foo = org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest$Foo of org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest
  MyObject = org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest$MyObject of org.graalvm.compiler.replacements.test.UnsafeSubstitutionsTest