public class org.eclipse.jetty.util.SocketAddressResolver$Async implements org.eclipse.jetty.util.SocketAddressResolver
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jetty.util.SocketAddressResolver$Async
  super_class: java.lang.Object
{
  private static final org.eclipse.jetty.util.log.Logger LOG;
    descriptor: Lorg/eclipse/jetty/util/log/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.util.concurrent.Executor executor;
    descriptor: Ljava/util/concurrent/Executor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final long timeout;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 110
            ldc Lorg/eclipse/jetty/util/SocketAddressResolver;
            invokestatic org.eclipse.jetty.util.log.Log.getLogger:(Ljava/lang/Class;)Lorg/eclipse/jetty/util/log/Logger;
            putstatic org.eclipse.jetty.util.SocketAddressResolver$Async.LOG:Lorg/eclipse/jetty/util/log/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.util.concurrent.Executor, org.eclipse.jetty.util.thread.Scheduler, long);
    descriptor: (Ljava/util/concurrent/Executor;Lorg/eclipse/jetty/util/thread/Scheduler;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
        start local 1 // java.util.concurrent.Executor executor
        start local 2 // org.eclipse.jetty.util.thread.Scheduler scheduler
        start local 3 // long timeout
         0: .line 124
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 126
            aload 0 /* this */
            aload 1 /* executor */
            putfield org.eclipse.jetty.util.SocketAddressResolver$Async.executor:Ljava/util/concurrent/Executor;
         2: .line 127
            aload 0 /* this */
            aload 2 /* scheduler */
            putfield org.eclipse.jetty.util.SocketAddressResolver$Async.scheduler:Lorg/eclipse/jetty/util/thread/Scheduler;
         3: .line 128
            aload 0 /* this */
            lload 3 /* timeout */
            putfield org.eclipse.jetty.util.SocketAddressResolver$Async.timeout:J
         4: .line 129
            return
        end local 3 // long timeout
        end local 2 // org.eclipse.jetty.util.thread.Scheduler scheduler
        end local 1 // java.util.concurrent.Executor executor
        end local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lorg/eclipse/jetty/util/SocketAddressResolver$Async;
            0    5     1   executor  Ljava/util/concurrent/Executor;
            0    5     2  scheduler  Lorg/eclipse/jetty/util/thread/Scheduler;
            0    5     3    timeout  J
    MethodParameters:
           Name  Flags
      executor   
      scheduler  
      timeout    

  public java.util.concurrent.Executor getExecutor();
    descriptor: ()Ljava/util/concurrent/Executor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
         0: .line 133
            aload 0 /* this */
            getfield org.eclipse.jetty.util.SocketAddressResolver$Async.executor:Ljava/util/concurrent/Executor;
            areturn
        end local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jetty/util/SocketAddressResolver$Async;

  public org.eclipse.jetty.util.thread.Scheduler getScheduler();
    descriptor: ()Lorg/eclipse/jetty/util/thread/Scheduler;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
         0: .line 138
            aload 0 /* this */
            getfield org.eclipse.jetty.util.SocketAddressResolver$Async.scheduler:Lorg/eclipse/jetty/util/thread/Scheduler;
            areturn
        end local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jetty/util/SocketAddressResolver$Async;

  public long getTimeout();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
         0: .line 144
            aload 0 /* this */
            getfield org.eclipse.jetty.util.SocketAddressResolver$Async.timeout:J
            lreturn
        end local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jetty/util/SocketAddressResolver$Async;
    RuntimeVisibleAnnotations: 
      org.eclipse.jetty.util.annotation.ManagedAttribute(value = "The timeout, in milliseconds, to resolve an address", readonly = true)

  public void resolve(java.lang.String, int, org.eclipse.jetty.util.Promise<java.util.List<java.net.InetSocketAddress>>);
    descriptor: (Ljava/lang/String;ILorg/eclipse/jetty/util/Promise;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
        start local 1 // java.lang.String host
        start local 2 // int port
        start local 3 // org.eclipse.jetty.util.Promise promise
         0: .line 150
            aload 0 /* this */
            getfield org.eclipse.jetty.util.SocketAddressResolver$Async.executor:Ljava/util/concurrent/Executor;
            aload 0 /* this */
            aload 3 /* promise */
            aload 1 /* host */
            iload 2 /* port */
            invokedynamic run(Lorg/eclipse/jetty/util/SocketAddressResolver$Async;Lorg/eclipse/jetty/util/Promise;Ljava/lang/String;I)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  org/eclipse/jetty/util/SocketAddressResolver$Async.lambda$0(Lorg/eclipse/jetty/util/Promise;Ljava/lang/String;I)V (7)
                  ()V
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
         1: .line 200
            return
        end local 3 // org.eclipse.jetty.util.Promise promise
        end local 2 // int port
        end local 1 // java.lang.String host
        end local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/eclipse/jetty/util/SocketAddressResolver$Async;
            0    2     1     host  Ljava/lang/String;
            0    2     2     port  I
            0    2     3  promise  Lorg/eclipse/jetty/util/Promise<Ljava/util/List<Ljava/net/InetSocketAddress;>;>;
    Signature: (Ljava/lang/String;ILorg/eclipse/jetty/util/Promise<Ljava/util/List<Ljava/net/InetSocketAddress;>;>;)V
    MethodParameters:
         Name  Flags
      host     final
      port     final
      promise  final

  private void lambda$0(org.eclipse.jetty.util.Promise, java.lang.String, int);
    descriptor: (Lorg/eclipse/jetty/util/Promise;Ljava/lang/String;I)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=8, locals=17, args_size=4
        start local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
         0: .line 152
            aconst_null
            astore 4 /* task */
        start local 4 // org.eclipse.jetty.util.thread.Scheduler$Task task
         1: .line 153
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
            astore 5 /* complete */
        start local 5 // java.util.concurrent.atomic.AtomicBoolean complete
         2: .line 154
            aload 0 /* this */
            getfield org.eclipse.jetty.util.SocketAddressResolver$Async.timeout:J
            lconst_0
            lcmp
            ifle 7
         3: .line 156
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 6 /* thread */
        start local 6 // java.lang.Thread thread
         4: .line 157
            aload 0 /* this */
            getfield org.eclipse.jetty.util.SocketAddressResolver$Async.scheduler:Lorg/eclipse/jetty/util/thread/Scheduler;
            aload 0 /* this */
            aload 5 /* complete */
            aload 1
            aload 6 /* thread */
            invokedynamic run(Lorg/eclipse/jetty/util/SocketAddressResolver$Async;Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/eclipse/jetty/util/Promise;Ljava/lang/Thread;)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  org/eclipse/jetty/util/SocketAddressResolver$Async.lambda$1(Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/eclipse/jetty/util/Promise;Ljava/lang/Thread;)V (7)
                  ()V
         5: .line 164
            aload 0 /* this */
            getfield org.eclipse.jetty.util.SocketAddressResolver$Async.timeout:J
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
         6: .line 157
            invokeinterface org.eclipse.jetty.util.thread.Scheduler.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Lorg/eclipse/jetty/util/thread/Scheduler$Task;
            astore 4 /* task */
        end local 6 // java.lang.Thread thread
         7: .line 169
      StackMap locals: org.eclipse.jetty.util.thread.Scheduler$Task java.util.concurrent.atomic.AtomicBoolean
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            lstore 6 /* start */
        start local 6 // long start
         8: .line 170
            aload 2
            invokestatic java.net.InetAddress.getAllByName:(Ljava/lang/String;)[Ljava/net/InetAddress;
            astore 8 /* addresses */
        start local 8 // java.net.InetAddress[] addresses
         9: .line 171
            invokestatic java.lang.System.nanoTime:()J
            lload 6 /* start */
            lsub
            lstore 9 /* elapsed */
        start local 9 // long elapsed
        10: .line 172
            getstatic org.eclipse.jetty.util.SocketAddressResolver$Async.LOG:Lorg/eclipse/jetty/util/log/Logger;
            invokeinterface org.eclipse.jetty.util.log.Logger.isDebugEnabled:()Z
            ifeq 12
        11: .line 173
            getstatic org.eclipse.jetty.util.SocketAddressResolver$Async.LOG:Lorg/eclipse/jetty/util/log/Logger;
            ldc "Resolved {} in {} ms"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2
            aastore
            dup
            iconst_1
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            lload 9 /* elapsed */
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokeinterface org.eclipse.jetty.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
        12: .line 175
      StackMap locals: long java.net.InetAddress[] long
      StackMap stack:
            new java.util.ArrayList
            dup
            aload 8 /* addresses */
            arraylength
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 11 /* result */
        start local 11 // java.util.List result
        13: .line 176
            aload 8 /* addresses */
            dup
            astore 15
            arraylength
            istore 14
            iconst_0
            istore 13
            goto 17
      StackMap locals: org.eclipse.jetty.util.SocketAddressResolver$Async org.eclipse.jetty.util.Promise java.lang.String int org.eclipse.jetty.util.thread.Scheduler$Task java.util.concurrent.atomic.AtomicBoolean long java.net.InetAddress[] long java.util.List top int int java.net.InetAddress[]
      StackMap stack:
        14: aload 15
            iload 13
            aaload
            astore 12 /* address */
        start local 12 // java.net.InetAddress address
        15: .line 178
            aload 11 /* result */
            new java.net.InetSocketAddress
            dup
            aload 12 /* address */
            iload 3
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // java.net.InetAddress address
        16: .line 176
            iinc 13 1
      StackMap locals:
      StackMap stack:
        17: iload 13
            iload 14
            if_icmplt 14
        18: .line 181
            aload 5 /* complete */
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifeq 32
        19: .line 183
            aload 11 /* result */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 21
        20: .line 184
            aload 1
            new java.net.UnknownHostException
            dup
            invokespecial java.net.UnknownHostException.<init>:()V
            invokeinterface org.eclipse.jetty.util.Promise.failed:(Ljava/lang/Throwable;)V
            goto 32
        21: .line 186
      StackMap locals: org.eclipse.jetty.util.SocketAddressResolver$Async org.eclipse.jetty.util.Promise java.lang.String int org.eclipse.jetty.util.thread.Scheduler$Task java.util.concurrent.atomic.AtomicBoolean long java.net.InetAddress[] long java.util.List
      StackMap stack:
            aload 1
            aload 11 /* result */
            invokeinterface org.eclipse.jetty.util.Promise.succeeded:(Ljava/lang/Object;)V
        end local 11 // java.util.List result
        end local 9 // long elapsed
        end local 8 // java.net.InetAddress[] addresses
        end local 6 // long start
        22: .line 188
            goto 32
        23: .line 189
      StackMap locals: org.eclipse.jetty.util.SocketAddressResolver$Async org.eclipse.jetty.util.Promise java.lang.String int org.eclipse.jetty.util.thread.Scheduler$Task java.util.concurrent.atomic.AtomicBoolean
      StackMap stack: java.lang.Throwable
            astore 6 /* x */
        start local 6 // java.lang.Throwable x
        24: .line 191
            aload 5 /* complete */
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifeq 26
        25: .line 192
            aload 1
            aload 6 /* x */
            invokeinterface org.eclipse.jetty.util.Promise.failed:(Ljava/lang/Throwable;)V
        end local 6 // java.lang.Throwable x
        26: .line 196
      StackMap locals:
      StackMap stack:
            aload 4 /* task */
            ifnull 34
        27: .line 197
            aload 4 /* task */
            invokeinterface org.eclipse.jetty.util.thread.Scheduler$Task.cancel:()Z
            pop
            goto 34
        28: .line 195
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 16
        29: .line 196
            aload 4 /* task */
            ifnull 31
        30: .line 197
            aload 4 /* task */
            invokeinterface org.eclipse.jetty.util.thread.Scheduler$Task.cancel:()Z
            pop
        31: .line 198
      StackMap locals: org.eclipse.jetty.util.SocketAddressResolver$Async org.eclipse.jetty.util.Promise java.lang.String int org.eclipse.jetty.util.thread.Scheduler$Task java.util.concurrent.atomic.AtomicBoolean top top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 16
            athrow
        32: .line 196
      StackMap locals: org.eclipse.jetty.util.SocketAddressResolver$Async org.eclipse.jetty.util.Promise java.lang.String int org.eclipse.jetty.util.thread.Scheduler$Task java.util.concurrent.atomic.AtomicBoolean
      StackMap stack:
            aload 4 /* task */
            ifnull 34
        33: .line 197
            aload 4 /* task */
            invokeinterface org.eclipse.jetty.util.thread.Scheduler$Task.cancel:()Z
            pop
        end local 5 // java.util.concurrent.atomic.AtomicBoolean complete
        end local 4 // org.eclipse.jetty.util.thread.Scheduler$Task task
        34: .line 199
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   35     0       this  Lorg/eclipse/jetty/util/SocketAddressResolver$Async;
            1   34     4       task  Lorg/eclipse/jetty/util/thread/Scheduler$Task;
            2   34     5   complete  Ljava/util/concurrent/atomic/AtomicBoolean;
            4    7     6     thread  Ljava/lang/Thread;
            8   22     6      start  J
            9   22     8  addresses  [Ljava/net/InetAddress;
           10   22     9    elapsed  J
           13   22    11     result  Ljava/util/List<Ljava/net/InetSocketAddress;>;
           15   16    12    address  Ljava/net/InetAddress;
           24   26     6          x  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           7    22      23  Class java.lang.Throwable
           7    26      28  any

  private void lambda$1(java.util.concurrent.atomic.AtomicBoolean, org.eclipse.jetty.util.Promise, java.lang.Thread);
    descriptor: (Ljava/util/concurrent/atomic/AtomicBoolean;Lorg/eclipse/jetty/util/Promise;Ljava/lang/Thread;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
         0: .line 159
            aload 1
            iconst_0
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicBoolean.compareAndSet:(ZZ)Z
            ifeq 3
         1: .line 161
            aload 2
            new java.util.concurrent.TimeoutException
            dup
            new java.lang.StringBuilder
            dup
            ldc "DNS timeout "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.SocketAddressResolver$Async.getTimeout:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " ms"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.util.concurrent.TimeoutException.<init>:(Ljava/lang/String;)V
            invokeinterface org.eclipse.jetty.util.Promise.failed:(Ljava/lang/Throwable;)V
         2: .line 162
            aload 3
            invokevirtual java.lang.Thread.interrupt:()V
         3: .line 164
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.eclipse.jetty.util.SocketAddressResolver$Async this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/eclipse/jetty/util/SocketAddressResolver$Async;
}
SourceFile: "SocketAddressResolver.java"
NestHost: org.eclipse.jetty.util.SocketAddressResolver
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public Async = org.eclipse.jetty.util.SocketAddressResolver$Async of org.eclipse.jetty.util.SocketAddressResolver
  public abstract Task = org.eclipse.jetty.util.thread.Scheduler$Task of org.eclipse.jetty.util.thread.Scheduler
    RuntimeVisibleAnnotations: 
      org.eclipse.jetty.util.annotation.ManagedObject(value = "The asynchronous address resolver")