public class io.undertow.server.DefaultByteBufferPool implements io.undertow.connector.ByteBufferPool
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.undertow.server.DefaultByteBufferPool
  super_class: java.lang.Object
{
  private final java.lang.ThreadLocal<io.undertow.server.DefaultByteBufferPool$ThreadLocalData> threadLocalCache;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Lio/undertow/server/DefaultByteBufferPool$ThreadLocalData;>;

  private final java.util.List<java.lang.ref.WeakReference<io.undertow.server.DefaultByteBufferPool$ThreadLocalData>> threadLocalDataList;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/ref/WeakReference<Lio/undertow/server/DefaultByteBufferPool$ThreadLocalData;>;>;

  private final java.util.concurrent.ConcurrentLinkedQueue<java.nio.ByteBuffer> queue;
    descriptor: Ljava/util/concurrent/ConcurrentLinkedQueue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentLinkedQueue<Ljava/nio/ByteBuffer;>;

  private final boolean direct;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

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

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

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

  private volatile int currentQueueLength;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<io.undertow.server.DefaultByteBufferPool> currentQueueLengthUpdater;
    descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lio/undertow/server/DefaultByteBufferPool;>;

  private volatile int reclaimedThreadLocals;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<io.undertow.server.DefaultByteBufferPool> reclaimedThreadLocalsUpdater;
    descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lio/undertow/server/DefaultByteBufferPool;>;

  private volatile boolean closed;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private final io.undertow.server.DefaultByteBufferPool arrayBackedPool;
    descriptor: Lio/undertow/server/DefaultByteBufferPool;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 56
            ldc Lio/undertow/server/DefaultByteBufferPool;
            ldc "currentQueueLength"
            invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            putstatic io.undertow.server.DefaultByteBufferPool.currentQueueLengthUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
         1: .line 60
            ldc Lio/undertow/server/DefaultByteBufferPool;
            ldc "reclaimedThreadLocals"
            invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            putstatic io.undertow.server.DefaultByteBufferPool.reclaimedThreadLocalsUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(boolean, int);
    descriptor: (ZI)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // io.undertow.server.DefaultByteBufferPool this
        start local 1 // boolean direct
        start local 2 // int bufferSize
         0: .line 72
            aload 0 /* this */
            iload 1 /* direct */
            iload 2 /* bufferSize */
            iconst_m1
            bipush 12
            iconst_0
            invokespecial io.undertow.server.DefaultByteBufferPool.<init>:(ZIIII)V
         1: .line 73
            return
        end local 2 // int bufferSize
        end local 1 // boolean direct
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lio/undertow/server/DefaultByteBufferPool;
            0    2     1      direct  Z
            0    2     2  bufferSize  I
    MethodParameters:
            Name  Flags
      direct      
      bufferSize  

  public void <init>(boolean, int, int, int, int);
    descriptor: (ZIIII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=6, args_size=6
        start local 0 // io.undertow.server.DefaultByteBufferPool this
        start local 1 // boolean direct
        start local 2 // int bufferSize
        start local 3 // int maximumPoolSize
        start local 4 // int threadLocalCacheSize
        start local 5 // int leakDecetionPercent
         0: .line 80
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 42
            aload 0 /* this */
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
            putfield io.undertow.server.DefaultByteBufferPool.threadLocalCache:Ljava/lang/ThreadLocal;
         2: .line 44
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
         3: .line 45
            aload 0 /* this */
            new java.util.concurrent.ConcurrentLinkedQueue
            dup
            invokespecial java.util.concurrent.ConcurrentLinkedQueue.<init>:()V
            putfield io.undertow.server.DefaultByteBufferPool.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
         4: .line 55
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.DefaultByteBufferPool.currentQueueLength:I
         5: .line 59
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.DefaultByteBufferPool.reclaimedThreadLocals:I
         6: .line 81
            aload 0 /* this */
            iload 1 /* direct */
            putfield io.undertow.server.DefaultByteBufferPool.direct:Z
         7: .line 82
            aload 0 /* this */
            iload 2 /* bufferSize */
            putfield io.undertow.server.DefaultByteBufferPool.bufferSize:I
         8: .line 83
            aload 0 /* this */
            iload 3 /* maximumPoolSize */
            putfield io.undertow.server.DefaultByteBufferPool.maximumPoolSize:I
         9: .line 84
            aload 0 /* this */
            iload 4 /* threadLocalCacheSize */
            putfield io.undertow.server.DefaultByteBufferPool.threadLocalCacheSize:I
        10: .line 85
            aload 0 /* this */
            iload 5 /* leakDecetionPercent */
            putfield io.undertow.server.DefaultByteBufferPool.leakDectionPercent:I
        11: .line 86
            iload 1 /* direct */
            ifeq 14
        12: .line 87
            aload 0 /* this */
            new io.undertow.server.DefaultByteBufferPool
            dup
            iconst_0
            iload 2 /* bufferSize */
            iload 3 /* maximumPoolSize */
            iconst_0
            iload 5 /* leakDecetionPercent */
            invokespecial io.undertow.server.DefaultByteBufferPool.<init>:(ZIIII)V
            putfield io.undertow.server.DefaultByteBufferPool.arrayBackedPool:Lio/undertow/server/DefaultByteBufferPool;
        13: .line 88
            goto 15
        14: .line 89
      StackMap locals: io.undertow.server.DefaultByteBufferPool int int int int int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            putfield io.undertow.server.DefaultByteBufferPool.arrayBackedPool:Lio/undertow/server/DefaultByteBufferPool;
        15: .line 91
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int leakDecetionPercent
        end local 4 // int threadLocalCacheSize
        end local 3 // int maximumPoolSize
        end local 2 // int bufferSize
        end local 1 // boolean direct
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   16     0                  this  Lio/undertow/server/DefaultByteBufferPool;
            0   16     1                direct  Z
            0   16     2            bufferSize  I
            0   16     3       maximumPoolSize  I
            0   16     4  threadLocalCacheSize  I
            0   16     5   leakDecetionPercent  I
    MethodParameters:
                      Name  Flags
      direct                
      bufferSize            
      maximumPoolSize       
      threadLocalCacheSize  
      leakDecetionPercent   

  public void <init>(boolean, int, int, int);
    descriptor: (ZIII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // io.undertow.server.DefaultByteBufferPool this
        start local 1 // boolean direct
        start local 2 // int bufferSize
        start local 3 // int maximumPoolSize
        start local 4 // int threadLocalCacheSize
         0: .line 101
            aload 0 /* this */
            iload 1 /* direct */
            iload 2 /* bufferSize */
            iload 3 /* maximumPoolSize */
            iload 4 /* threadLocalCacheSize */
            iconst_0
            invokespecial io.undertow.server.DefaultByteBufferPool.<init>:(ZIIII)V
         1: .line 102
            return
        end local 4 // int threadLocalCacheSize
        end local 3 // int maximumPoolSize
        end local 2 // int bufferSize
        end local 1 // boolean direct
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    2     0                  this  Lio/undertow/server/DefaultByteBufferPool;
            0    2     1                direct  Z
            0    2     2            bufferSize  I
            0    2     3       maximumPoolSize  I
            0    2     4  threadLocalCacheSize  I
    MethodParameters:
                      Name  Flags
      direct                
      bufferSize            
      maximumPoolSize       
      threadLocalCacheSize  

  public int getBufferSize();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.DefaultByteBufferPool this
         0: .line 106
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.bufferSize:I
            ireturn
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/DefaultByteBufferPool;

  public boolean isDirect();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.DefaultByteBufferPool this
         0: .line 111
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.direct:Z
            ireturn
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/DefaultByteBufferPool;

  public io.undertow.connector.PooledByteBuffer allocate();
    descriptor: ()Lio/undertow/connector/PooledByteBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=1
        start local 0 // io.undertow.server.DefaultByteBufferPool this
         0: .line 116
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.closed:Z
            ifeq 2
         1: .line 117
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.poolIsClosed:()Ljava/lang/IllegalStateException;
            athrow
         2: .line 119
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 1 /* buffer */
        start local 1 // java.nio.ByteBuffer buffer
         3: .line 120
            aconst_null
            astore 2 /* local */
        start local 2 // io.undertow.server.DefaultByteBufferPool$ThreadLocalData local
         4: .line 121
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalCacheSize:I
            ifle 20
         5: .line 122
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalCache:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast io.undertow.server.DefaultByteBufferPool$ThreadLocalData
            astore 2 /* local */
         6: .line 123
            aload 2 /* local */
            ifnull 9
         7: .line 124
            aload 2 /* local */
            getfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.buffers:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.poll:()Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 1 /* buffer */
         8: .line 125
            goto 20
         9: .line 126
      StackMap locals: java.nio.ByteBuffer io.undertow.server.DefaultByteBufferPool$ThreadLocalData
      StackMap stack:
            new io.undertow.server.DefaultByteBufferPool$ThreadLocalData
            dup
            aload 0 /* this */
            invokespecial io.undertow.server.DefaultByteBufferPool$ThreadLocalData.<init>:(Lio/undertow/server/DefaultByteBufferPool;)V
            astore 2 /* local */
        10: .line 127
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
            dup
            astore 3
            monitorenter
        11: .line 128
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.closed:Z
            ifeq 13
        12: .line 129
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.poolIsClosed:()Ljava/lang/IllegalStateException;
            athrow
        13: .line 131
      StackMap locals: java.util.List
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.undertow.server.DefaultByteBufferPool.cleanupThreadLocalData:()V
        14: .line 132
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
            new java.lang.ref.WeakReference
            dup
            aload 2 /* local */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        15: .line 133
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalCache:Ljava/lang/ThreadLocal;
            aload 2 /* local */
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
        16: .line 127
            aload 3
            monitorexit
        17: goto 20
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: aload 3
            monitorexit
        19: athrow
        20: .line 138
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            ifnonnull 24
        21: .line 139
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
            invokevirtual java.util.concurrent.ConcurrentLinkedQueue.poll:()Ljava/lang/Object;
            checkcast java.nio.ByteBuffer
            astore 1 /* buffer */
        22: .line 140
            aload 1 /* buffer */
            ifnull 24
        23: .line 141
            getstatic io.undertow.server.DefaultByteBufferPool.currentQueueLengthUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.decrementAndGet:(Ljava/lang/Object;)I
            pop
        24: .line 144
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            ifnonnull 29
        25: .line 145
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.direct:Z
            ifeq 28
        26: .line 146
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.bufferSize:I
            invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
            astore 1 /* buffer */
        27: .line 147
            goto 29
        28: .line 148
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.bufferSize:I
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 1 /* buffer */
        29: .line 151
      StackMap locals:
      StackMap stack:
            aload 2 /* local */
            ifnull 32
        30: .line 152
            aload 2 /* local */
            getfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.allocationDepth:I
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalCacheSize:I
            if_icmpge 32
        31: .line 153
            aload 2 /* local */
            dup
            getfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.allocationDepth:I
            iconst_1
            iadd
            putfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.allocationDepth:I
        32: .line 156
      StackMap locals:
      StackMap stack:
            aload 1 /* buffer */
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
        33: .line 157
            new io.undertow.server.DefaultByteBufferPool$DefaultPooledBuffer
            dup
            aload 0 /* this */
            aload 1 /* buffer */
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.leakDectionPercent:I
            ifne 34
            iconst_0
            goto 36
      StackMap locals: io.undertow.server.DefaultByteBufferPool java.nio.ByteBuffer io.undertow.server.DefaultByteBufferPool$ThreadLocalData
      StackMap stack: new 33 new 33 io.undertow.server.DefaultByteBufferPool java.nio.ByteBuffer
        34: aload 0 /* this */
            dup
            getfield io.undertow.server.DefaultByteBufferPool.count:I
            iconst_1
            iadd
            dup_x1
            putfield io.undertow.server.DefaultByteBufferPool.count:I
            bipush 100
            irem
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.leakDectionPercent:I
            if_icmpge 35
            iconst_1
            goto 36
      StackMap locals: io.undertow.server.DefaultByteBufferPool java.nio.ByteBuffer io.undertow.server.DefaultByteBufferPool$ThreadLocalData
      StackMap stack: new 33 new 33 io.undertow.server.DefaultByteBufferPool java.nio.ByteBuffer
        35: iconst_0
      StackMap locals: io.undertow.server.DefaultByteBufferPool java.nio.ByteBuffer io.undertow.server.DefaultByteBufferPool$ThreadLocalData
      StackMap stack: new 33 new 33 io.undertow.server.DefaultByteBufferPool java.nio.ByteBuffer int
        36: invokespecial io.undertow.server.DefaultByteBufferPool$DefaultPooledBuffer.<init>:(Lio/undertow/server/DefaultByteBufferPool;Ljava/nio/ByteBuffer;Z)V
            areturn
        end local 2 // io.undertow.server.DefaultByteBufferPool$ThreadLocalData local
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   37     0    this  Lio/undertow/server/DefaultByteBufferPool;
            3   37     1  buffer  Ljava/nio/ByteBuffer;
            4   37     2   local  Lio/undertow/server/DefaultByteBufferPool$ThreadLocalData;
      Exception table:
        from    to  target  type
          11    17      18  any
          18    19      18  any

  public io.undertow.connector.ByteBufferPool getArrayBackedPool();
    descriptor: ()Lio/undertow/connector/ByteBufferPool;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.DefaultByteBufferPool this
         0: .line 162
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.arrayBackedPool:Lio/undertow/server/DefaultByteBufferPool;
            areturn
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/undertow/server/DefaultByteBufferPool;

  private void cleanupThreadLocalData();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // io.undertow.server.DefaultByteBufferPool this
         0: .line 168
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            istore 1 /* size */
        start local 1 // int size
         1: .line 170
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.reclaimedThreadLocals:I
            iload 1 /* size */
            iconst_4
            idiv
            if_icmple 16
         2: .line 171
            iconst_0
            istore 2 /* j */
        start local 2 // int j
         3: .line 172
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         4: goto 9
         5: .line 173
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
            iload 3 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            astore 4 /* ref */
        start local 4 // java.lang.ref.WeakReference ref
         6: .line 174
            aload 4 /* ref */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            ifnull 8
         7: .line 175
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
            iload 2 /* j */
            iinc 2 /* j */ 1
            aload 4 /* ref */
            invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // java.lang.ref.WeakReference ref
         8: .line 172
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 3 /* i */
            iload 1 /* size */
            if_icmplt 5
        end local 3 // int i
        10: .line 178
            iload 1 /* size */
            iconst_1
            isub
            istore 3 /* i */
        start local 3 // int i
        11: goto 14
        12: .line 180
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
            iload 3 /* i */
            invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
            pop
        13: .line 178
            iinc 3 /* i */ -1
      StackMap locals:
      StackMap stack:
        14: iload 3 /* i */
            iload 2 /* j */
            if_icmpge 12
        end local 3 // int i
        15: .line 182
            getstatic io.undertow.server.DefaultByteBufferPool.reclaimedThreadLocalsUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_m1
            iload 1 /* size */
            iload 2 /* j */
            isub
            imul
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.addAndGet:(Ljava/lang/Object;I)I
            pop
        end local 2 // int j
        16: .line 184
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int size
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lio/undertow/server/DefaultByteBufferPool;
            1   17     1  size  I
            3   16     2     j  I
            4   10     3     i  I
            6    8     4   ref  Ljava/lang/ref/WeakReference<Lio/undertow/server/DefaultByteBufferPool$ThreadLocalData;>;
           11   15     3     i  I

  private void freeInternal(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // io.undertow.server.DefaultByteBufferPool this
        start local 1 // java.nio.ByteBuffer buffer
         0: .line 187
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.closed:Z
            ifeq 3
         1: .line 188
            aload 1 /* buffer */
            invokestatic io.undertow.server.DirectByteBufferDeallocator.free:(Ljava/nio/ByteBuffer;)V
         2: .line 189
            return
         3: .line 191
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalCache:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast io.undertow.server.DefaultByteBufferPool$ThreadLocalData
            astore 2 /* local */
        start local 2 // io.undertow.server.DefaultByteBufferPool$ThreadLocalData local
         4: .line 192
            aload 2 /* local */
            ifnull 10
         5: .line 193
            aload 2 /* local */
            getfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.allocationDepth:I
            ifle 10
         6: .line 194
            aload 2 /* local */
            dup
            getfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.allocationDepth:I
            iconst_1
            isub
            putfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.allocationDepth:I
         7: .line 195
            aload 2 /* local */
            getfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.buffers:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.size:()I
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalCacheSize:I
            if_icmpge 10
         8: .line 196
            aload 2 /* local */
            getfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.buffers:Ljava/util/ArrayDeque;
            aload 1 /* buffer */
            invokevirtual java.util.ArrayDeque.add:(Ljava/lang/Object;)Z
            pop
         9: .line 197
            return
        10: .line 201
      StackMap locals: io.undertow.server.DefaultByteBufferPool$ThreadLocalData
      StackMap stack:
            aload 0 /* this */
            aload 1 /* buffer */
            invokevirtual io.undertow.server.DefaultByteBufferPool.queueIfUnderMax:(Ljava/nio/ByteBuffer;)V
        11: .line 202
            return
        end local 2 // io.undertow.server.DefaultByteBufferPool$ThreadLocalData local
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lio/undertow/server/DefaultByteBufferPool;
            0   12     1  buffer  Ljava/nio/ByteBuffer;
            4   12     2   local  Lio/undertow/server/DefaultByteBufferPool$ThreadLocalData;
    MethodParameters:
        Name  Flags
      buffer  

  private void queueIfUnderMax(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // io.undertow.server.DefaultByteBufferPool this
        start local 1 // java.nio.ByteBuffer buffer
         0: .line 207
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.currentQueueLength:I
            istore 2 /* size */
        start local 2 // int size
         1: .line 208
            iload 2 /* size */
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.maximumPoolSize:I
            if_icmple 4
         2: .line 209
            aload 1 /* buffer */
            invokestatic io.undertow.server.DirectByteBufferDeallocator.free:(Ljava/nio/ByteBuffer;)V
         3: .line 210
            return
         4: .line 212
      StackMap locals: int
      StackMap stack:
            getstatic io.undertow.server.DefaultByteBufferPool.currentQueueLengthUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iload 2 /* size */
            iload 2 /* size */
            iconst_1
            iadd
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.compareAndSet:(Ljava/lang/Object;II)Z
            ifeq 0
         5: .line 213
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
            aload 1 /* buffer */
            invokevirtual java.util.concurrent.ConcurrentLinkedQueue.add:(Ljava/lang/Object;)Z
            pop
         6: .line 214
            return
        end local 2 // int size
        end local 1 // java.nio.ByteBuffer buffer
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lio/undertow/server/DefaultByteBufferPool;
            0    7     1  buffer  Ljava/nio/ByteBuffer;
            1    7     2    size  I
    MethodParameters:
        Name  Flags
      buffer  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // io.undertow.server.DefaultByteBufferPool this
         0: .line 218
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.closed:Z
            ifeq 2
         1: .line 219
            return
         2: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield io.undertow.server.DefaultByteBufferPool.closed:Z
         3: .line 222
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
            invokevirtual java.util.concurrent.ConcurrentLinkedQueue.clear:()V
         4: .line 224
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
            dup
            astore 1
            monitorenter
         5: .line 225
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 11
      StackMap locals: io.undertow.server.DefaultByteBufferPool java.util.List top java.util.Iterator
      StackMap stack:
         6: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.ref.WeakReference
            astore 2 /* ref */
        start local 2 // java.lang.ref.WeakReference ref
         7: .line 226
            aload 2 /* ref */
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast io.undertow.server.DefaultByteBufferPool$ThreadLocalData
            astore 4 /* local */
        start local 4 // io.undertow.server.DefaultByteBufferPool$ThreadLocalData local
         8: .line 227
            aload 4 /* local */
            ifnull 10
         9: .line 228
            aload 4 /* local */
            getfield io.undertow.server.DefaultByteBufferPool$ThreadLocalData.buffers:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.clear:()V
        10: .line 230
      StackMap locals: io.undertow.server.DefaultByteBufferPool java.util.List java.lang.ref.WeakReference java.util.Iterator io.undertow.server.DefaultByteBufferPool$ThreadLocalData
      StackMap stack:
            aload 2 /* ref */
            invokevirtual java.lang.ref.WeakReference.clear:()V
        end local 4 // io.undertow.server.DefaultByteBufferPool$ThreadLocalData local
        end local 2 // java.lang.ref.WeakReference ref
        11: .line 225
      StackMap locals: io.undertow.server.DefaultByteBufferPool java.util.List top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        12: .line 232
            aload 0 /* this */
            getfield io.undertow.server.DefaultByteBufferPool.threadLocalDataList:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
        13: .line 224
            aload 1
            monitorexit
        14: goto 17
      StackMap locals: io.undertow.server.DefaultByteBufferPool java.util.List
      StackMap stack: java.lang.Throwable
        15: aload 1
            monitorexit
        16: athrow
        17: .line 234
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   18     0   this  Lio/undertow/server/DefaultByteBufferPool;
            7   11     2    ref  Ljava/lang/ref/WeakReference<Lio/undertow/server/DefaultByteBufferPool$ThreadLocalData;>;
            8   11     4  local  Lio/undertow/server/DefaultByteBufferPool$ThreadLocalData;
      Exception table:
        from    to  target  type
           5    14      15  any
          15    16      15  any

  protected void finalize();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.undertow.server.DefaultByteBufferPool this
         0: .line 238
            aload 0 /* this */
            invokespecial java.lang.Object.finalize:()V
         1: .line 239
            aload 0 /* this */
            invokevirtual io.undertow.server.DefaultByteBufferPool.close:()V
         2: .line 240
            return
        end local 0 // io.undertow.server.DefaultByteBufferPool this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/undertow/server/DefaultByteBufferPool;
    Exceptions:
      throws java.lang.Throwable
}
SourceFile: "DefaultByteBufferPool.java"
NestMembers:
  io.undertow.server.DefaultByteBufferPool$DefaultPooledBuffer  io.undertow.server.DefaultByteBufferPool$LeakDetector  io.undertow.server.DefaultByteBufferPool$ThreadLocalData
InnerClasses:
  private DefaultPooledBuffer = io.undertow.server.DefaultByteBufferPool$DefaultPooledBuffer of io.undertow.server.DefaultByteBufferPool
  private LeakDetector = io.undertow.server.DefaultByteBufferPool$LeakDetector of io.undertow.server.DefaultByteBufferPool
  private ThreadLocalData = io.undertow.server.DefaultByteBufferPool$ThreadLocalData of io.undertow.server.DefaultByteBufferPool