public final class org.glassfish.grizzly.ThreadCache
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.glassfish.grizzly.ThreadCache
  super_class: java.lang.Object
{
  private static final org.glassfish.grizzly.ThreadCache$ObjectCacheElement[] INITIAL_OBJECT_ARRAY;
    descriptor: [Lorg/glassfish/grizzly/ThreadCache$ObjectCacheElement;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Map<java.lang.String, org.glassfish.grizzly.ThreadCache$CachedTypeIndex> typeIndexMap;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;>;

  private static int indexCounter;
    descriptor: I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final java.lang.ThreadLocal<org.glassfish.grizzly.ThreadCache$ObjectCache> genericCacheAttr;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Lorg/glassfish/grizzly/ThreadCache$ObjectCache;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 28
            ldc Lorg/glassfish/grizzly/ThreadCache;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.glassfish.grizzly.ThreadCache.$assertionsDisabled:Z
         3: .line 29
            bipush 16
            anewarray org.glassfish.grizzly.ThreadCache$ObjectCacheElement
            putstatic org.glassfish.grizzly.ThreadCache.INITIAL_OBJECT_ARRAY:[Lorg/glassfish/grizzly/ThreadCache$ObjectCacheElement;
         4: .line 32
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
         5: .line 31
            putstatic org.glassfish.grizzly.ThreadCache.typeIndexMap:Ljava/util/Map;
         6: .line 37
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
         7: .line 36
            putstatic org.glassfish.grizzly.ThreadCache.genericCacheAttr:Ljava/lang/ThreadLocal;
         8: .line 37
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.ThreadCache this
         0: .line 28
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.glassfish.grizzly.ThreadCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/ThreadCache;

  public static synchronized <E> org.glassfish.grizzly.ThreadCache$CachedTypeIndex<E> obtainIndex(java.lang.Class<E>, int);
    descriptor: (Ljava/lang/Class;I)Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.Class clazz
        start local 1 // int size
         0: .line 41
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aload 0 /* clazz */
            iload 1 /* size */
            invokestatic org.glassfish.grizzly.ThreadCache.obtainIndex:(Ljava/lang/String;Ljava/lang/Class;I)Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;
            areturn
        end local 1 // int size
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  clazz  Ljava/lang/Class<TE;>;
            0    1     1   size  I
    Signature: <E:Ljava/lang/Object;>(Ljava/lang/Class<TE;>;I)Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;
    MethodParameters:
       Name  Flags
      clazz  
      size   

  public static synchronized <E> org.glassfish.grizzly.ThreadCache$CachedTypeIndex<E> obtainIndex(java.lang.String, java.lang.Class<E>, int);
    descriptor: (Ljava/lang/String;Ljava/lang/Class;I)Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;
    flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // java.lang.String name
        start local 1 // java.lang.Class clazz
        start local 2 // int size
         0: .line 49
            getstatic org.glassfish.grizzly.ThreadCache.typeIndexMap:Ljava/util/Map;
            aload 0 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.glassfish.grizzly.ThreadCache$CachedTypeIndex
            astore 3 /* typeIndex */
        start local 3 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex typeIndex
         1: .line 50
            aload 3 /* typeIndex */
            ifnonnull 4
         2: .line 51
            new org.glassfish.grizzly.ThreadCache$CachedTypeIndex
            dup
            getstatic org.glassfish.grizzly.ThreadCache.indexCounter:I
            dup
            iconst_1
            iadd
            putstatic org.glassfish.grizzly.ThreadCache.indexCounter:I
            aload 0 /* name */
            aload 1 /* clazz */
            iload 2 /* size */
            invokespecial org.glassfish.grizzly.ThreadCache$CachedTypeIndex.<init>:(ILjava/lang/String;Ljava/lang/Class;I)V
            astore 3 /* typeIndex */
         3: .line 52
            getstatic org.glassfish.grizzly.ThreadCache.typeIndexMap:Ljava/util/Map;
            aload 0 /* name */
            aload 3 /* typeIndex */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 55
      StackMap locals: org.glassfish.grizzly.ThreadCache$CachedTypeIndex
      StackMap stack:
            aload 3 /* typeIndex */
            areturn
        end local 3 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex typeIndex
        end local 2 // int size
        end local 1 // java.lang.Class clazz
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       name  Ljava/lang/String;
            0    5     1      clazz  Ljava/lang/Class<TE;>;
            0    5     2       size  I
            1    5     3  typeIndex  Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;
    Signature: <E:Ljava/lang/Object;>(Ljava/lang/String;Ljava/lang/Class<TE;>;I)Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;
    MethodParameters:
       Name  Flags
      name   
      clazz  
      size   

  public static <E> boolean putToCache(org.glassfish.grizzly.ThreadCache$CachedTypeIndex<E>, );
    descriptor: (Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;Ljava/lang/Object;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
        start local 1 // java.lang.Object o
         0: .line 59
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 0 /* index */
            aload 1 /* o */
            invokestatic org.glassfish.grizzly.ThreadCache.putToCache:(Ljava/lang/Thread;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object o
        end local 0 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  index  Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;
            0    1     1      o  TE;
    Signature: <E:Ljava/lang/Object;>(Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;TE;)Z
    MethodParameters:
       Name  Flags
      index  final
      o      final

  public static <E> boolean putToCache(java.lang.Thread, org.glassfish.grizzly.ThreadCache$CachedTypeIndex<E>, );
    descriptor: (Ljava/lang/Thread;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;Ljava/lang/Object;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // java.lang.Thread currentThread
        start local 1 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
        start local 2 // java.lang.Object o
         0: .line 64
            aload 0 /* currentThread */
            instanceof org.glassfish.grizzly.threadpool.DefaultWorkerThread
            ifeq 2
         1: .line 65
            aload 0 /* currentThread */
            checkcast org.glassfish.grizzly.threadpool.DefaultWorkerThread
            aload 1 /* index */
            aload 2 /* o */
            invokevirtual org.glassfish.grizzly.threadpool.DefaultWorkerThread.putToCache:(Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;Ljava/lang/Object;)Z
            ireturn
         2: .line 67
      StackMap locals:
      StackMap stack:
            getstatic org.glassfish.grizzly.ThreadCache.genericCacheAttr:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast org.glassfish.grizzly.ThreadCache$ObjectCache
            astore 3 /* genericCache */
        start local 3 // org.glassfish.grizzly.ThreadCache$ObjectCache genericCache
         3: .line 68
            aload 3 /* genericCache */
            ifnonnull 6
         4: .line 69
            new org.glassfish.grizzly.ThreadCache$ObjectCache
            dup
            invokespecial org.glassfish.grizzly.ThreadCache$ObjectCache.<init>:()V
            astore 3 /* genericCache */
         5: .line 70
            getstatic org.glassfish.grizzly.ThreadCache.genericCacheAttr:Ljava/lang/ThreadLocal;
            aload 3 /* genericCache */
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         6: .line 73
      StackMap locals: org.glassfish.grizzly.ThreadCache$ObjectCache
      StackMap stack:
            aload 3 /* genericCache */
            aload 1 /* index */
            aload 2 /* o */
            invokevirtual org.glassfish.grizzly.ThreadCache$ObjectCache.put:(Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;Ljava/lang/Object;)Z
            ireturn
        end local 3 // org.glassfish.grizzly.ThreadCache$ObjectCache genericCache
        end local 2 // java.lang.Object o
        end local 1 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
        end local 0 // java.lang.Thread currentThread
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0  currentThread  Ljava/lang/Thread;
            0    7     1          index  Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;
            0    7     2              o  TE;
            3    7     3   genericCache  Lorg/glassfish/grizzly/ThreadCache$ObjectCache;
    Signature: <E:Ljava/lang/Object;>(Ljava/lang/Thread;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;TE;)Z
    MethodParameters:
               Name  Flags
      currentThread  final
      index          final
      o              final

  public static <E> E getFromCache(org.glassfish.grizzly.ThreadCache$CachedTypeIndex<E>);
    descriptor: (Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
         0: .line 87
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 0 /* index */
            invokestatic org.glassfish.grizzly.ThreadCache.getFromCache:(Ljava/lang/Thread;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
            areturn
        end local 0 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  index  Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;
    Signature: <E:Ljava/lang/Object;>(Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;)TE;
    MethodParameters:
       Name  Flags
      index  final

  public static <E> E getFromCache(java.lang.Thread, org.glassfish.grizzly.ThreadCache$CachedTypeIndex<E>);
    descriptor: (Ljava/lang/Thread;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Thread currentThread
        start local 1 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
         0: .line 102
            getstatic org.glassfish.grizzly.ThreadCache.$assertionsDisabled:Z
            ifne 1
            aload 0 /* currentThread */
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            if_acmpeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* currentThread */
            instanceof org.glassfish.grizzly.threadpool.DefaultWorkerThread
            ifeq 3
         2: .line 105
            aload 0 /* currentThread */
            checkcast org.glassfish.grizzly.threadpool.DefaultWorkerThread
            aload 1 /* index */
            invokevirtual org.glassfish.grizzly.threadpool.DefaultWorkerThread.getFromCache:(Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
            areturn
         3: .line 107
      StackMap locals:
      StackMap stack:
            getstatic org.glassfish.grizzly.ThreadCache.genericCacheAttr:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast org.glassfish.grizzly.ThreadCache$ObjectCache
            astore 2 /* genericCache */
        start local 2 // org.glassfish.grizzly.ThreadCache$ObjectCache genericCache
         4: .line 108
            aload 2 /* genericCache */
            ifnull 6
         5: .line 109
            aload 2 /* genericCache */
            aload 1 /* index */
            invokevirtual org.glassfish.grizzly.ThreadCache$ObjectCache.get:(Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
            areturn
         6: .line 112
      StackMap locals: org.glassfish.grizzly.ThreadCache$ObjectCache
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.glassfish.grizzly.ThreadCache$ObjectCache genericCache
        end local 1 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
        end local 0 // java.lang.Thread currentThread
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0  currentThread  Ljava/lang/Thread;
            0    7     1          index  Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;
            4    7     2   genericCache  Lorg/glassfish/grizzly/ThreadCache$ObjectCache;
    Signature: <E:Ljava/lang/Object;>(Ljava/lang/Thread;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;)TE;
    MethodParameters:
               Name  Flags
      currentThread  final
      index          final

  public static <E> E takeFromCache(org.glassfish.grizzly.ThreadCache$CachedTypeIndex<E>);
    descriptor: (Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
         0: .line 126
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 0 /* index */
            invokestatic org.glassfish.grizzly.ThreadCache.takeFromCache:(Ljava/lang/Thread;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
            areturn
        end local 0 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  index  Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;
    Signature: <E:Ljava/lang/Object;>(Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;)TE;
    MethodParameters:
       Name  Flags
      index  final

  public static <E> E takeFromCache(java.lang.Thread, org.glassfish.grizzly.ThreadCache$CachedTypeIndex<E>);
    descriptor: (Ljava/lang/Thread;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Thread currentThread
        start local 1 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
         0: .line 141
            aload 0 /* currentThread */
            instanceof org.glassfish.grizzly.threadpool.DefaultWorkerThread
            ifeq 2
         1: .line 142
            aload 0 /* currentThread */
            checkcast org.glassfish.grizzly.threadpool.DefaultWorkerThread
            aload 1 /* index */
            invokevirtual org.glassfish.grizzly.threadpool.DefaultWorkerThread.takeFromCache:(Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
            areturn
         2: .line 144
      StackMap locals:
      StackMap stack:
            getstatic org.glassfish.grizzly.ThreadCache.genericCacheAttr:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast org.glassfish.grizzly.ThreadCache$ObjectCache
            astore 2 /* genericCache */
        start local 2 // org.glassfish.grizzly.ThreadCache$ObjectCache genericCache
         3: .line 145
            aload 2 /* genericCache */
            ifnull 5
         4: .line 146
            aload 2 /* genericCache */
            aload 1 /* index */
            invokevirtual org.glassfish.grizzly.ThreadCache$ObjectCache.take:(Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex;)Ljava/lang/Object;
            areturn
         5: .line 149
      StackMap locals: org.glassfish.grizzly.ThreadCache$ObjectCache
      StackMap stack:
            aconst_null
            areturn
        end local 2 // org.glassfish.grizzly.ThreadCache$ObjectCache genericCache
        end local 1 // org.glassfish.grizzly.ThreadCache$CachedTypeIndex index
        end local 0 // java.lang.Thread currentThread
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0  currentThread  Ljava/lang/Thread;
            0    6     1          index  Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;
            3    6     2   genericCache  Lorg/glassfish/grizzly/ThreadCache$ObjectCache;
    Signature: <E:Ljava/lang/Object;>(Ljava/lang/Thread;Lorg/glassfish/grizzly/ThreadCache$CachedTypeIndex<TE;>;)TE;
    MethodParameters:
               Name  Flags
      currentThread  final
      index          final
}
SourceFile: "ThreadCache.java"
NestMembers:
  org.glassfish.grizzly.ThreadCache$CachedTypeIndex  org.glassfish.grizzly.ThreadCache$ObjectCache  org.glassfish.grizzly.ThreadCache$ObjectCacheElement
InnerClasses:
  public final CachedTypeIndex = org.glassfish.grizzly.ThreadCache$CachedTypeIndex of org.glassfish.grizzly.ThreadCache
  public final ObjectCache = org.glassfish.grizzly.ThreadCache$ObjectCache of org.glassfish.grizzly.ThreadCache
  public final ObjectCacheElement = org.glassfish.grizzly.ThreadCache$ObjectCacheElement of org.glassfish.grizzly.ThreadCache