final class io.netty.buffer.PoolThreadCache
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: io.netty.buffer.PoolThreadCache
  super_class: java.lang.Object
{
  private static final io.netty.util.internal.logging.InternalLogger logger;
    descriptor: Lio/netty/util/internal/logging/InternalLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  final io.netty.buffer.PoolArena<byte[]> heapArena;
    descriptor: Lio/netty/buffer/PoolArena;
    flags: (0x0010) ACC_FINAL
    Signature: Lio/netty/buffer/PoolArena<[B>;

  final io.netty.buffer.PoolArena<java.nio.ByteBuffer> directArena;
    descriptor: Lio/netty/buffer/PoolArena;
    flags: (0x0010) ACC_FINAL
    Signature: Lio/netty/buffer/PoolArena<Ljava/nio/ByteBuffer;>;

  private final io.netty.buffer.PoolThreadCache$MemoryRegionCache<byte[]> tinySubPageHeapCaches;
    descriptor: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<[B>;

  private final io.netty.buffer.PoolThreadCache$MemoryRegionCache<byte[]> smallSubPageHeapCaches;
    descriptor: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<[B>;

  private final io.netty.buffer.PoolThreadCache$MemoryRegionCache<java.nio.ByteBuffer>[] tinySubPageDirectCaches;
    descriptor: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<Ljava/nio/ByteBuffer;>;

  private final io.netty.buffer.PoolThreadCache$MemoryRegionCache<java.nio.ByteBuffer>[] smallSubPageDirectCaches;
    descriptor: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<Ljava/nio/ByteBuffer;>;

  private final io.netty.buffer.PoolThreadCache$MemoryRegionCache<byte[]> normalHeapCaches;
    descriptor: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<[B>;

  private final io.netty.buffer.PoolThreadCache$MemoryRegionCache<java.nio.ByteBuffer>[] normalDirectCaches;
    descriptor: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<Ljava/nio/ByteBuffer;>;

  private final int numShiftsNormalDirect;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int numShiftsNormalHeap;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int freeSweepAllocationThreshold;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int allocations;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private static volatile int[] $SWITCH_TABLE$io$netty$buffer$PoolArena$SizeClass;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 40
            ldc Lio/netty/buffer/PoolThreadCache;
            invokestatic io.netty.util.internal.logging.InternalLoggerFactory.getInstance:(Ljava/lang/Class;)Lio/netty/util/internal/logging/InternalLogger;
            putstatic io.netty.buffer.PoolThreadCache.logger:Lio/netty/util/internal/logging/InternalLogger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(io.netty.buffer.PoolArena<byte[]>, io.netty.buffer.PoolArena<java.nio.ByteBuffer>, int, int, int, int, );
    descriptor: (Lio/netty/buffer/PoolArena;Lio/netty/buffer/PoolArena;IIIII)V
    flags: (0x0000) 
    Code:
      stack=5, locals=8, args_size=8
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolArena heapArena
        start local 2 // io.netty.buffer.PoolArena directArena
        start local 3 // int tinyCacheSize
        start local 4 // int smallCacheSize
        start local 5 // int normalCacheSize
        start local 6 // int maxCachedBufferCapacity
        start local 7 // int freeSweepAllocationThreshold
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 66
            iload 6 /* maxCachedBufferCapacity */
            ifge 5
         2: .line 67
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "maxCachedBufferCapacity: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         3: .line 68
            iload 6 /* maxCachedBufferCapacity */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " (expected: >= 0)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 67
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 70
      StackMap locals: io.netty.buffer.PoolThreadCache io.netty.buffer.PoolArena io.netty.buffer.PoolArena int int int int int
      StackMap stack:
            aload 0 /* this */
            iload 7 /* freeSweepAllocationThreshold */
            putfield io.netty.buffer.PoolThreadCache.freeSweepAllocationThreshold:I
         6: .line 71
            aload 0 /* this */
            aload 1 /* heapArena */
            putfield io.netty.buffer.PoolThreadCache.heapArena:Lio/netty/buffer/PoolArena;
         7: .line 72
            aload 0 /* this */
            aload 2 /* directArena */
            putfield io.netty.buffer.PoolThreadCache.directArena:Lio/netty/buffer/PoolArena;
         8: .line 73
            aload 2 /* directArena */
            ifnull 21
         9: .line 74
            aload 0 /* this */
        10: .line 75
            iload 3 /* tinyCacheSize */
            bipush 32
            getstatic io.netty.buffer.PoolArena$SizeClass.Tiny:Lio/netty/buffer/PoolArena$SizeClass;
        11: .line 74
            invokestatic io.netty.buffer.PoolThreadCache.createSubPageCaches:(IILio/netty/buffer/PoolArena$SizeClass;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            putfield io.netty.buffer.PoolThreadCache.tinySubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        12: .line 76
            aload 0 /* this */
        13: .line 77
            iload 4 /* smallCacheSize */
            aload 2 /* directArena */
            getfield io.netty.buffer.PoolArena.numSmallSubpagePools:I
            getstatic io.netty.buffer.PoolArena$SizeClass.Small:Lio/netty/buffer/PoolArena$SizeClass;
        14: .line 76
            invokestatic io.netty.buffer.PoolThreadCache.createSubPageCaches:(IILio/netty/buffer/PoolArena$SizeClass;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            putfield io.netty.buffer.PoolThreadCache.smallSubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        15: .line 79
            aload 0 /* this */
            aload 2 /* directArena */
            getfield io.netty.buffer.PoolArena.pageSize:I
            invokestatic io.netty.buffer.PoolThreadCache.log2:(I)I
            putfield io.netty.buffer.PoolThreadCache.numShiftsNormalDirect:I
        16: .line 80
            aload 0 /* this */
        17: .line 81
            iload 5 /* normalCacheSize */
            iload 6 /* maxCachedBufferCapacity */
            aload 2 /* directArena */
        18: .line 80
            invokestatic io.netty.buffer.PoolThreadCache.createNormalCaches:(IILio/netty/buffer/PoolArena;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            putfield io.netty.buffer.PoolThreadCache.normalDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        19: .line 83
            aload 2 /* directArena */
            getfield io.netty.buffer.PoolArena.numThreadCaches:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndIncrement:()I
            pop
        20: .line 84
            goto 25
        21: .line 86
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.netty.buffer.PoolThreadCache.tinySubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        22: .line 87
            aload 0 /* this */
            aconst_null
            putfield io.netty.buffer.PoolThreadCache.smallSubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        23: .line 88
            aload 0 /* this */
            aconst_null
            putfield io.netty.buffer.PoolThreadCache.normalDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        24: .line 89
            aload 0 /* this */
            iconst_m1
            putfield io.netty.buffer.PoolThreadCache.numShiftsNormalDirect:I
        25: .line 91
      StackMap locals:
      StackMap stack:
            aload 1 /* heapArena */
            ifnull 38
        26: .line 93
            aload 0 /* this */
        27: .line 94
            iload 3 /* tinyCacheSize */
            bipush 32
            getstatic io.netty.buffer.PoolArena$SizeClass.Tiny:Lio/netty/buffer/PoolArena$SizeClass;
        28: .line 93
            invokestatic io.netty.buffer.PoolThreadCache.createSubPageCaches:(IILio/netty/buffer/PoolArena$SizeClass;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            putfield io.netty.buffer.PoolThreadCache.tinySubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        29: .line 95
            aload 0 /* this */
        30: .line 96
            iload 4 /* smallCacheSize */
            aload 1 /* heapArena */
            getfield io.netty.buffer.PoolArena.numSmallSubpagePools:I
            getstatic io.netty.buffer.PoolArena$SizeClass.Small:Lio/netty/buffer/PoolArena$SizeClass;
        31: .line 95
            invokestatic io.netty.buffer.PoolThreadCache.createSubPageCaches:(IILio/netty/buffer/PoolArena$SizeClass;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            putfield io.netty.buffer.PoolThreadCache.smallSubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        32: .line 98
            aload 0 /* this */
            aload 1 /* heapArena */
            getfield io.netty.buffer.PoolArena.pageSize:I
            invokestatic io.netty.buffer.PoolThreadCache.log2:(I)I
            putfield io.netty.buffer.PoolThreadCache.numShiftsNormalHeap:I
        33: .line 99
            aload 0 /* this */
        34: .line 100
            iload 5 /* normalCacheSize */
            iload 6 /* maxCachedBufferCapacity */
            aload 1 /* heapArena */
        35: .line 99
            invokestatic io.netty.buffer.PoolThreadCache.createNormalCaches:(IILio/netty/buffer/PoolArena;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            putfield io.netty.buffer.PoolThreadCache.normalHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        36: .line 102
            aload 1 /* heapArena */
            getfield io.netty.buffer.PoolArena.numThreadCaches:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndIncrement:()I
            pop
        37: .line 103
            goto 42
        38: .line 105
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield io.netty.buffer.PoolThreadCache.tinySubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        39: .line 106
            aload 0 /* this */
            aconst_null
            putfield io.netty.buffer.PoolThreadCache.smallSubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        40: .line 107
            aload 0 /* this */
            aconst_null
            putfield io.netty.buffer.PoolThreadCache.normalHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
        41: .line 108
            aload 0 /* this */
            iconst_m1
            putfield io.netty.buffer.PoolThreadCache.numShiftsNormalHeap:I
        42: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.tinySubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            ifnonnull 44
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.smallSubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            ifnonnull 44
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.normalDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            ifnonnull 44
        43: .line 113
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.tinySubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            ifnonnull 44
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.smallSubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            ifnonnull 44
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.normalHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            ifnull 48
        44: .line 114
      StackMap locals:
      StackMap stack:
            iload 7 /* freeSweepAllocationThreshold */
            iconst_1
            if_icmpge 48
        45: .line 115
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "freeSweepAllocationThreshold: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        46: .line 116
            iload 7 /* freeSweepAllocationThreshold */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " (expected: > 0)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        47: .line 115
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 118
      StackMap locals:
      StackMap stack:
            return
        end local 7 // int freeSweepAllocationThreshold
        end local 6 // int maxCachedBufferCapacity
        end local 5 // int normalCacheSize
        end local 4 // int smallCacheSize
        end local 3 // int tinyCacheSize
        end local 2 // io.netty.buffer.PoolArena directArena
        end local 1 // io.netty.buffer.PoolArena heapArena
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   49     0                          this  Lio/netty/buffer/PoolThreadCache;
            0   49     1                     heapArena  Lio/netty/buffer/PoolArena<[B>;
            0   49     2                   directArena  Lio/netty/buffer/PoolArena<Ljava/nio/ByteBuffer;>;
            0   49     3                 tinyCacheSize  I
            0   49     4                smallCacheSize  I
            0   49     5               normalCacheSize  I
            0   49     6       maxCachedBufferCapacity  I
            0   49     7  freeSweepAllocationThreshold  I
    Signature: (Lio/netty/buffer/PoolArena<[B>;Lio/netty/buffer/PoolArena<Ljava/nio/ByteBuffer;>;IIIII)V
    MethodParameters:
                              Name  Flags
      heapArena                     
      directArena                   
      tinyCacheSize                 
      smallCacheSize                
      normalCacheSize               
      maxCachedBufferCapacity       
      freeSweepAllocationThreshold  

  private static <T> io.netty.buffer.PoolThreadCache$MemoryRegionCache<T>[] createSubPageCaches(int, int, io.netty.buffer.PoolArena$SizeClass);
    descriptor: (IILio/netty/buffer/PoolArena$SizeClass;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // int cacheSize
        start local 1 // int numCaches
        start local 2 // io.netty.buffer.PoolArena$SizeClass sizeClass
         0: .line 122
            iload 0 /* cacheSize */
            ifle 8
            iload 1 /* numCaches */
            ifle 8
         1: .line 124
            iload 1 /* numCaches */
            anewarray io.netty.buffer.PoolThreadCache$MemoryRegionCache
            astore 3 /* cache */
        start local 3 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] cache
         2: .line 125
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         3: goto 6
         4: .line 127
      StackMap locals: io.netty.buffer.PoolThreadCache$MemoryRegionCache[] int
      StackMap stack:
            aload 3 /* cache */
            iload 4 /* i */
            new io.netty.buffer.PoolThreadCache$SubPageMemoryRegionCache
            dup
            iload 0 /* cacheSize */
            aload 2 /* sizeClass */
            invokespecial io.netty.buffer.PoolThreadCache$SubPageMemoryRegionCache.<init>:(ILio/netty/buffer/PoolArena$SizeClass;)V
            aastore
         5: .line 125
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 4 /* i */
            aload 3 /* cache */
            arraylength
            if_icmplt 4
        end local 4 // int i
         7: .line 129
            aload 3 /* cache */
            areturn
        end local 3 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] cache
         8: .line 131
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 2 // io.netty.buffer.PoolArena$SizeClass sizeClass
        end local 1 // int numCaches
        end local 0 // int cacheSize
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0  cacheSize  I
            0    9     1  numCaches  I
            0    9     2  sizeClass  Lio/netty/buffer/PoolArena$SizeClass;
            2    8     3      cache  [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            3    7     4          i  I
    Signature: <T:Ljava/lang/Object;>(IILio/netty/buffer/PoolArena$SizeClass;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<TT;>;
    MethodParameters:
           Name  Flags
      cacheSize  
      numCaches  
      sizeClass  

  private static <T> io.netty.buffer.PoolThreadCache$MemoryRegionCache<T>[] createNormalCaches(int, int, io.netty.buffer.PoolArena<T>);
    descriptor: (IILio/netty/buffer/PoolArena;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // int cacheSize
        start local 1 // int maxCachedBufferCapacity
        start local 2 // io.netty.buffer.PoolArena area
         0: .line 137
            iload 0 /* cacheSize */
            ifle 10
            iload 1 /* maxCachedBufferCapacity */
            ifle 10
         1: .line 138
            aload 2 /* area */
            getfield io.netty.buffer.PoolArena.chunkSize:I
            iload 1 /* maxCachedBufferCapacity */
            invokestatic java.lang.Math.min:(II)I
            istore 3 /* max */
        start local 3 // int max
         2: .line 139
            iconst_1
            iload 3 /* max */
            aload 2 /* area */
            getfield io.netty.buffer.PoolArena.pageSize:I
            idiv
            invokestatic io.netty.buffer.PoolThreadCache.log2:(I)I
            iconst_1
            iadd
            invokestatic java.lang.Math.max:(II)I
            istore 4 /* arraySize */
        start local 4 // int arraySize
         3: .line 142
            iload 4 /* arraySize */
            anewarray io.netty.buffer.PoolThreadCache$MemoryRegionCache
            astore 5 /* cache */
        start local 5 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] cache
         4: .line 143
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 8
         6: .line 144
      StackMap locals: int int io.netty.buffer.PoolArena int int io.netty.buffer.PoolThreadCache$MemoryRegionCache[] int
      StackMap stack:
            aload 5 /* cache */
            iload 6 /* i */
            new io.netty.buffer.PoolThreadCache$NormalMemoryRegionCache
            dup
            iload 0 /* cacheSize */
            invokespecial io.netty.buffer.PoolThreadCache$NormalMemoryRegionCache.<init>:(I)V
            aastore
         7: .line 143
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 6 /* i */
            aload 5 /* cache */
            arraylength
            if_icmplt 6
        end local 6 // int i
         9: .line 146
            aload 5 /* cache */
            areturn
        end local 5 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] cache
        end local 4 // int arraySize
        end local 3 // int max
        10: .line 148
      StackMap locals: int int io.netty.buffer.PoolArena
      StackMap stack:
            aconst_null
            areturn
        end local 2 // io.netty.buffer.PoolArena area
        end local 1 // int maxCachedBufferCapacity
        end local 0 // int cacheSize
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   11     0                cacheSize  I
            0   11     1  maxCachedBufferCapacity  I
            0   11     2                     area  Lio/netty/buffer/PoolArena<TT;>;
            2   10     3                      max  I
            3   10     4                arraySize  I
            4   10     5                    cache  [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            5    9     6                        i  I
    Signature: <T:Ljava/lang/Object;>(IILio/netty/buffer/PoolArena<TT;>;)[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<TT;>;
    MethodParameters:
                         Name  Flags
      cacheSize                
      maxCachedBufferCapacity  
      area                     

  private static int log2(int);
    descriptor: (I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // int val
         0: .line 153
            iconst_0
            istore 1 /* res */
        start local 1 // int res
         1: .line 154
            goto 4
         2: .line 155
      StackMap locals: int
      StackMap stack:
            iload 0 /* val */
            iconst_1
            ishr
            istore 0 /* val */
         3: .line 156
            iinc 1 /* res */ 1
         4: .line 154
      StackMap locals:
      StackMap stack:
            iload 0 /* val */
            iconst_1
            if_icmpgt 2
         5: .line 158
            iload 1 /* res */
            ireturn
        end local 1 // int res
        end local 0 // int val
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0   val  I
            1    6     1   res  I
    MethodParameters:
      Name  Flags
      val   

  boolean allocateTiny(io.netty.buffer.PoolArena<?>, io.netty.buffer.PooledByteBuf<?>, int, );
    descriptor: (Lio/netty/buffer/PoolArena;Lio/netty/buffer/PooledByteBuf;II)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolArena area
        start local 2 // io.netty.buffer.PooledByteBuf buf
        start local 3 // int reqCapacity
        start local 4 // int normCapacity
         0: .line 165
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* area */
            iload 4 /* normCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache.cacheForTiny:(Lio/netty/buffer/PoolArena;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            aload 2 /* buf */
            iload 3 /* reqCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache.allocate:(Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;Lio/netty/buffer/PooledByteBuf;I)Z
            ireturn
        end local 4 // int normCapacity
        end local 3 // int reqCapacity
        end local 2 // io.netty.buffer.PooledByteBuf buf
        end local 1 // io.netty.buffer.PoolArena area
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lio/netty/buffer/PoolThreadCache;
            0    1     1          area  Lio/netty/buffer/PoolArena<*>;
            0    1     2           buf  Lio/netty/buffer/PooledByteBuf<*>;
            0    1     3   reqCapacity  I
            0    1     4  normCapacity  I
    Signature: (Lio/netty/buffer/PoolArena<*>;Lio/netty/buffer/PooledByteBuf<*>;II)Z
    MethodParameters:
              Name  Flags
      area          
      buf           
      reqCapacity   
      normCapacity  

  boolean allocateSmall(io.netty.buffer.PoolArena<?>, io.netty.buffer.PooledByteBuf<?>, int, );
    descriptor: (Lio/netty/buffer/PoolArena;Lio/netty/buffer/PooledByteBuf;II)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolArena area
        start local 2 // io.netty.buffer.PooledByteBuf buf
        start local 3 // int reqCapacity
        start local 4 // int normCapacity
         0: .line 172
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* area */
            iload 4 /* normCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache.cacheForSmall:(Lio/netty/buffer/PoolArena;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            aload 2 /* buf */
            iload 3 /* reqCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache.allocate:(Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;Lio/netty/buffer/PooledByteBuf;I)Z
            ireturn
        end local 4 // int normCapacity
        end local 3 // int reqCapacity
        end local 2 // io.netty.buffer.PooledByteBuf buf
        end local 1 // io.netty.buffer.PoolArena area
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lio/netty/buffer/PoolThreadCache;
            0    1     1          area  Lio/netty/buffer/PoolArena<*>;
            0    1     2           buf  Lio/netty/buffer/PooledByteBuf<*>;
            0    1     3   reqCapacity  I
            0    1     4  normCapacity  I
    Signature: (Lio/netty/buffer/PoolArena<*>;Lio/netty/buffer/PooledByteBuf<*>;II)Z
    MethodParameters:
              Name  Flags
      area          
      buf           
      reqCapacity   
      normCapacity  

  boolean allocateNormal(io.netty.buffer.PoolArena<?>, io.netty.buffer.PooledByteBuf<?>, int, );
    descriptor: (Lio/netty/buffer/PoolArena;Lio/netty/buffer/PooledByteBuf;II)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolArena area
        start local 2 // io.netty.buffer.PooledByteBuf buf
        start local 3 // int reqCapacity
        start local 4 // int normCapacity
         0: .line 179
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* area */
            iload 4 /* normCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache.cacheForNormal:(Lio/netty/buffer/PoolArena;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            aload 2 /* buf */
            iload 3 /* reqCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache.allocate:(Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;Lio/netty/buffer/PooledByteBuf;I)Z
            ireturn
        end local 4 // int normCapacity
        end local 3 // int reqCapacity
        end local 2 // io.netty.buffer.PooledByteBuf buf
        end local 1 // io.netty.buffer.PoolArena area
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    1     0          this  Lio/netty/buffer/PoolThreadCache;
            0    1     1          area  Lio/netty/buffer/PoolArena<*>;
            0    1     2           buf  Lio/netty/buffer/PooledByteBuf<*>;
            0    1     3   reqCapacity  I
            0    1     4  normCapacity  I
    Signature: (Lio/netty/buffer/PoolArena<*>;Lio/netty/buffer/PooledByteBuf<*>;II)Z
    MethodParameters:
              Name  Flags
      area          
      buf           
      reqCapacity   
      normCapacity  

  private boolean allocate(io.netty.buffer.PoolThreadCache$MemoryRegionCache<?>, io.netty.buffer.PooledByteBuf, );
    descriptor: (Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;Lio/netty/buffer/PooledByteBuf;I)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolThreadCache$MemoryRegionCache cache
        start local 2 // io.netty.buffer.PooledByteBuf buf
        start local 3 // int reqCapacity
         0: .line 184
            aload 1 /* cache */
            ifnonnull 2
         1: .line 186
            iconst_0
            ireturn
         2: .line 188
      StackMap locals:
      StackMap stack:
            aload 1 /* cache */
            aload 2 /* buf */
            iload 3 /* reqCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache$MemoryRegionCache.allocate:(Lio/netty/buffer/PooledByteBuf;I)Z
            istore 4 /* allocated */
        start local 4 // boolean allocated
         3: .line 189
            aload 0 /* this */
            dup
            getfield io.netty.buffer.PoolThreadCache.allocations:I
            iconst_1
            iadd
            dup_x1
            putfield io.netty.buffer.PoolThreadCache.allocations:I
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.freeSweepAllocationThreshold:I
            if_icmplt 6
         4: .line 190
            aload 0 /* this */
            iconst_0
            putfield io.netty.buffer.PoolThreadCache.allocations:I
         5: .line 191
            aload 0 /* this */
            invokevirtual io.netty.buffer.PoolThreadCache.trim:()V
         6: .line 193
      StackMap locals: int
      StackMap stack:
            iload 4 /* allocated */
            ireturn
        end local 4 // boolean allocated
        end local 3 // int reqCapacity
        end local 2 // io.netty.buffer.PooledByteBuf buf
        end local 1 // io.netty.buffer.PoolThreadCache$MemoryRegionCache cache
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Lio/netty/buffer/PoolThreadCache;
            0    7     1        cache  Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
            0    7     2          buf  Lio/netty/buffer/PooledByteBuf;
            0    7     3  reqCapacity  I
            3    7     4    allocated  Z
    Signature: (Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;Lio/netty/buffer/PooledByteBuf;I)Z
    MethodParameters:
             Name  Flags
      cache        
      buf          
      reqCapacity  

  boolean add(io.netty.buffer.PoolArena<?>, io.netty.buffer.PoolChunk, long, int, io.netty.buffer.PoolArena$SizeClass);
    descriptor: (Lio/netty/buffer/PoolArena;Lio/netty/buffer/PoolChunk;JILio/netty/buffer/PoolArena$SizeClass;)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=8, args_size=6
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolArena area
        start local 2 // io.netty.buffer.PoolChunk chunk
        start local 3 // long handle
        start local 5 // int normCapacity
        start local 6 // io.netty.buffer.PoolArena$SizeClass sizeClass
         0: .line 202
            aload 0 /* this */
            aload 1 /* area */
            iload 5 /* normCapacity */
            aload 6 /* sizeClass */
            invokevirtual io.netty.buffer.PoolThreadCache.cache:(Lio/netty/buffer/PoolArena;ILio/netty/buffer/PoolArena$SizeClass;)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            astore 7 /* cache */
        start local 7 // io.netty.buffer.PoolThreadCache$MemoryRegionCache cache
         1: .line 203
            aload 7 /* cache */
            ifnonnull 3
         2: .line 204
            iconst_0
            ireturn
         3: .line 206
      StackMap locals: io.netty.buffer.PoolThreadCache$MemoryRegionCache
      StackMap stack:
            aload 7 /* cache */
            aload 2 /* chunk */
            lload 3 /* handle */
            invokevirtual io.netty.buffer.PoolThreadCache$MemoryRegionCache.add:(Lio/netty/buffer/PoolChunk;J)Z
            ireturn
        end local 7 // io.netty.buffer.PoolThreadCache$MemoryRegionCache cache
        end local 6 // io.netty.buffer.PoolArena$SizeClass sizeClass
        end local 5 // int normCapacity
        end local 3 // long handle
        end local 2 // io.netty.buffer.PoolChunk chunk
        end local 1 // io.netty.buffer.PoolArena area
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lio/netty/buffer/PoolThreadCache;
            0    4     1          area  Lio/netty/buffer/PoolArena<*>;
            0    4     2         chunk  Lio/netty/buffer/PoolChunk;
            0    4     3        handle  J
            0    4     5  normCapacity  I
            0    4     6     sizeClass  Lio/netty/buffer/PoolArena$SizeClass;
            1    4     7         cache  Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
    Signature: (Lio/netty/buffer/PoolArena<*>;Lio/netty/buffer/PoolChunk;JILio/netty/buffer/PoolArena$SizeClass;)Z
    MethodParameters:
              Name  Flags
      area          
      chunk         
      handle        
      normCapacity  
      sizeClass     

  private io.netty.buffer.PoolThreadCache$MemoryRegionCache<?> cache(io.netty.buffer.PoolArena<?>, int, io.netty.buffer.PoolArena$SizeClass);
    descriptor: (Lio/netty/buffer/PoolArena;ILio/netty/buffer/PoolArena$SizeClass;)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolArena area
        start local 2 // int normCapacity
        start local 3 // io.netty.buffer.PoolArena$SizeClass sizeClass
         0: .line 210
            invokestatic io.netty.buffer.PoolThreadCache.$SWITCH_TABLE$io$netty$buffer$PoolArena$SizeClass:()[I
            aload 3 /* sizeClass */
            invokevirtual io.netty.buffer.PoolArena$SizeClass.ordinal:()I
            iaload
            tableswitch { // 1 - 3
                    1: 3
                    2: 2
                    3: 1
              default: 4
          }
         1: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* area */
            iload 2 /* normCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache.cacheForNormal:(Lio/netty/buffer/PoolArena;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            areturn
         2: .line 214
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* area */
            iload 2 /* normCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache.cacheForSmall:(Lio/netty/buffer/PoolArena;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            areturn
         3: .line 216
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* area */
            iload 2 /* normCapacity */
            invokevirtual io.netty.buffer.PoolThreadCache.cacheForTiny:(Lio/netty/buffer/PoolArena;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            areturn
         4: .line 218
      StackMap locals:
      StackMap stack:
            new java.lang.Error
            dup
            invokespecial java.lang.Error.<init>:()V
            athrow
        end local 3 // io.netty.buffer.PoolArena$SizeClass sizeClass
        end local 2 // int normCapacity
        end local 1 // io.netty.buffer.PoolArena area
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lio/netty/buffer/PoolThreadCache;
            0    5     1          area  Lio/netty/buffer/PoolArena<*>;
            0    5     2  normCapacity  I
            0    5     3     sizeClass  Lio/netty/buffer/PoolArena$SizeClass;
    Signature: (Lio/netty/buffer/PoolArena<*>;ILio/netty/buffer/PoolArena$SizeClass;)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
    MethodParameters:
              Name  Flags
      area          
      normCapacity  
      sizeClass     

  void free();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // io.netty.buffer.PoolThreadCache this
         0: .line 226
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.tinySubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.free:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)I
         1: .line 227
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.smallSubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.free:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)I
         2: .line 226
            iadd
         3: .line 228
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.normalDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.free:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)I
         4: .line 226
            iadd
         5: .line 229
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.tinySubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.free:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)I
         6: .line 226
            iadd
         7: .line 230
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.smallSubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.free:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)I
         8: .line 226
            iadd
         9: .line 231
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.normalHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.free:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)I
        10: .line 226
            iadd
            istore 1 /* numFreed */
        start local 1 // int numFreed
        11: .line 233
            iload 1 /* numFreed */
            ifle 13
            getstatic io.netty.buffer.PoolThreadCache.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isDebugEnabled:()Z
            ifeq 13
        12: .line 234
            getstatic io.netty.buffer.PoolThreadCache.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "Freed {} thread-local buffer(s) from thread: {}"
            iload 1 /* numFreed */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
            invokeinterface io.netty.util.internal.logging.InternalLogger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        13: .line 237
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.directArena:Lio/netty/buffer/PoolArena;
            ifnull 15
        14: .line 238
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.directArena:Lio/netty/buffer/PoolArena;
            getfield io.netty.buffer.PoolArena.numThreadCaches:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndDecrement:()I
            pop
        15: .line 241
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.heapArena:Lio/netty/buffer/PoolArena;
            ifnull 17
        16: .line 242
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.heapArena:Lio/netty/buffer/PoolArena;
            getfield io.netty.buffer.PoolArena.numThreadCaches:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.getAndDecrement:()I
            pop
        17: .line 244
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int numFreed
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   18     0      this  Lio/netty/buffer/PoolThreadCache;
           11   18     1  numFreed  I

  private static int free(io.netty.buffer.PoolThreadCache$MemoryRegionCache<?>[]);
    descriptor: ([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] caches
         0: .line 247
            aload 0 /* caches */
            ifnonnull 2
         1: .line 248
            iconst_0
            ireturn
         2: .line 251
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* numFreed */
        start local 1 // int numFreed
         3: .line 252
            aload 0 /* caches */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 7
      StackMap locals: io.netty.buffer.PoolThreadCache$MemoryRegionCache[] int top int int io.netty.buffer.PoolThreadCache$MemoryRegionCache[]
      StackMap stack:
         4: aload 5
            iload 3
            aaload
            astore 2 /* c */
        start local 2 // io.netty.buffer.PoolThreadCache$MemoryRegionCache c
         5: .line 253
            iload 1 /* numFreed */
            aload 2 /* c */
            invokestatic io.netty.buffer.PoolThreadCache.free:(Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)I
            iadd
            istore 1 /* numFreed */
        end local 2 // io.netty.buffer.PoolThreadCache$MemoryRegionCache c
         6: .line 252
            iinc 3 1
      StackMap locals:
      StackMap stack:
         7: iload 3
            iload 4
            if_icmplt 4
         8: .line 255
            iload 1 /* numFreed */
            ireturn
        end local 1 // int numFreed
        end local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] caches
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0    caches  [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            3    9     1  numFreed  I
            5    6     2         c  Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
    Signature: ([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;)I
    MethodParameters:
        Name  Flags
      caches  

  private static int free(io.netty.buffer.PoolThreadCache$MemoryRegionCache<?>);
    descriptor: (Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache cache
         0: .line 259
            aload 0 /* cache */
            ifnonnull 2
         1: .line 260
            iconst_0
            ireturn
         2: .line 262
      StackMap locals:
      StackMap stack:
            aload 0 /* cache */
            invokevirtual io.netty.buffer.PoolThreadCache$MemoryRegionCache.free:()I
            ireturn
        end local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache cache
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  cache  Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
    Signature: (Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;)I
    MethodParameters:
       Name  Flags
      cache  

  void trim();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.buffer.PoolThreadCache this
         0: .line 266
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.tinySubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.trim:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)V
         1: .line 267
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.smallSubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.trim:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)V
         2: .line 268
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.normalDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.trim:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)V
         3: .line 269
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.tinySubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.trim:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)V
         4: .line 270
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.smallSubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.trim:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)V
         5: .line 271
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.normalHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            invokestatic io.netty.buffer.PoolThreadCache.trim:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)V
         6: .line 272
            return
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lio/netty/buffer/PoolThreadCache;

  private static void trim(io.netty.buffer.PoolThreadCache$MemoryRegionCache<?>[]);
    descriptor: ([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] caches
         0: .line 275
            aload 0 /* caches */
            ifnonnull 2
         1: .line 276
            return
         2: .line 278
      StackMap locals:
      StackMap stack:
            aload 0 /* caches */
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 6
      StackMap locals: io.netty.buffer.PoolThreadCache$MemoryRegionCache[] top int int io.netty.buffer.PoolThreadCache$MemoryRegionCache[]
      StackMap stack:
         3: aload 4
            iload 2
            aaload
            astore 1 /* c */
        start local 1 // io.netty.buffer.PoolThreadCache$MemoryRegionCache c
         4: .line 279
            aload 1 /* c */
            invokestatic io.netty.buffer.PoolThreadCache.trim:(Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)V
        end local 1 // io.netty.buffer.PoolThreadCache$MemoryRegionCache c
         5: .line 278
            iinc 2 1
      StackMap locals:
      StackMap stack:
         6: iload 2
            iload 3
            if_icmplt 3
         7: .line 281
            return
        end local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] caches
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0  caches  [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            4    5     1       c  Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
    Signature: ([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;)V
    MethodParameters:
        Name  Flags
      caches  

  private static void trim(io.netty.buffer.PoolThreadCache$MemoryRegionCache<?>);
    descriptor: (Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache cache
         0: .line 284
            aload 0 /* cache */
            ifnonnull 2
         1: .line 285
            return
         2: .line 287
      StackMap locals:
      StackMap stack:
            aload 0 /* cache */
            invokevirtual io.netty.buffer.PoolThreadCache$MemoryRegionCache.trim:()V
         3: .line 288
            return
        end local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache cache
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0  cache  Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
    Signature: (Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;)V
    MethodParameters:
       Name  Flags
      cache  

  private io.netty.buffer.PoolThreadCache$MemoryRegionCache<?> cacheForTiny(io.netty.buffer.PoolArena<?>, int);
    descriptor: (Lio/netty/buffer/PoolArena;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolArena area
        start local 2 // int normCapacity
         0: .line 291
            iload 2 /* normCapacity */
            invokestatic io.netty.buffer.PoolArena.tinyIdx:(I)I
            istore 3 /* idx */
        start local 3 // int idx
         1: .line 292
            aload 1 /* area */
            invokevirtual io.netty.buffer.PoolArena.isDirect:()Z
            ifeq 3
         2: .line 293
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.tinySubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            iload 3 /* idx */
            invokestatic io.netty.buffer.PoolThreadCache.cache:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            areturn
         3: .line 295
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.tinySubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            iload 3 /* idx */
            invokestatic io.netty.buffer.PoolThreadCache.cache:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            areturn
        end local 3 // int idx
        end local 2 // int normCapacity
        end local 1 // io.netty.buffer.PoolArena area
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lio/netty/buffer/PoolThreadCache;
            0    4     1          area  Lio/netty/buffer/PoolArena<*>;
            0    4     2  normCapacity  I
            1    4     3           idx  I
    Signature: (Lio/netty/buffer/PoolArena<*>;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
    MethodParameters:
              Name  Flags
      area          
      normCapacity  

  private io.netty.buffer.PoolThreadCache$MemoryRegionCache<?> cacheForSmall(io.netty.buffer.PoolArena<?>, int);
    descriptor: (Lio/netty/buffer/PoolArena;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolArena area
        start local 2 // int normCapacity
         0: .line 299
            iload 2 /* normCapacity */
            invokestatic io.netty.buffer.PoolArena.smallIdx:(I)I
            istore 3 /* idx */
        start local 3 // int idx
         1: .line 300
            aload 1 /* area */
            invokevirtual io.netty.buffer.PoolArena.isDirect:()Z
            ifeq 3
         2: .line 301
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.smallSubPageDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            iload 3 /* idx */
            invokestatic io.netty.buffer.PoolThreadCache.cache:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            areturn
         3: .line 303
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.smallSubPageHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            iload 3 /* idx */
            invokestatic io.netty.buffer.PoolThreadCache.cache:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            areturn
        end local 3 // int idx
        end local 2 // int normCapacity
        end local 1 // io.netty.buffer.PoolArena area
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lio/netty/buffer/PoolThreadCache;
            0    4     1          area  Lio/netty/buffer/PoolArena<*>;
            0    4     2  normCapacity  I
            1    4     3           idx  I
    Signature: (Lio/netty/buffer/PoolArena<*>;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
    MethodParameters:
              Name  Flags
      area          
      normCapacity  

  private io.netty.buffer.PoolThreadCache$MemoryRegionCache<?> cacheForNormal(io.netty.buffer.PoolArena<?>, int);
    descriptor: (Lio/netty/buffer/PoolArena;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // io.netty.buffer.PoolThreadCache this
        start local 1 // io.netty.buffer.PoolArena area
        start local 2 // int normCapacity
         0: .line 307
            aload 1 /* area */
            invokevirtual io.netty.buffer.PoolArena.isDirect:()Z
            ifeq 3
         1: .line 308
            iload 2 /* normCapacity */
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.numShiftsNormalDirect:I
            ishr
            invokestatic io.netty.buffer.PoolThreadCache.log2:(I)I
            istore 3 /* idx */
        start local 3 // int idx
         2: .line 309
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.normalDirectCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            iload 3 /* idx */
            invokestatic io.netty.buffer.PoolThreadCache.cache:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            areturn
        end local 3 // int idx
         3: .line 311
      StackMap locals:
      StackMap stack:
            iload 2 /* normCapacity */
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.numShiftsNormalHeap:I
            ishr
            invokestatic io.netty.buffer.PoolThreadCache.log2:(I)I
            istore 3 /* idx */
        start local 3 // int idx
         4: .line 312
            aload 0 /* this */
            getfield io.netty.buffer.PoolThreadCache.normalHeapCaches:[Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            iload 3 /* idx */
            invokestatic io.netty.buffer.PoolThreadCache.cache:([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            areturn
        end local 3 // int idx
        end local 2 // int normCapacity
        end local 1 // io.netty.buffer.PoolArena area
        end local 0 // io.netty.buffer.PoolThreadCache this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lio/netty/buffer/PoolThreadCache;
            0    5     1          area  Lio/netty/buffer/PoolArena<*>;
            0    5     2  normCapacity  I
            2    3     3           idx  I
            4    5     3           idx  I
    Signature: (Lio/netty/buffer/PoolArena<*>;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<*>;
    MethodParameters:
              Name  Flags
      area          
      normCapacity  

  private static <T> io.netty.buffer.PoolThreadCache$MemoryRegionCache<T> cache(io.netty.buffer.PoolThreadCache$MemoryRegionCache<T>[], int);
    descriptor: ([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] cache
        start local 1 // int idx
         0: .line 316
            aload 0 /* cache */
            ifnull 1
            iload 1 /* idx */
            aload 0 /* cache */
            arraylength
            iconst_1
            isub
            if_icmple 2
         1: .line 317
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 319
      StackMap locals:
      StackMap stack:
            aload 0 /* cache */
            iload 1 /* idx */
            aaload
            areturn
        end local 1 // int idx
        end local 0 // io.netty.buffer.PoolThreadCache$MemoryRegionCache[] cache
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  cache  [Lio/netty/buffer/PoolThreadCache$MemoryRegionCache;
            0    3     1    idx  I
    Signature: <T:Ljava/lang/Object;>([Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<TT;>;I)Lio/netty/buffer/PoolThreadCache$MemoryRegionCache<TT;>;
    MethodParameters:
       Name  Flags
      cache  
      idx    

  static int[] $SWITCH_TABLE$io$netty$buffer$PoolArena$SizeClass();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 38
            getstatic io.netty.buffer.PoolThreadCache.$SWITCH_TABLE$io$netty$buffer$PoolArena$SizeClass:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic io.netty.buffer.PoolArena$SizeClass.values:()[Lio/netty/buffer/PoolArena$SizeClass;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic io.netty.buffer.PoolArena$SizeClass.Normal:Lio/netty/buffer/PoolArena$SizeClass;
            invokevirtual io.netty.buffer.PoolArena$SizeClass.ordinal:()I
            iconst_3
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic io.netty.buffer.PoolArena$SizeClass.Small:Lio/netty/buffer/PoolArena$SizeClass;
            invokevirtual io.netty.buffer.PoolArena$SizeClass.ordinal:()I
            iconst_2
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic io.netty.buffer.PoolArena$SizeClass.Tiny:Lio/netty/buffer/PoolArena$SizeClass;
            invokevirtual io.netty.buffer.PoolArena$SizeClass.ordinal:()I
            iconst_1
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            dup
            putstatic io.netty.buffer.PoolThreadCache.$SWITCH_TABLE$io$netty$buffer$PoolArena$SizeClass:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
}
SourceFile: "PoolThreadCache.java"
NestMembers:
  io.netty.buffer.PoolThreadCache$MemoryRegionCache  io.netty.buffer.PoolThreadCache$MemoryRegionCache$1  io.netty.buffer.PoolThreadCache$MemoryRegionCache$Entry  io.netty.buffer.PoolThreadCache$NormalMemoryRegionCache  io.netty.buffer.PoolThreadCache$SubPageMemoryRegionCache
InnerClasses:
  final SizeClass = io.netty.buffer.PoolArena$SizeClass of io.netty.buffer.PoolArena
  private abstract MemoryRegionCache = io.netty.buffer.PoolThreadCache$MemoryRegionCache of io.netty.buffer.PoolThreadCache
  private final NormalMemoryRegionCache = io.netty.buffer.PoolThreadCache$NormalMemoryRegionCache of io.netty.buffer.PoolThreadCache
  private final SubPageMemoryRegionCache = io.netty.buffer.PoolThreadCache$SubPageMemoryRegionCache of io.netty.buffer.PoolThreadCache