public class org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver implements org.springframework.instrument.classloading.LoadTimeWeaver
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver
  super_class: java.lang.Object
{
  private static final java.lang.String DELEGATING_TRANSFORMER_CLASS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "org.jboss.as.server.deployment.module.DelegatingClassFileTransformer"

  private static final java.lang.String WRAPPER_TRANSFORMER_CLASS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "org.jboss.modules.JLIClassTransformer"

  private final java.lang.ClassLoader classLoader;
    descriptor: Ljava/lang/ClassLoader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object delegatingTransformer;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.reflect.Method addTransformer;
    descriptor: Ljava/lang/reflect/Method;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
         0: .line 63
            aload 0 /* this */
            invokestatic org.springframework.util.ClassUtils.getDefaultClassLoader:()Ljava/lang/ClassLoader;
            invokespecial org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.<init>:(Ljava/lang/ClassLoader;)V
         1: .line 64
            return
        end local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/instrument/classloading/jboss/JBossLoadTimeWeaver;

  public void <init>(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
        start local 1 // java.lang.ClassLoader classLoader
         0: .line 71
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 72
            aload 1 /* classLoader */
            ldc "ClassLoader must not be null"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         2: .line 73
            aload 0 /* this */
            aload 1 /* classLoader */
            putfield org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
         3: .line 76
            aload 1 /* classLoader */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc "transformer"
            invokestatic org.springframework.util.ReflectionUtils.findField:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 2 /* transformer */
        start local 2 // java.lang.reflect.Field transformer
         4: .line 77
            aload 2 /* transformer */
            ifnonnull 8
         5: .line 78
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Could not find 'transformer' field on JBoss ClassLoader: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 79
            aload 1 /* classLoader */
            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;
         7: .line 78
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 81
      StackMap locals: org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver java.lang.ClassLoader java.lang.reflect.Field
      StackMap stack:
            aload 2 /* transformer */
            iconst_1
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
         9: .line 83
            aload 2 /* transformer */
            aload 1 /* classLoader */
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* suggestedTransformer */
        start local 3 // java.lang.Object suggestedTransformer
        10: .line 84
            aload 3 /* suggestedTransformer */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "org.jboss.modules.JLIClassTransformer"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 20
        11: .line 85
            aload 3 /* suggestedTransformer */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc "transformer"
            invokestatic org.springframework.util.ReflectionUtils.findField:(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 4 /* wrappedTransformer */
        start local 4 // java.lang.reflect.Field wrappedTransformer
        12: .line 86
            aload 4 /* wrappedTransformer */
            ifnonnull 18
        13: .line 87
            new java.lang.IllegalArgumentException
            dup
        14: .line 88
            new java.lang.StringBuilder
            dup
            ldc "Could not find 'transformer' field on JBoss JLIClassTransformer: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        15: .line 89
            aload 3 /* suggestedTransformer */
            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;
        16: .line 88
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        17: .line 87
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 91
      StackMap locals: java.lang.Object java.lang.reflect.Field
      StackMap stack:
            aload 4 /* wrappedTransformer */
            iconst_1
            invokevirtual java.lang.reflect.Field.setAccessible:(Z)V
        19: .line 92
            aload 4 /* wrappedTransformer */
            aload 3 /* suggestedTransformer */
            invokevirtual java.lang.reflect.Field.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 3 /* suggestedTransformer */
        end local 4 // java.lang.reflect.Field wrappedTransformer
        20: .line 94
      StackMap locals:
      StackMap stack:
            aload 3 /* suggestedTransformer */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            ldc "org.jboss.as.server.deployment.module.DelegatingClassFileTransformer"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 26
        21: .line 95
            new java.lang.IllegalStateException
            dup
        22: .line 96
            new java.lang.StringBuilder
            dup
            ldc "Transformer not of the expected type DelegatingClassFileTransformer: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        23: .line 97
            aload 3 /* suggestedTransformer */
            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;
        24: .line 96
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        25: .line 95
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        26: .line 99
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* suggestedTransformer */
            putfield org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.delegatingTransformer:Ljava/lang/Object;
        27: .line 101
            aload 0 /* this */
            getfield org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.delegatingTransformer:Ljava/lang/Object;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
        28: .line 102
            ldc "addTransformer"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/instrument/ClassFileTransformer;
            aastore
        29: .line 101
            invokestatic org.springframework.util.ReflectionUtils.findMethod:(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 4 /* addTransformer */
        start local 4 // java.lang.reflect.Method addTransformer
        30: .line 103
            aload 4 /* addTransformer */
            ifnonnull 36
        31: .line 104
            new java.lang.IllegalArgumentException
            dup
        32: .line 105
            new java.lang.StringBuilder
            dup
            ldc "Could not find 'addTransformer' method on JBoss DelegatingClassFileTransformer: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        33: .line 106
            aload 0 /* this */
            getfield org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.delegatingTransformer:Ljava/lang/Object;
            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;
        34: .line 105
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        35: .line 104
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        36: .line 108
      StackMap locals: java.lang.reflect.Method
      StackMap stack:
            aload 4 /* addTransformer */
            iconst_1
            invokevirtual java.lang.reflect.Method.setAccessible:(Z)V
        37: .line 109
            aload 0 /* this */
            aload 4 /* addTransformer */
            putfield org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.addTransformer:Ljava/lang/reflect/Method;
        end local 4 // java.lang.reflect.Method addTransformer
        end local 3 // java.lang.Object suggestedTransformer
        end local 2 // java.lang.reflect.Field transformer
        38: .line 110
            goto 41
        39: .line 111
      StackMap locals: org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver java.lang.ClassLoader
      StackMap stack: java.lang.Throwable
            astore 2 /* ex */
        start local 2 // java.lang.Throwable ex
        40: .line 112
            new java.lang.IllegalStateException
            dup
            ldc "Could not initialize JBoss LoadTimeWeaver"
            aload 2 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Throwable ex
        41: .line 114
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.ClassLoader classLoader
        end local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   42     0                  this  Lorg/springframework/instrument/classloading/jboss/JBossLoadTimeWeaver;
            0   42     1           classLoader  Ljava/lang/ClassLoader;
            4   38     2           transformer  Ljava/lang/reflect/Field;
           10   38     3  suggestedTransformer  Ljava/lang/Object;
           12   20     4    wrappedTransformer  Ljava/lang/reflect/Field;
           30   38     4        addTransformer  Ljava/lang/reflect/Method;
           40   41     2                    ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           3    38      39  Class java.lang.Throwable
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
             Name  Flags
      classLoader  

  public void addTransformer(java.lang.instrument.ClassFileTransformer);
    descriptor: (Ljava/lang/instrument/ClassFileTransformer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
        start local 1 // java.lang.instrument.ClassFileTransformer transformer
         0: .line 120
            aload 0 /* this */
            getfield org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.addTransformer:Ljava/lang/reflect/Method;
            aload 0 /* this */
            getfield org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.delegatingTransformer:Ljava/lang/Object;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* transformer */
            aastore
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 121
            goto 4
         2: .line 122
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2 /* ex */
        start local 2 // java.lang.Throwable ex
         3: .line 123
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Could not add transformer on JBoss ClassLoader: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 2 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.lang.Throwable ex
         4: .line 125
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.instrument.ClassFileTransformer transformer
        end local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/springframework/instrument/classloading/jboss/JBossLoadTimeWeaver;
            0    5     1  transformer  Ljava/lang/instrument/ClassFileTransformer;
            3    4     2           ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
    MethodParameters:
             Name  Flags
      transformer  

  public java.lang.ClassLoader getInstrumentableClassLoader();
    descriptor: ()Ljava/lang/ClassLoader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
         0: .line 129
            aload 0 /* this */
            getfield org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.classLoader:Ljava/lang/ClassLoader;
            areturn
        end local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/instrument/classloading/jboss/JBossLoadTimeWeaver;

  public java.lang.ClassLoader getThrowawayClassLoader();
    descriptor: ()Ljava/lang/ClassLoader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
         0: .line 134
            new org.springframework.instrument.classloading.SimpleThrowawayClassLoader
            dup
            aload 0 /* this */
            invokevirtual org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver.getInstrumentableClassLoader:()Ljava/lang/ClassLoader;
            invokespecial org.springframework.instrument.classloading.SimpleThrowawayClassLoader.<init>:(Ljava/lang/ClassLoader;)V
            areturn
        end local 0 // org.springframework.instrument.classloading.jboss.JBossLoadTimeWeaver this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/instrument/classloading/jboss/JBossLoadTimeWeaver;
}
SourceFile: "JBossLoadTimeWeaver.java"