final class org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote implements java.io.Closeable
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote
  super_class: java.lang.Object
{
  private final java.lang.String _ip;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final org.eclipse.jetty.util.thread.Locker _locker;
    descriptor: Lorg/eclipse/jetty/util/thread/Locker;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private java.util.Deque<java.util.concurrent.CompletableFuture<java.io.Closeable>> _queue;
    descriptor: Ljava/util/Deque;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Deque<Ljava/util/concurrent/CompletableFuture<Ljava/io/Closeable;>;>;

  private final java.util.concurrent.CompletableFuture<java.io.Closeable> _permitted;
    descriptor: Ljava/util/concurrent/CompletableFuture;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/CompletableFuture<Ljava/io/Closeable;>;

  final org.eclipse.jetty.server.handler.ThreadLimitHandler this$0;
    descriptor: Lorg/eclipse/jetty/server/handler/ThreadLimitHandler;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  public void <init>(org.eclipse.jetty.server.handler.ThreadLimitHandler, java.lang.String, int);
    descriptor: (Lorg/eclipse/jetty/server/handler/ThreadLimitHandler;Ljava/lang/String;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote this
        start local 2 // java.lang.String ip
        start local 3 // int limit
         0: .line 342
            aload 0 /* this */
            aload 1
            putfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote.this$0:Lorg/eclipse/jetty/server/handler/ThreadLimitHandler;
         1: .line 341
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         2: .line 336
            aload 0 /* this */
            new org.eclipse.jetty.util.thread.Locker
            dup
            invokespecial org.eclipse.jetty.util.thread.Locker.<init>:()V
            putfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._locker:Lorg/eclipse/jetty/util/thread/Locker;
         3: .line 338
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._queue:Ljava/util/Deque;
         4: .line 339
            aload 0 /* this */
            aload 0 /* this */
            invokestatic java.util.concurrent.CompletableFuture.completedFuture:(Ljava/lang/Object;)Ljava/util/concurrent/CompletableFuture;
            putfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permitted:Ljava/util/concurrent/CompletableFuture;
         5: .line 343
            aload 0 /* this */
            aload 2 /* ip */
            putfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._ip:Ljava/lang/String;
         6: .line 344
            aload 0 /* this */
            iload 3 /* limit */
            putfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._limit:I
         7: .line 345
            return
        end local 3 // int limit
        end local 2 // java.lang.String ip
        end local 0 // org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lorg/eclipse/jetty/server/handler/ThreadLimitHandler$Remote;
            0    8     2     ip  Ljava/lang/String;
            0    8     3  limit  I
    MethodParameters:
        Name  Flags
      this$0  final
      ip      
      limit   

  public java.util.concurrent.CompletableFuture<java.io.Closeable> acquire();
    descriptor: ()Ljava/util/concurrent/CompletableFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote this
         0: .line 349
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._locker:Lorg/eclipse/jetty/util/thread/Locker;
            invokevirtual org.eclipse.jetty.util.thread.Locker.lock:()Lorg/eclipse/jetty/util/thread/Locker$Lock;
            astore 3 /* lock */
        start local 3 // org.eclipse.jetty.util.thread.Locker$Lock lock
         2: .line 352
            aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permits:I
            aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._limit:I
            if_icmpge 7
         3: .line 355
            aload 0 /* this */
            dup
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permits:I
            iconst_1
            iadd
            putfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permits:I
         4: .line 357
            aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permitted:Ljava/util/concurrent/CompletableFuture;
         5: .line 364
            aload 3 /* lock */
            ifnull 6
            aload 3 /* lock */
            invokevirtual org.eclipse.jetty.util.thread.Locker$Lock.close:()V
         6: .line 357
      StackMap locals: org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote java.lang.Throwable java.lang.Throwable org.eclipse.jetty.util.thread.Locker$Lock
      StackMap stack: java.util.concurrent.CompletableFuture
            areturn
         7: .line 361
      StackMap locals:
      StackMap stack:
            new java.util.concurrent.CompletableFuture
            dup
            invokespecial java.util.concurrent.CompletableFuture.<init>:()V
            astore 4 /* pass */
        start local 4 // java.util.concurrent.CompletableFuture pass
         8: .line 362
            aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._queue:Ljava/util/Deque;
            aload 4 /* pass */
            invokeinterface java.util.Deque.addLast:(Ljava/lang/Object;)V
         9: .line 363
            aload 4 /* pass */
        10: .line 364
            aload 3 /* lock */
            ifnull 11
            aload 3 /* lock */
            invokevirtual org.eclipse.jetty.util.thread.Locker$Lock.close:()V
        11: .line 363
      StackMap locals: org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote java.lang.Throwable java.lang.Throwable org.eclipse.jetty.util.thread.Locker$Lock java.util.concurrent.CompletableFuture
      StackMap stack: java.util.concurrent.CompletableFuture
            areturn
        end local 4 // java.util.concurrent.CompletableFuture pass
      StackMap locals: org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote java.lang.Throwable java.lang.Throwable org.eclipse.jetty.util.thread.Locker$Lock
      StackMap stack: java.lang.Throwable
        12: astore 1
        13: .line 364
            aload 3 /* lock */
            ifnull 14
            aload 3 /* lock */
            invokevirtual org.eclipse.jetty.util.thread.Locker$Lock.close:()V
        end local 3 // org.eclipse.jetty.util.thread.Locker$Lock lock
      StackMap locals:
      StackMap stack:
        14: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 2
            aload 1
            ifnonnull 16
            aload 2
            astore 1
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 1
            aload 2
            if_acmpeq 17
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 1
            athrow
        end local 0 // org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   18     0  this  Lorg/eclipse/jetty/server/handler/ThreadLimitHandler$Remote;
            2   14     3  lock  Lorg/eclipse/jetty/util/thread/Locker$Lock;
            8   12     4  pass  Ljava/util/concurrent/CompletableFuture<Ljava/io/Closeable;>;
      Exception table:
        from    to  target  type
           2     5      12  any
           7    10      12  any
           1     6      15  any
           7    11      15  any
          12    15      15  any
    Signature: ()Ljava/util/concurrent/CompletableFuture<Ljava/io/Closeable;>;

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote this
         0: .line 370
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._locker:Lorg/eclipse/jetty/util/thread/Locker;
            invokevirtual org.eclipse.jetty.util.thread.Locker.lock:()Lorg/eclipse/jetty/util/thread/Locker$Lock;
            astore 3 /* lock */
        start local 3 // org.eclipse.jetty.util.thread.Locker$Lock lock
         2: .line 373
            aload 0 /* this */
            dup
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permits:I
            iconst_1
            isub
            putfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permits:I
         3: .line 377
      StackMap locals: java.lang.Throwable java.lang.Throwable org.eclipse.jetty.util.thread.Locker$Lock
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._queue:Ljava/util/Deque;
            invokeinterface java.util.Deque.pollFirst:()Ljava/lang/Object;
            checkcast java.util.concurrent.CompletableFuture
            astore 4 /* permit */
        start local 4 // java.util.concurrent.CompletableFuture permit
         4: .line 380
            aload 4 /* permit */
            ifnonnull 6
         5: .line 381
            goto 8
         6: .line 384
      StackMap locals: java.util.concurrent.CompletableFuture
      StackMap stack:
            aload 4 /* permit */
            aload 0 /* this */
            invokevirtual java.util.concurrent.CompletableFuture.complete:(Ljava/lang/Object;)Z
            ifeq 3
         7: .line 386
            aload 0 /* this */
            dup
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permits:I
            iconst_1
            iadd
            putfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permits:I
        end local 4 // java.util.concurrent.CompletableFuture permit
         8: .line 393
      StackMap locals:
      StackMap stack:
            aload 3 /* lock */
            ifnull 14
            aload 3 /* lock */
            invokevirtual org.eclipse.jetty.util.thread.Locker$Lock.close:()V
            goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 1
            aload 3 /* lock */
            ifnull 10
            aload 3 /* lock */
            invokevirtual org.eclipse.jetty.util.thread.Locker$Lock.close:()V
        end local 3 // org.eclipse.jetty.util.thread.Locker$Lock lock
      StackMap locals:
      StackMap stack:
        10: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 2
            aload 1
            ifnonnull 12
            aload 2
            astore 1
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 1
            aload 2
            if_acmpeq 13
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        13: aload 1
            athrow
        14: .line 394
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   15     0    this  Lorg/eclipse/jetty/server/handler/ThreadLimitHandler$Remote;
            2   10     3    lock  Lorg/eclipse/jetty/util/thread/Locker$Lock;
            4    8     4  permit  Ljava/util/concurrent/CompletableFuture<Ljava/io/Closeable;>;
      Exception table:
        from    to  target  type
           2     8       9  any
           1    11      11  any
    Exceptions:
      throws java.io.IOException

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote this
         0: .line 399
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._locker:Lorg/eclipse/jetty/util/thread/Locker;
            invokevirtual org.eclipse.jetty.util.thread.Locker.lock:()Lorg/eclipse/jetty/util/thread/Locker$Lock;
            astore 3 /* lock */
        start local 3 // org.eclipse.jetty.util.thread.Locker$Lock lock
         2: .line 401
            ldc "R[ip=%s,p=%d,l=%d,q=%d]"
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._ip:Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._permits:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._limit:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_3
            aload 0 /* this */
            getfield org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote._queue:Ljava/util/Deque;
            invokeinterface java.util.Deque.size:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         3: .line 402
            aload 3 /* lock */
            ifnull 4
            aload 3 /* lock */
            invokevirtual org.eclipse.jetty.util.thread.Locker$Lock.close:()V
         4: .line 401
      StackMap locals: org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote java.lang.Throwable java.lang.Throwable org.eclipse.jetty.util.thread.Locker$Lock
      StackMap stack: java.lang.String
            areturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: astore 1
         6: .line 402
            aload 3 /* lock */
            ifnull 7
            aload 3 /* lock */
            invokevirtual org.eclipse.jetty.util.thread.Locker$Lock.close:()V
        end local 3 // org.eclipse.jetty.util.thread.Locker$Lock lock
      StackMap locals:
      StackMap stack:
         7: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 2
            aload 1
            ifnonnull 9
            aload 2
            astore 1
            goto 10
      StackMap locals:
      StackMap stack:
         9: aload 1
            aload 2
            if_acmpeq 10
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        10: aload 1
            athrow
        end local 0 // org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/eclipse/jetty/server/handler/ThreadLimitHandler$Remote;
            2    7     3  lock  Lorg/eclipse/jetty/util/thread/Locker$Lock;
      Exception table:
        from    to  target  type
           2     3       5  any
           1     4       8  any
           5     8       8  any
}
SourceFile: "ThreadLimitHandler.java"
NestHost: org.eclipse.jetty.server.handler.ThreadLimitHandler
InnerClasses:
  private final Remote = org.eclipse.jetty.server.handler.ThreadLimitHandler$Remote of org.eclipse.jetty.server.handler.ThreadLimitHandler
  public Lock = org.eclipse.jetty.util.thread.Locker$Lock of org.eclipse.jetty.util.thread.Locker