public class lombok.permit.Permit
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: lombok.permit.Permit
  super_class: java.lang.Object
{
  private static final long ACCESSIBLE_OVERRIDE_FIELD_OFFSET;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.IllegalAccessException INIT_ERROR;
    descriptor: Ljava/lang/IllegalAccessException;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final sun.misc.Unsafe UNSAFE;
    descriptor: Lsun/misc/Unsafe;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=0
         0: .line 41
            ldc Lsun/misc/Unsafe;
            ldc "theUnsafe"
            invokestatic lombok.permit.Permit.reflectiveStaticFieldAccess:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
            checkcast sun.misc.Unsafe
            putstatic lombok.permit.Permit.UNSAFE:Lsun/misc/Unsafe;
         1: .line 49
            invokestatic lombok.permit.Permit.getOverrideFieldOffset:()J
            lstore 0 /* g */
        start local 0 // long g
         2: .line 50
            aconst_null
            astore 2 /* ex */
        start local 2 // java.lang.Throwable ex
         3: .line 51
            goto 8
        end local 2 // java.lang.Throwable ex
        end local 0 // long g
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: astore 3 /* t */
        start local 3 // java.lang.Throwable t
         5: .line 52
            aconst_null
            pop
         6: .line 53
            ldc -1
            lstore 0 /* g */
        start local 0 // long g
         7: .line 54
            aload 3 /* t */
            astore 2 /* ex */
        end local 3 // java.lang.Throwable t
        start local 2 // java.lang.Throwable ex
         8: .line 57
      StackMap locals: long java.lang.Throwable
      StackMap stack:
            lload 0 /* g */
            putstatic lombok.permit.Permit.ACCESSIBLE_OVERRIDE_FIELD_OFFSET:J
         9: .line 58
            aload 2 /* ex */
            ifnonnull 10
            aconst_null
            putstatic lombok.permit.Permit.INIT_ERROR:Ljava/lang/IllegalAccessException;
            goto 13
        10: .line 59
      StackMap locals:
      StackMap stack:
            aload 2 /* ex */
            instanceof java.lang.IllegalAccessException
            ifeq 11
            aload 2 /* ex */
            checkcast java.lang.IllegalAccessException
            putstatic lombok.permit.Permit.INIT_ERROR:Ljava/lang/IllegalAccessException;
            goto 13
        11: .line 61
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalAccessException
            dup
            ldc "Cannot initialize Unsafe-based permit"
            invokespecial java.lang.IllegalAccessException.<init>:(Ljava/lang/String;)V
            putstatic lombok.permit.Permit.INIT_ERROR:Ljava/lang/IllegalAccessException;
        12: .line 62
            getstatic lombok.permit.Permit.INIT_ERROR:Ljava/lang/IllegalAccessException;
            aload 2 /* ex */
            invokevirtual java.lang.IllegalAccessException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        end local 2 // java.lang.Throwable ex
        end local 0 // long g
        13: .line 64
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            2    4     0     g  J
            7   13     0     g  J
            3    4     2    ex  Ljava/lang/Throwable;
            8   13     2    ex  Ljava/lang/Throwable;
            5    8     3     t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     3       4  Class java.lang.Throwable

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // lombok.permit.Permit this
         0: .line 36
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // lombok.permit.Permit this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Llombok/permit/Permit;

  public static <T extends java.lang.reflect.AccessibleObject> T setAccessible();
    descriptor: (Ljava/lang/reflect/AccessibleObject;)Ljava/lang/reflect/AccessibleObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.lang.reflect.AccessibleObject accessor
         0: .line 67
            getstatic lombok.permit.Permit.INIT_ERROR:Ljava/lang/IllegalAccessException;
            ifnonnull 3
         1: .line 68
            getstatic lombok.permit.Permit.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* accessor */
            getstatic lombok.permit.Permit.ACCESSIBLE_OVERRIDE_FIELD_OFFSET:J
            iconst_1
            invokevirtual sun.misc.Unsafe.putBoolean:(Ljava/lang/Object;JZ)V
         2: .line 69
            goto 4
         3: .line 70
      StackMap locals:
      StackMap stack:
            aload 0 /* accessor */
            iconst_1
            invokevirtual java.lang.reflect.AccessibleObject.setAccessible:(Z)V
         4: .line 73
      StackMap locals:
      StackMap stack:
            aload 0 /* accessor */
            areturn
        end local 0 // java.lang.reflect.AccessibleObject accessor
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0  accessor  TT;
    Signature: <T:Ljava/lang/reflect/AccessibleObject;>(TT;)TT;
    MethodParameters:
          Name  Flags
      accessor  

  private static long getOverrideFieldOffset();
    descriptor: ()J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=0
         0: .line 77
            aconst_null
            astore 0 /* f */
        start local 0 // java.lang.reflect.Field f
         1: .line 78
            aconst_null
            astore 1 /* saved */
        start local 1 // java.lang.Throwable saved
         2: .line 80
            ldc Ljava/lang/reflect/AccessibleObject;
            ldc "override"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 0 /* f */
         3: .line 81
            goto 6
      StackMap locals: java.lang.reflect.Field java.lang.Throwable
      StackMap stack: java.lang.Throwable
         4: astore 2 /* t */
        start local 2 // java.lang.Throwable t
         5: .line 82
            aload 2 /* t */
            astore 1 /* saved */
        end local 2 // java.lang.Throwable t
         6: .line 85
      StackMap locals:
      StackMap stack:
            aload 0 /* f */
            ifnull 8
         7: .line 86
            getstatic lombok.permit.Permit.UNSAFE:Lsun/misc/Unsafe;
            aload 0 /* f */
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
            lreturn
         8: .line 90
      StackMap locals:
      StackMap stack:
            getstatic lombok.permit.Permit.UNSAFE:Lsun/misc/Unsafe;
            ldc Llombok/permit/Permit$Fake;
            ldc "override"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            invokevirtual sun.misc.Unsafe.objectFieldOffset:(Ljava/lang/reflect/Field;)J
         9: lreturn
        10: .line 91
      StackMap locals:
      StackMap stack: java.lang.Throwable
            pop
        11: .line 92
            aload 1 /* saved */
            athrow
        end local 1 // java.lang.Throwable saved
        end local 0 // java.lang.reflect.Field f
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            1   12     0      f  Ljava/lang/reflect/Field;
            2   12     1  saved  Ljava/lang/Throwable;
            5    6     2      t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Throwable
           8     9      10  Class java.lang.Throwable
    Exceptions:
      throws java.lang.Throwable

  public static java.lang.reflect.Method getMethod(java.lang.Class<?>, java.lang.String, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // java.lang.Class c
        start local 1 // java.lang.String mName
        start local 2 // java.lang.Class[] parameterTypes
         0: .line 102
            aconst_null
            astore 3 /* m */
        start local 3 // java.lang.reflect.Method m
         1: .line 103
            aload 0 /* c */
            astore 4 /* oc */
        start local 4 // java.lang.Class oc
         2: .line 104
            goto 7
         3: .line 106
      StackMap locals: java.lang.reflect.Method java.lang.Class
      StackMap stack:
            aload 0 /* c */
            aload 1 /* mName */
            aload 2 /* parameterTypes */
            invokevirtual java.lang.Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 3 /* m */
         4: .line 107
            goto 8
         5: .line 108
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
            pop
         6: .line 109
            aload 0 /* c */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 0 /* c */
         7: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* c */
            ifnonnull 3
         8: .line 112
      StackMap locals:
      StackMap stack:
            aload 3 /* m */
            ifnonnull 9
            new java.lang.NoSuchMethodException
            dup
            new java.lang.StringBuilder
            dup
            aload 4 /* oc */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " :: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* mName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "(args)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.NoSuchMethodException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 113
      StackMap locals:
      StackMap stack:
            aload 3 /* m */
            invokestatic lombok.permit.Permit.setAccessible:(Ljava/lang/reflect/AccessibleObject;)Ljava/lang/reflect/AccessibleObject;
            checkcast java.lang.reflect.Method
            areturn
        end local 4 // java.lang.Class oc
        end local 3 // java.lang.reflect.Method m
        end local 2 // java.lang.Class[] parameterTypes
        end local 1 // java.lang.String mName
        end local 0 // java.lang.Class c
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   10     0               c  Ljava/lang/Class<*>;
            0   10     1           mName  Ljava/lang/String;
            0   10     2  parameterTypes  [Ljava/lang/Class;
            1   10     3               m  Ljava/lang/reflect/Method;
            2   10     4              oc  Ljava/lang/Class<*>;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.NoSuchMethodException
    Exceptions:
      throws java.lang.NoSuchMethodException
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Method;
    MethodParameters:
                Name  Flags
      c               
      mName           
      parameterTypes  

  public static java.lang.reflect.Field getField(java.lang.Class<?>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.lang.Class c
        start local 1 // java.lang.String fName
         0: .line 117
            aconst_null
            astore 2 /* f */
        start local 2 // java.lang.reflect.Field f
         1: .line 118
            aload 0 /* c */
            astore 3 /* oc */
        start local 3 // java.lang.Class oc
         2: .line 119
            goto 7
         3: .line 121
      StackMap locals: java.lang.reflect.Field java.lang.Class
      StackMap stack:
            aload 0 /* c */
            aload 1 /* fName */
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 2 /* f */
         4: .line 122
            goto 8
         5: .line 123
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldException
            pop
         6: .line 124
            aload 0 /* c */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            astore 0 /* c */
         7: .line 119
      StackMap locals:
      StackMap stack:
            aload 0 /* c */
            ifnonnull 3
         8: .line 127
      StackMap locals:
      StackMap stack:
            aload 2 /* f */
            ifnonnull 9
            new java.lang.NoSuchFieldException
            dup
            new java.lang.StringBuilder
            dup
            aload 3 /* oc */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " :: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* fName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.NoSuchFieldException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 129
      StackMap locals:
      StackMap stack:
            aload 2 /* f */
            invokestatic lombok.permit.Permit.setAccessible:(Ljava/lang/reflect/AccessibleObject;)Ljava/lang/reflect/AccessibleObject;
            checkcast java.lang.reflect.Field
            areturn
        end local 3 // java.lang.Class oc
        end local 2 // java.lang.reflect.Field f
        end local 1 // java.lang.String fName
        end local 0 // java.lang.Class c
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0      c  Ljava/lang/Class<*>;
            0   10     1  fName  Ljava/lang/String;
            1   10     2      f  Ljava/lang/reflect/Field;
            2   10     3     oc  Ljava/lang/Class<*>;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.NoSuchFieldException
    Exceptions:
      throws java.lang.NoSuchFieldException
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;)Ljava/lang/reflect/Field;
    MethodParameters:
       Name  Flags
      c      
      fName  

  public static java.lang.reflect.Field permissiveGetField(java.lang.Class<?>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class c
        start local 1 // java.lang.String fName
         0: .line 134
            aload 0 /* c */
            aload 1 /* fName */
            invokestatic lombok.permit.Permit.getField:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
         1: areturn
         2: .line 135
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         3: .line 136
            aconst_null
            areturn
        end local 1 // java.lang.String fName
        end local 0 // java.lang.Class c
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0      c  Ljava/lang/Class<*>;
            0    4     1  fName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Exception
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;)Ljava/lang/reflect/Field;
    MethodParameters:
       Name  Flags
      c      
      fName  

  public static <T> T permissiveReadField(java.lang.Class<T>, java.lang.reflect.Field, );
    descriptor: (Ljava/lang/Class;Ljava/lang/reflect/Field;Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.lang.Class type
        start local 1 // java.lang.reflect.Field f
        start local 2 // java.lang.Object instance
         0: .line 142
            aload 0 /* type */
            aload 1 /* f */
            aload 2 /* instance */
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
         1: areturn
         2: .line 143
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         3: .line 144
            aconst_null
            areturn
        end local 2 // java.lang.Object instance
        end local 1 // java.lang.reflect.Field f
        end local 0 // java.lang.Class type
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      type  Ljava/lang/Class<TT;>;
            0    4     1         f  Ljava/lang/reflect/Field;
            0    4     2  instance  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Exception
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;Ljava/lang/reflect/Field;Ljava/lang/Object;)TT;
    MethodParameters:
          Name  Flags
      type      
      f         
      instance  

  public static <T> java.lang.reflect.Constructor<T> getConstructor(java.lang.Class<T>, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.Class c
        start local 1 // java.lang.Class[] parameterTypes
         0: .line 149
            aload 0 /* c */
            aload 1 /* parameterTypes */
            invokevirtual java.lang.Class.getDeclaredConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            invokestatic lombok.permit.Permit.setAccessible:(Ljava/lang/reflect/AccessibleObject;)Ljava/lang/reflect/AccessibleObject;
            checkcast java.lang.reflect.Constructor
            areturn
        end local 1 // java.lang.Class[] parameterTypes
        end local 0 // java.lang.Class c
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0               c  Ljava/lang/Class<TT;>;
            0    1     1  parameterTypes  [Ljava/lang/Class;
    Exceptions:
      throws java.lang.NoSuchMethodException
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<TT;>;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Constructor<TT;>;
    MethodParameters:
                Name  Flags
      c               
      parameterTypes  

  private static  reflectiveStaticFieldAccess(java.lang.Class<?>, java.lang.String);
    descriptor: (Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Class c
        start local 1 // java.lang.String fName
         0: .line 154
            aload 0 /* c */
            aload 1 /* fName */
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 2 /* f */
        start local 2 // java.lang.reflect.Field f
         1: .line 155
            aload 2 /* f */
            iconst_1
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
         2: .line 156
            aload 2 /* f */
            aconst_null
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
         3: areturn
        end local 2 // java.lang.reflect.Field f
         4: .line 157
      StackMap locals:
      StackMap stack: java.lang.Exception
            pop
         5: .line 158
            aconst_null
            areturn
        end local 1 // java.lang.String fName
        end local 0 // java.lang.Class c
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0      c  Ljava/lang/Class<*>;
            0    6     1  fName  Ljava/lang/String;
            1    4     2      f  Ljava/lang/reflect/Field;
      Exception table:
        from    to  target  type
           0     3       4  Class java.lang.Exception
    Signature: (Ljava/lang/Class<*>;Ljava/lang/String;)Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      c      
      fName  
}
SourceFile: "Permit.java"
NestMembers:
  lombok.permit.Permit$Fake
InnerClasses:
  Fake = lombok.permit.Permit$Fake of lombok.permit.Permit