public abstract class com.google.gson.internal.UnsafeAllocator
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.google.gson.internal.UnsafeAllocator
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.gson.internal.UnsafeAllocator this
         0: .line 31
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.gson.internal.UnsafeAllocator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/gson/internal/UnsafeAllocator;

  public abstract <T> T newInstance(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Exceptions:
      throws java.lang.Exception
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
      Name  Flags
      c     

  public static com.google.gson.internal.UnsafeAllocator create();
    descriptor: ()Lcom/google/gson/internal/UnsafeAllocator;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=4, args_size=0
         0: .line 40
            ldc "sun.misc.Unsafe"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 0 /* unsafeClass */
        start local 0 // java.lang.Class unsafeClass
         1: .line 41
            aload 0 /* unsafeClass */
            ldc "theUnsafe"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 1 /* f */
        start local 1 // java.lang.reflect.Field f
         2: .line 42
            aload 1 /* f */
            iconst_1
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
         3: .line 43
            aload 1 /* f */
            aconst_null
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 2 /* unsafe */
        start local 2 // java.lang.Object unsafe
         4: .line 44
            aload 0 /* unsafeClass */
            ldc "allocateInstance"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Class;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 3 /* allocateInstance */
        start local 3 // java.lang.reflect.Method allocateInstance
         5: .line 45
            new com.google.gson.internal.UnsafeAllocator$1
            dup
            aload 3 /* allocateInstance */
            aload 2 /* unsafe */
            invokespecial com.google.gson.internal.UnsafeAllocator$1.<init>:(Ljava/lang/reflect/Method;Ljava/lang/Object;)V
         6: areturn
        end local 3 // java.lang.reflect.Method allocateInstance
        end local 2 // java.lang.Object unsafe
        end local 1 // java.lang.reflect.Field f
        end local 0 // java.lang.Class unsafeClass
         7: .line 53
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         8: .line 62
            ldc Ljava/io/ObjectStreamClass;
         9: .line 63
            ldc "getConstructorId"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Class;
            aastore
            invokevirtual java.lang.Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
        10: .line 62
            astore 0 /* getConstructorId */
        start local 0 // java.lang.reflect.Method getConstructorId
        11: .line 64
            aload 0 /* getConstructorId */
            iconst_1
            invokevirtual java.lang.reflect.Method.setAccessible:(Z)V
        12: .line 65
            aload 0 /* getConstructorId */
            aconst_null
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc Ljava/lang/Object;
            aastore
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 1 /* constructorId */
        start local 1 // int constructorId
        13: .line 66
            ldc Ljava/io/ObjectStreamClass;
        14: .line 67
            ldc "newInstance"
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Class;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            invokevirtual java.lang.Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
        15: .line 66
            astore 2 /* newInstance */
        start local 2 // java.lang.reflect.Method newInstance
        16: .line 68
            aload 2 /* newInstance */
            iconst_1
            invokevirtual java.lang.reflect.Method.setAccessible:(Z)V
        17: .line 69
            new com.google.gson.internal.UnsafeAllocator$2
            dup
            aload 2 /* newInstance */
            iload 1 /* constructorId */
            invokespecial com.google.gson.internal.UnsafeAllocator$2.<init>:(Ljava/lang/reflect/Method;I)V
        18: areturn
        end local 2 // java.lang.reflect.Method newInstance
        end local 1 // int constructorId
        end local 0 // java.lang.reflect.Method getConstructorId
        19: .line 77
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
        20: .line 86
            ldc Ljava/io/ObjectInputStream;
        21: .line 87
            ldc "newInstance"
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Class;
            aastore
            dup
            iconst_1
            ldc Ljava/lang/Class;
            aastore
            invokevirtual java.lang.Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
        22: .line 86
            astore 0 /* newInstance */
        start local 0 // java.lang.reflect.Method newInstance
        23: .line 88
            aload 0 /* newInstance */
            iconst_1
            invokevirtual java.lang.reflect.Method.setAccessible:(Z)V
        24: .line 89
            new com.google.gson.internal.UnsafeAllocator$3
            dup
            aload 0 /* newInstance */
            invokespecial com.google.gson.internal.UnsafeAllocator$3.<init>:(Ljava/lang/reflect/Method;)V
        25: areturn
        end local 0 // java.lang.reflect.Method newInstance
        26: .line 97
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
        27: .line 101
            new com.google.gson.internal.UnsafeAllocator$4
            dup
            invokespecial com.google.gson.internal.UnsafeAllocator$4.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            1    7     0       unsafeClass  Ljava/lang/Class<*>;
            2    7     1                 f  Ljava/lang/reflect/Field;
            4    7     2            unsafe  Ljava/lang/Object;
            5    7     3  allocateInstance  Ljava/lang/reflect/Method;
           11   19     0  getConstructorId  Ljava/lang/reflect/Method;
           13   19     1     constructorId  I
           16   19     2       newInstance  Ljava/lang/reflect/Method;
           23   26     0       newInstance  Ljava/lang/reflect/Method;
      Exception table:
        from    to  target  type
           0     6       7  Class java.lang.Exception
           8    18      19  Class java.lang.Exception
          20    25      26  Class java.lang.Exception

  static void assertInstantiable(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // java.lang.Class c
         0: .line 115
            aload 0 /* c */
            invokevirtual java.lang.Class.getModifiers:()I
            istore 1 /* modifiers */
        start local 1 // int modifiers
         1: .line 116
            iload 1 /* modifiers */
            invokestatic java.lang.reflect.Modifier.isInterface:(I)Z
            ifeq 3
         2: .line 117
            new java.lang.UnsupportedOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Interface can't be instantiated! Interface name: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 119
      StackMap locals: int
      StackMap stack:
            iload 1 /* modifiers */
            invokestatic java.lang.reflect.Modifier.isAbstract:(I)Z
            ifeq 5
         4: .line 120
            new java.lang.UnsupportedOperationException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Abstract class can't be instantiated! Class name: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* c */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 122
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int modifiers
        end local 0 // java.lang.Class c
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0          c  Ljava/lang/Class<*>;
            1    6     1  modifiers  I
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
      Name  Flags
      c     
}
SourceFile: "UnsafeAllocator.java"
NestMembers:
  com.google.gson.internal.UnsafeAllocator$1  com.google.gson.internal.UnsafeAllocator$2  com.google.gson.internal.UnsafeAllocator$3  com.google.gson.internal.UnsafeAllocator$4
InnerClasses:
  com.google.gson.internal.UnsafeAllocator$1
  com.google.gson.internal.UnsafeAllocator$2
  com.google.gson.internal.UnsafeAllocator$3
  com.google.gson.internal.UnsafeAllocator$4