public final class org.apache.logging.log4j.spi.ThreadContextMapFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.logging.log4j.spi.ThreadContextMapFactory
  super_class: java.lang.Object
{
  private static final org.apache.logging.log4j.Logger LOGGER;
    descriptor: Lorg/apache/logging/log4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String THREAD_CONTEXT_KEY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "log4j2.threadContextMap"

  private static final java.lang.String GC_FREE_THREAD_CONTEXT_KEY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "log4j2.garbagefree.threadContextMap"

  private static boolean GcFreeThreadContextKey;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static java.lang.String ThreadContextMapName;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 49
            invokestatic org.apache.logging.log4j.status.StatusLogger.getLogger:()Lorg/apache/logging/log4j/status/StatusLogger;
            putstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.LOGGER:Lorg/apache/logging/log4j/Logger;
         1: .line 57
            invokestatic org.apache.logging.log4j.spi.ThreadContextMapFactory.initPrivate:()V
         2: .line 58
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void init();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=0, locals=0, args_size=0
         0: .line 65
            invokestatic org.apache.logging.log4j.spi.CopyOnWriteSortedArrayThreadContextMap.init:()V
         1: .line 66
            invokestatic org.apache.logging.log4j.spi.GarbageFreeSortedArrayThreadContextMap.init:()V
         2: .line 67
            invokestatic org.apache.logging.log4j.spi.DefaultThreadContextMap.init:()V
         3: .line 68
            invokestatic org.apache.logging.log4j.spi.ThreadContextMapFactory.initPrivate:()V
         4: .line 69
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void initPrivate();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 76
            invokestatic org.apache.logging.log4j.util.PropertiesUtil.getProperties:()Lorg/apache/logging/log4j/util/PropertiesUtil;
            astore 0 /* properties */
        start local 0 // org.apache.logging.log4j.util.PropertiesUtil properties
         1: .line 77
            aload 0 /* properties */
            ldc "log4j2.threadContextMap"
            invokevirtual org.apache.logging.log4j.util.PropertiesUtil.getStringProperty:(Ljava/lang/String;)Ljava/lang/String;
            putstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.ThreadContextMapName:Ljava/lang/String;
         2: .line 78
            aload 0 /* properties */
            ldc "log4j2.garbagefree.threadContextMap"
            invokevirtual org.apache.logging.log4j.util.PropertiesUtil.getBooleanProperty:(Ljava/lang/String;)Z
            putstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.GcFreeThreadContextKey:Z
         3: .line 79
            return
        end local 0 // org.apache.logging.log4j.util.PropertiesUtil properties
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            1    4     0  properties  Lorg/apache/logging/log4j/util/PropertiesUtil;

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

  public static org.apache.logging.log4j.spi.ThreadContextMap createThreadContextMap();
    descriptor: ()Lorg/apache/logging/log4j/spi/ThreadContextMap;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=0
         0: .line 85
            invokestatic org.apache.logging.log4j.util.ProviderUtil.findClassLoader:()Ljava/lang/ClassLoader;
            astore 0 /* cl */
        start local 0 // java.lang.ClassLoader cl
         1: .line 86
            aconst_null
            astore 1 /* result */
        start local 1 // org.apache.logging.log4j.spi.ThreadContextMap result
         2: .line 87
            getstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.ThreadContextMapName:Ljava/lang/String;
            ifnull 11
         3: .line 89
            aload 0 /* cl */
            getstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.ThreadContextMapName:Ljava/lang/String;
            invokevirtual java.lang.ClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
            astore 2 /* clazz */
        start local 2 // java.lang.Class clazz
         4: .line 90
            ldc Lorg/apache/logging/log4j/spi/ThreadContextMap;
            aload 2 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifeq 11
         5: .line 91
            aload 2 /* clazz */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast org.apache.logging.log4j.spi.ThreadContextMap
            astore 1 /* result */
        end local 2 // java.lang.Class clazz
         6: .line 93
            goto 11
      StackMap locals: java.lang.ClassLoader org.apache.logging.log4j.spi.ThreadContextMap
      StackMap stack: java.lang.ClassNotFoundException
         7: pop
         8: .line 94
            getstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "Unable to locate configured ThreadContextMap {}"
            getstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.ThreadContextMapName:Ljava/lang/String;
            invokeinterface org.apache.logging.log4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;)V
            goto 11
         9: .line 95
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* ex */
        start local 2 // java.lang.Exception ex
        10: .line 96
            getstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "Unable to create configured ThreadContextMap {}"
            getstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.ThreadContextMapName:Ljava/lang/String;
            aload 2 /* ex */
            invokeinterface org.apache.logging.log4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 2 // java.lang.Exception ex
        11: .line 99
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            ifnonnull 26
            invokestatic org.apache.logging.log4j.util.ProviderUtil.hasProviders:()Z
            ifeq 26
            invokestatic org.apache.logging.log4j.LogManager.getFactory:()Lorg/apache/logging/log4j/spi/LoggerContextFactory;
            ifnull 26
        12: .line 100
            invokestatic org.apache.logging.log4j.LogManager.getFactory:()Lorg/apache/logging/log4j/spi/LoggerContextFactory;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 2 /* factoryClassName */
        start local 2 // java.lang.String factoryClassName
        13: .line 101
            invokestatic org.apache.logging.log4j.util.ProviderUtil.getProviders:()Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 4
            goto 25
      StackMap locals: java.lang.ClassLoader org.apache.logging.log4j.spi.ThreadContextMap java.lang.String top java.util.Iterator
      StackMap stack:
        14: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.logging.log4j.spi.Provider
            astore 3 /* provider */
        start local 3 // org.apache.logging.log4j.spi.Provider provider
        15: .line 102
            aload 2 /* factoryClassName */
            aload 3 /* provider */
            invokevirtual org.apache.logging.log4j.spi.Provider.getClassName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 25
        16: .line 103
            aload 3 /* provider */
            invokevirtual org.apache.logging.log4j.spi.Provider.loadThreadContextMap:()Ljava/lang/Class;
            astore 5 /* clazz */
        start local 5 // java.lang.Class clazz
        17: .line 104
            aload 5 /* clazz */
            ifnull 25
        18: .line 106
            aload 5 /* clazz */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast org.apache.logging.log4j.spi.ThreadContextMap
            astore 1 /* result */
        19: .line 107
            goto 26
        20: .line 108
      StackMap locals: java.lang.ClassLoader org.apache.logging.log4j.spi.ThreadContextMap java.lang.String org.apache.logging.log4j.spi.Provider java.util.Iterator java.lang.Class
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        21: .line 109
            getstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.LOGGER:Lorg/apache/logging/log4j/Logger;
            ldc "Unable to locate or load configured ThreadContextMap {}"
        22: .line 110
            aload 3 /* provider */
            invokevirtual org.apache.logging.log4j.spi.Provider.getThreadContextMap:()Ljava/lang/String;
            aload 6 /* e */
        23: .line 109
            invokeinterface org.apache.logging.log4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        24: .line 111
            invokestatic org.apache.logging.log4j.spi.ThreadContextMapFactory.createDefaultThreadContextMap:()Lorg/apache/logging/log4j/spi/ThreadContextMap;
            astore 1 /* result */
        end local 6 // java.lang.Exception e
        end local 5 // java.lang.Class clazz
        end local 3 // org.apache.logging.log4j.spi.Provider provider
        25: .line 101
      StackMap locals: java.lang.ClassLoader org.apache.logging.log4j.spi.ThreadContextMap java.lang.String top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        end local 2 // java.lang.String factoryClassName
        26: .line 117
      StackMap locals: java.lang.ClassLoader org.apache.logging.log4j.spi.ThreadContextMap
      StackMap stack:
            aload 1 /* result */
            ifnonnull 28
        27: .line 118
            invokestatic org.apache.logging.log4j.spi.ThreadContextMapFactory.createDefaultThreadContextMap:()Lorg/apache/logging/log4j/spi/ThreadContextMap;
            astore 1 /* result */
        28: .line 120
      StackMap locals:
      StackMap stack:
            aload 1 /* result */
            areturn
        end local 1 // org.apache.logging.log4j.spi.ThreadContextMap result
        end local 0 // java.lang.ClassLoader cl
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            1   29     0                cl  Ljava/lang/ClassLoader;
            2   29     1            result  Lorg/apache/logging/log4j/spi/ThreadContextMap;
            4    6     2             clazz  Ljava/lang/Class<*>;
           10   11     2                ex  Ljava/lang/Exception;
           13   26     2  factoryClassName  Ljava/lang/String;
           15   25     3          provider  Lorg/apache/logging/log4j/spi/Provider;
           17   25     5             clazz  Ljava/lang/Class<+Lorg/apache/logging/log4j/spi/ThreadContextMap;>;
           21   25     6                 e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           3     6       7  Class java.lang.ClassNotFoundException
           3     6       9  Class java.lang.Exception
          18    19      20  Class java.lang.Exception

  private static org.apache.logging.log4j.spi.ThreadContextMap createDefaultThreadContextMap();
    descriptor: ()Lorg/apache/logging/log4j/spi/ThreadContextMap;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 124
            getstatic org.apache.logging.log4j.util.Constants.ENABLE_THREADLOCALS:Z
            ifeq 4
         1: .line 125
            getstatic org.apache.logging.log4j.spi.ThreadContextMapFactory.GcFreeThreadContextKey:Z
            ifeq 3
         2: .line 126
            new org.apache.logging.log4j.spi.GarbageFreeSortedArrayThreadContextMap
            dup
            invokespecial org.apache.logging.log4j.spi.GarbageFreeSortedArrayThreadContextMap.<init>:()V
            areturn
         3: .line 128
      StackMap locals:
      StackMap stack:
            new org.apache.logging.log4j.spi.CopyOnWriteSortedArrayThreadContextMap
            dup
            invokespecial org.apache.logging.log4j.spi.CopyOnWriteSortedArrayThreadContextMap.<init>:()V
            areturn
         4: .line 130
      StackMap locals:
      StackMap stack:
            new org.apache.logging.log4j.spi.DefaultThreadContextMap
            dup
            iconst_1
            invokespecial org.apache.logging.log4j.spi.DefaultThreadContextMap.<init>:(Z)V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "ThreadContextMapFactory.java"