final class org.jboss.shrinkwrap.api.SecurityActions
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.jboss.shrinkwrap.api.SecurityActions
  super_class: java.lang.Object
{
  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jboss.shrinkwrap.api.SecurityActions this
         0: .line 41
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 42
            new java.lang.UnsupportedOperationException
            dup
            ldc "No instantiation"
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.jboss.shrinkwrap.api.SecurityActions this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jboss/shrinkwrap/api/SecurityActions;

  static java.lang.ClassLoader getThreadContextClassLoader();
    descriptor: ()Ljava/lang/ClassLoader;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 53
            getstatic org.jboss.shrinkwrap.api.SecurityActions$GetTcclAction.INSTANCE:Lorg/jboss/shrinkwrap/api/SecurityActions$GetTcclAction;
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.ClassLoader
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static java.lang.reflect.Constructor<?> getConstructor(java.lang.Class<?>, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
    flags: (0x0088) ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.lang.Class clazz
        start local 1 // java.lang.Class[] argumentTypes
         0: .line 67
            new org.jboss.shrinkwrap.api.SecurityActions$1
            dup
            aload 0 /* clazz */
            aload 1 /* argumentTypes */
            invokespecial org.jboss.shrinkwrap.api.SecurityActions$1.<init>:(Ljava/lang/Class;[Ljava/lang/Class;)V
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
            checkcast java.lang.reflect.Constructor
         1: areturn
         2: .line 75
      StackMap locals:
      StackMap stack: java.security.PrivilegedActionException
            astore 2 /* pae */
        start local 2 // java.security.PrivilegedActionException pae
         3: .line 76
            aload 2 /* pae */
            invokevirtual java.security.PrivilegedActionException.getCause:()Ljava/lang/Throwable;
            astore 3 /* t */
        start local 3 // java.lang.Throwable t
         4: .line 78
            aload 3 /* t */
            instanceof java.lang.NoSuchMethodException
            ifeq 6
         5: .line 79
            aload 3 /* t */
            checkcast java.lang.NoSuchMethodException
            athrow
         6: .line 83
      StackMap locals: java.security.PrivilegedActionException java.lang.Throwable
      StackMap stack:
            aload 3 /* t */
            checkcast java.lang.RuntimeException
            athrow
         7: .line 86
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
            pop
         8: .line 87
            new java.lang.RuntimeException
            dup
            ldc "Obtained unchecked Exception; this code should never be reached"
            aload 3 /* t */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.Throwable t
        end local 2 // java.security.PrivilegedActionException pae
        end local 1 // java.lang.Class[] argumentTypes
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0          clazz  Ljava/lang/Class<*>;
            0    9     1  argumentTypes  [Ljava/lang/Class;
            3    9     2            pae  Ljava/security/PrivilegedActionException;
            4    9     3              t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.PrivilegedActionException
           6     7       7  Class java.lang.ClassCastException
    Exceptions:
      throws java.lang.NoSuchMethodException
    Signature: (Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Ljava/lang/reflect/Constructor<*>;
    MethodParameters:
               Name  Flags
      clazz          final
      argumentTypes  final

  static <T> T newInstance(java.lang.Class<?>, java.lang.Class<?>[], [], java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // java.lang.Class clazz
        start local 1 // java.lang.Class[] argumentTypes
        start local 2 // java.lang.Object[] arguments
        start local 3 // java.lang.Class expectedType
         0: .line 107
            aload 0 /* clazz */
            ifnonnull 2
         1: .line 108
            new java.lang.IllegalArgumentException
            dup
            ldc "Class must be specified"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 110
      StackMap locals:
      StackMap stack:
            aload 1 /* argumentTypes */
            ifnonnull 4
         3: .line 111
            new java.lang.IllegalArgumentException
            dup
            ldc "ArgumentTypes must be specified. Use empty array if no arguments"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 113
      StackMap locals:
      StackMap stack:
            aload 2 /* arguments */
            ifnonnull 6
         5: .line 114
            new java.lang.IllegalArgumentException
            dup
            ldc "Arguments must be specified. Use empty array if no arguments"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 116
      StackMap locals:
      StackMap stack:
            aload 3 /* expectedType */
            ifnonnull 8
         7: .line 117
            new java.lang.IllegalArgumentException
            dup
            ldc "Expected type must be specified"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 123
      StackMap locals:
      StackMap stack:
            aload 0 /* clazz */
            aload 1 /* argumentTypes */
            invokestatic org.jboss.shrinkwrap.api.SecurityActions.getConstructor:(Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            astore 4 /* constructor */
        start local 4 // java.lang.reflect.Constructor constructor
         9: .line 124
            goto 14
        end local 4 // java.lang.reflect.Constructor constructor
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
        10: astore 5 /* e */
        start local 5 // java.lang.NoSuchMethodException e
        11: .line 125
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Could not create new instance of "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* clazz */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " using ctor argument types "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: .line 126
            aload 1 /* argumentTypes */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 5 /* e */
        13: .line 125
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.NoSuchMethodException e
        start local 4 // java.lang.reflect.Constructor constructor
        14: .line 132
      StackMap locals: java.lang.reflect.Constructor
      StackMap stack:
            aload 4 /* constructor */
            aload 2 /* arguments */
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            astore 5 /* obj */
        start local 5 // java.lang.Object obj
        15: .line 133
            goto 20
        end local 5 // java.lang.Object obj
      StackMap locals:
      StackMap stack: java.lang.Exception
        16: astore 6 /* e */
        start local 6 // java.lang.Exception e
        17: .line 134
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Could not create a new instance of "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* clazz */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " using arguments "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        18: .line 135
            aload 2 /* arguments */
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* e */
        19: .line 134
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.Exception e
        start local 5 // java.lang.Object obj
        20: .line 140
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 3 /* expectedType */
            aload 5 /* obj */
            invokevirtual java.lang.Class.cast:(Ljava/lang/Object;)Ljava/lang/Object;
        21: areturn
        22: .line 141
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
            pop
        23: .line 143
            new java.lang.ClassCastException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Incorrect expected type, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* expectedType */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", defined for "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        24: .line 144
            aload 5 /* obj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            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;
        25: .line 143
            invokespecial java.lang.ClassCastException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.lang.Object obj
        end local 4 // java.lang.reflect.Constructor constructor
        end local 3 // java.lang.Class expectedType
        end local 2 // java.lang.Object[] arguments
        end local 1 // java.lang.Class[] argumentTypes
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   26     0          clazz  Ljava/lang/Class<*>;
            0   26     1  argumentTypes  [Ljava/lang/Class;
            0   26     2      arguments  [Ljava/lang/Object;
            0   26     3   expectedType  Ljava/lang/Class<TT;>;
            9   10     4    constructor  Ljava/lang/reflect/Constructor<*>;
           14   26     4    constructor  Ljava/lang/reflect/Constructor<*>;
           11   14     5              e  Ljava/lang/NoSuchMethodException;
           15   16     5            obj  Ljava/lang/Object;
           20   26     5            obj  Ljava/lang/Object;
           17   20     6              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           8     9      10  Class java.lang.NoSuchMethodException
          14    15      16  Class java.lang.Exception
          20    21      22  Class java.lang.ClassCastException
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Class<*>;[Ljava/lang/Class<*>;[Ljava/lang/Object;Ljava/lang/Class<TT;>;)TT;
    MethodParameters:
               Name  Flags
      clazz          final
      argumentTypes  final
      arguments      final
      expectedType   final

  static <T> T newInstance(java.lang.String, java.lang.Class<?>[], [], java.lang.Class<T>, java.lang.ClassLoader);
    descriptor: (Ljava/lang/String;[Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // java.lang.String className
        start local 1 // java.lang.Class[] argumentTypes
        start local 2 // java.lang.Object[] arguments
        start local 3 // java.lang.Class expectedType
        start local 4 // java.lang.ClassLoader cl
         0: .line 171
            aload 0 /* className */
            ifnonnull 2
         1: .line 172
            new java.lang.IllegalArgumentException
            dup
            ldc "ClassName must be specified"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 174
      StackMap locals:
      StackMap stack:
            aload 1 /* argumentTypes */
            ifnonnull 4
         3: .line 175
            new java.lang.IllegalArgumentException
            dup
            ldc "ArgumentTypes must be specified. Use empty array if no arguments"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 177
      StackMap locals:
      StackMap stack:
            aload 2 /* arguments */
            ifnonnull 6
         5: .line 178
            new java.lang.IllegalArgumentException
            dup
            ldc "Arguments must be specified. Use empty array if no arguments"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 180
      StackMap locals:
      StackMap stack:
            aload 3 /* expectedType */
            ifnonnull 8
         7: .line 181
            new java.lang.IllegalArgumentException
            dup
            ldc "Expected type must be specified"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 183
      StackMap locals:
      StackMap stack:
            aload 4 /* cl */
            ifnonnull 10
         9: .line 184
            new java.lang.IllegalArgumentException
            dup
            ldc "CL must be specified"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 189
      StackMap locals:
      StackMap stack:
            aload 0 /* className */
            iconst_0
            aload 4 /* cl */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 5 /* implClass */
        start local 5 // java.lang.Class implClass
        11: .line 190
            goto 16
        end local 5 // java.lang.Class implClass
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
        12: astore 6 /* cnfe */
        start local 6 // java.lang.ClassNotFoundException cnfe
        13: .line 191
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Could not find class named "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* className */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " in the specified CL: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        14: .line 192
            aload 4 /* cl */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* cnfe */
        15: .line 191
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.lang.ClassNotFoundException cnfe
        start local 5 // java.lang.Class implClass
        16: .line 196
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 5 /* implClass */
            aload 1 /* argumentTypes */
            aload 2 /* arguments */
            aload 3 /* expectedType */
            invokestatic org.jboss.shrinkwrap.api.SecurityActions.newInstance:(Ljava/lang/Class;[Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
            areturn
        end local 5 // java.lang.Class implClass
        end local 4 // java.lang.ClassLoader cl
        end local 3 // java.lang.Class expectedType
        end local 2 // java.lang.Object[] arguments
        end local 1 // java.lang.Class[] argumentTypes
        end local 0 // java.lang.String className
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0      className  Ljava/lang/String;
            0   17     1  argumentTypes  [Ljava/lang/Class;
            0   17     2      arguments  [Ljava/lang/Object;
            0   17     3   expectedType  Ljava/lang/Class<TT;>;
            0   17     4             cl  Ljava/lang/ClassLoader;
           11   12     5      implClass  Ljava/lang/Class<*>;
           16   17     5      implClass  Ljava/lang/Class<*>;
           13   16     6           cnfe  Ljava/lang/ClassNotFoundException;
      Exception table:
        from    to  target  type
          10    11      12  Class java.lang.ClassNotFoundException
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/String;[Ljava/lang/Class<*>;[Ljava/lang/Object;Ljava/lang/Class<TT;>;Ljava/lang/ClassLoader;)TT;
    MethodParameters:
               Name  Flags
      className      final
      argumentTypes  final
      arguments      final
      expectedType   final
      cl             final
}
SourceFile: "SecurityActions.java"
NestMembers:
  org.jboss.shrinkwrap.api.SecurityActions$1  org.jboss.shrinkwrap.api.SecurityActions$GetTcclAction
InnerClasses:
  org.jboss.shrinkwrap.api.SecurityActions$1
  private final GetTcclAction = org.jboss.shrinkwrap.api.SecurityActions$GetTcclAction of org.jboss.shrinkwrap.api.SecurityActions