public class org.apache.commons.logging.LogSource
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.commons.logging.LogSource
  super_class: java.lang.Object
{
  protected static java.util.Hashtable logs;
    descriptor: Ljava/util/Hashtable;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC

  protected static boolean log4jIsAvailable;
    descriptor: Z
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC

  protected static boolean jdk14IsAvailable;
    descriptor: Z
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC

  protected static java.lang.reflect.Constructor logImplctor;
    descriptor: Ljava/lang/reflect/Constructor;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 59
            new java.util.Hashtable
            dup
            invokespecial java.util.Hashtable.<init>:()V
            putstatic org.apache.commons.logging.LogSource.logs:Ljava/util/Hashtable;
         1: .line 62
            iconst_0
            putstatic org.apache.commons.logging.LogSource.log4jIsAvailable:Z
         2: .line 65
            iconst_0
            putstatic org.apache.commons.logging.LogSource.jdk14IsAvailable:Z
         3: .line 68
            aconst_null
            putstatic org.apache.commons.logging.LogSource.logImplctor:Ljava/lang/reflect/Constructor;
         4: .line 76
            ldc "org.apache.log4j.Logger"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            ifnull 5
            iconst_1
            goto 6
      StackMap locals:
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: putstatic org.apache.commons.logging.LogSource.log4jIsAvailable:Z
         7: .line 77
            goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: pop
         9: .line 78
            iconst_0
            putstatic org.apache.commons.logging.LogSource.log4jIsAvailable:Z
        10: .line 83
      StackMap locals:
      StackMap stack:
            ldc "java.util.logging.Logger"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            ifnull 12
        11: .line 84
            ldc "org.apache.commons.logging.impl.Jdk14Logger"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            ifnull 12
            iconst_1
            goto 13
      StackMap locals:
      StackMap stack:
        12: iconst_0
        13: .line 83
      StackMap locals:
      StackMap stack: int
            putstatic org.apache.commons.logging.LogSource.jdk14IsAvailable:Z
        14: .line 85
            goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: pop
        16: .line 86
            iconst_0
            putstatic org.apache.commons.logging.LogSource.jdk14IsAvailable:Z
        17: .line 90
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 0 /* name */
        start local 0 // java.lang.String name
        18: .line 92
            ldc "org.apache.commons.logging.log"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* name */
        19: .line 93
            aload 0 /* name */
            ifnonnull 23
        20: .line 94
            ldc "org.apache.commons.logging.Log"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* name */
        21: .line 96
            goto 23
      StackMap locals: java.lang.String
      StackMap stack: java.lang.Throwable
        22: pop
        23: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            ifnull 31
        24: .line 100
            aload 0 /* name */
            invokestatic org.apache.commons.logging.LogSource.setLogImplementation:(Ljava/lang/String;)V
        25: .line 101
            goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: pop
        27: .line 103
            ldc "org.apache.commons.logging.impl.NoOpLog"
            invokestatic org.apache.commons.logging.LogSource.setLogImplementation:(Ljava/lang/String;)V
        28: .line 104
            goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: pop
        30: .line 108
            goto 43
        31: .line 110
      StackMap locals:
      StackMap stack:
            getstatic org.apache.commons.logging.LogSource.log4jIsAvailable:Z
            ifeq 34
        32: .line 111
            ldc "org.apache.commons.logging.impl.Log4JLogger"
            invokestatic org.apache.commons.logging.LogSource.setLogImplementation:(Ljava/lang/String;)V
        33: .line 112
            goto 43
      StackMap locals:
      StackMap stack:
        34: getstatic org.apache.commons.logging.LogSource.jdk14IsAvailable:Z
            ifeq 37
        35: .line 113
            ldc "org.apache.commons.logging.impl.Jdk14Logger"
            invokestatic org.apache.commons.logging.LogSource.setLogImplementation:(Ljava/lang/String;)V
        36: .line 114
            goto 43
        37: .line 115
      StackMap locals:
      StackMap stack:
            ldc "org.apache.commons.logging.impl.NoOpLog"
            invokestatic org.apache.commons.logging.LogSource.setLogImplementation:(Ljava/lang/String;)V
        38: .line 117
            goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        39: pop
        40: .line 119
            ldc "org.apache.commons.logging.impl.NoOpLog"
            invokestatic org.apache.commons.logging.LogSource.setLogImplementation:(Ljava/lang/String;)V
        41: .line 120
            goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        42: pop
        end local 0 // java.lang.String name
        43: .line 126
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
           18   43     0  name  Ljava/lang/String;
      Exception table:
        from    to  target  type
           4     7       8  Class java.lang.Throwable
          10    14      15  Class java.lang.Throwable
          18    21      22  Class java.lang.Throwable
          24    25      26  Class java.lang.Throwable
          27    28      29  Class java.lang.Throwable
          31    38      39  Class java.lang.Throwable
          40    41      42  Class java.lang.Throwable

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.commons.logging.LogSource this
         0: .line 131
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 132
            return
        end local 0 // org.apache.commons.logging.LogSource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/commons/logging/LogSource;

  public static void setLogImplementation(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String classname
         0: .line 145
            aload 0 /* classname */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 1 /* logclass */
        start local 1 // java.lang.Class logclass
         1: .line 146
            iconst_1
            anewarray java.lang.Class
            astore 2 /* argtypes */
        start local 2 // java.lang.Class[] argtypes
         2: .line 147
            aload 2 /* argtypes */
            iconst_0
            ldc ""
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aastore
         3: .line 148
            aload 1 /* logclass */
            aload 2 /* argtypes */
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            putstatic org.apache.commons.logging.LogSource.logImplctor:Ljava/lang/reflect/Constructor;
        end local 2 // java.lang.Class[] argtypes
        end local 1 // java.lang.Class logclass
         4: .line 149
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: pop
         6: .line 150
            aconst_null
            putstatic org.apache.commons.logging.LogSource.logImplctor:Ljava/lang/reflect/Constructor;
         7: .line 152
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.String classname
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0  classname  Ljava/lang/String;
            1    4     1   logclass  Ljava/lang/Class;
            2    4     2   argtypes  [Ljava/lang/Class;
      Exception table:
        from    to  target  type
           0     4       5  Class java.lang.Throwable
    Exceptions:
      throws java.lang.LinkageError, java.lang.NoSuchMethodException, java.lang.SecurityException, java.lang.ClassNotFoundException
    MethodParameters:
           Name  Flags
      classname  

  public static void setLogImplementation(java.lang.Class);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.Class logclass
         0: .line 161
            iconst_1
            anewarray java.lang.Class
            astore 1 /* argtypes */
        start local 1 // java.lang.Class[] argtypes
         1: .line 162
            aload 1 /* argtypes */
            iconst_0
            ldc ""
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aastore
         2: .line 163
            aload 0 /* logclass */
            aload 1 /* argtypes */
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            putstatic org.apache.commons.logging.LogSource.logImplctor:Ljava/lang/reflect/Constructor;
         3: .line 164
            return
        end local 1 // java.lang.Class[] argtypes
        end local 0 // java.lang.Class logclass
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0  logclass  Ljava/lang/Class;
            1    4     1  argtypes  [Ljava/lang/Class;
    Exceptions:
      throws java.lang.LinkageError, java.lang.ExceptionInInitializerError, java.lang.NoSuchMethodException, java.lang.SecurityException
    MethodParameters:
          Name  Flags
      logclass  

  public static org.apache.commons.logging.Log getInstance(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/commons/logging/Log;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String name
         0: .line 168
            getstatic org.apache.commons.logging.LogSource.logs:Ljava/util/Hashtable;
            aload 0 /* name */
            invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.commons.logging.Log
            astore 1 /* log */
        start local 1 // org.apache.commons.logging.Log log
         1: .line 169
            aload 1 /* log */
            ifnonnull 4
         2: .line 170
            aload 0 /* name */
            invokestatic org.apache.commons.logging.LogSource.makeNewLogInstance:(Ljava/lang/String;)Lorg/apache/commons/logging/Log;
            astore 1 /* log */
         3: .line 171
            getstatic org.apache.commons.logging.LogSource.logs:Ljava/util/Hashtable;
            aload 0 /* name */
            aload 1 /* log */
            invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 173
      StackMap locals: org.apache.commons.logging.Log
      StackMap stack:
            aload 1 /* log */
            areturn
        end local 1 // org.apache.commons.logging.Log log
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  name  Ljava/lang/String;
            1    5     1   log  Lorg/apache/commons/logging/Log;
    MethodParameters:
      Name  Flags
      name  

  public static org.apache.commons.logging.Log getInstance(java.lang.Class);
    descriptor: (Ljava/lang/Class;)Lorg/apache/commons/logging/Log;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 178
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic org.apache.commons.logging.LogSource.getInstance:(Ljava/lang/String;)Lorg/apache/commons/logging/Log;
            areturn
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  clazz  Ljava/lang/Class;
    MethodParameters:
       Name  Flags
      clazz  

  public static org.apache.commons.logging.Log makeNewLogInstance(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/commons/logging/Log;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // java.lang.String name
         0: .line 201
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* name */
            aastore
            astore 2 /* args */
        start local 2 // java.lang.Object[] args
         1: .line 202
            getstatic org.apache.commons.logging.LogSource.logImplctor:Ljava/lang/reflect/Constructor;
            aload 2 /* args */
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.commons.logging.Log
            astore 1 /* log */
        end local 2 // java.lang.Object[] args
        start local 1 // org.apache.commons.logging.Log log
         2: .line 203
            goto 5
        end local 1 // org.apache.commons.logging.Log log
      StackMap locals:
      StackMap stack: java.lang.Throwable
         3: pop
         4: .line 204
            aconst_null
            astore 1 /* log */
        start local 1 // org.apache.commons.logging.Log log
         5: .line 206
      StackMap locals: org.apache.commons.logging.Log
      StackMap stack:
            aload 1 /* log */
            ifnonnull 7
         6: .line 207
            new org.apache.commons.logging.impl.NoOpLog
            dup
            aload 0 /* name */
            invokespecial org.apache.commons.logging.impl.NoOpLog.<init>:(Ljava/lang/String;)V
            astore 1 /* log */
         7: .line 209
      StackMap locals:
      StackMap stack:
            aload 1 /* log */
            areturn
        end local 1 // org.apache.commons.logging.Log log
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  name  Ljava/lang/String;
            2    3     1   log  Lorg/apache/commons/logging/Log;
            5    8     1   log  Lorg/apache/commons/logging/Log;
            1    2     2  args  [Ljava/lang/Object;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.Throwable
    MethodParameters:
      Name  Flags
      name  

  public static java.lang.String[] getLogNames();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 217
            getstatic org.apache.commons.logging.LogSource.logs:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.keySet:()Ljava/util/Set;
            getstatic org.apache.commons.logging.LogSource.logs:Ljava/util/Hashtable;
            invokevirtual java.util.Hashtable.size:()I
            anewarray java.lang.String
            invokeinterface java.util.Set.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "LogSource.java"