class org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext
  super_class: java.lang.Object
{
  private final java.util.function.Consumer<java.net.URLConnection> configCallback;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Ljava/net/URLConnection;>;

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

  private final java.net.URL url;
    descriptor: Ljava/net/URL;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector> tryConnectors;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$Connector;>;

  private org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector winner;
    descriptor: Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$Connector;
    flags: (0x0002) ACC_PRIVATE

  private java.net.URLConnection openedConnection;
    descriptor: Ljava/net/URLConnection;
    flags: (0x0002) ACC_PRIVATE

  private java.io.IOException exProxy;
    descriptor: Ljava/io/IOException;
    flags: (0x0002) ACC_PRIVATE

  private java.io.IOException exDirect;
    descriptor: Ljava/io/IOException;
    flags: (0x0002) ACC_PRIVATE

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

  final org.graalvm.component.installer.remote.ProxyConnectionFactory this$0;
    descriptor: Lorg/graalvm/component/installer/remote/ProxyConnectionFactory;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(java.net.URL, java.util.function.Consumer<java.net.URLConnection>, java.util.concurrent.CountDownLatch);
    descriptor: (Lorg/graalvm/component/installer/remote/ProxyConnectionFactory;Ljava/net/URL;Ljava/util/function/Consumer;Ljava/util/concurrent/CountDownLatch;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
        start local 2 // java.net.URL url
        start local 3 // java.util.function.Consumer configCallback
        start local 4 // java.util.concurrent.CountDownLatch latch
         0: .line 188
            aload 0 /* this */
            aload 1
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.this$0:Lorg/graalvm/component/installer/remote/ProxyConnectionFactory;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 175
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.tryConnectors:Ljava/util/List;
         2: .line 189
            aload 0 /* this */
            aload 3 /* configCallback */
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.configCallback:Ljava/util/function/Consumer;
         3: .line 190
            aload 0 /* this */
            aload 4 /* latch */
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.countDown:Ljava/util/concurrent/CountDownLatch;
         4: .line 191
            aload 0 /* this */
            aload 2 /* url */
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.url:Ljava/net/URL;
         5: .line 192
            return
        end local 4 // java.util.concurrent.CountDownLatch latch
        end local 3 // java.util.function.Consumer configCallback
        end local 2 // java.net.URL url
        end local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0            this  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$ConnectionContext;
            0    6     2             url  Ljava/net/URL;
            0    6     3  configCallback  Ljava/util/function/Consumer<Ljava/net/URLConnection;>;
            0    6     4           latch  Ljava/util/concurrent/CountDownLatch;
    Signature: (Ljava/net/URL;Ljava/util/function/Consumer<Ljava/net/URLConnection;>;Ljava/util/concurrent/CountDownLatch;)V
    MethodParameters:
                Name  Flags
      this$0          final
      url             
      configCallback  
      latch           

  synchronized java.net.URLConnection getConnection();
    descriptor: ()Ljava/net/URLConnection;
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=8, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
         0: .line 195
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.openedConnection:Ljava/net/URLConnection;
            ifnonnull 6
         1: .line 196
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.exDirect:Ljava/io/IOException;
            ifnull 3
         2: .line 197
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.exDirect:Ljava/io/IOException;
            athrow
         3: .line 198
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.exProxy:Ljava/io/IOException;
            ifnull 5
         4: .line 199
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.exProxy:Ljava/io/IOException;
            athrow
         5: .line 201
      StackMap locals:
      StackMap stack:
            new java.net.ConnectException
            dup
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.this$0:Lorg/graalvm/component/installer/remote/ProxyConnectionFactory;
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "EXC_CannotConnectTo"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.url:Ljava/net/URL;
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.l10n:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.net.ConnectException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 203
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.openedConnection:Ljava/net/URLConnection;
            areturn
        end local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$ConnectionContext;
    Exceptions:
      throws java.io.IOException

  boolean setOutcome(org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector, java.net.URLConnection);
    descriptor: (Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$Connector;Ljava/net/URLConnection;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
        start local 1 // org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector w
        start local 2 // java.net.URLConnection opened
         0: .line 208
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         1: .line 209
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.winner:Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$Connector;
            ifnull 4
         2: .line 210
            aload 3
            monitorexit
         3: iconst_0
            ireturn
         4: .line 212
      StackMap locals: org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext
      StackMap stack:
            aload 0 /* this */
            aload 1 /* w */
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.winner:Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$Connector;
         5: .line 213
            aload 0 /* this */
            aload 2 /* opened */
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.openedConnection:Ljava/net/URLConnection;
         6: .line 208
            aload 3
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 3
            monitorexit
         9: athrow
        10: .line 215
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.countDown:Ljava/util/concurrent/CountDownLatch;
            ifnull 12
        11: .line 216
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.countDown:Ljava/util/concurrent/CountDownLatch;
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
        12: .line 218
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // java.net.URLConnection opened
        end local 1 // org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector w
        end local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    this  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$ConnectionContext;
            0   13     1       w  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$Connector;
            0   13     2  opened  Ljava/net/URLConnection;
      Exception table:
        from    to  target  type
           1     3       8  any
           4     7       8  any
           8     9       8  any
    MethodParameters:
        Name  Flags
      w       
      opened  

  void setOutcome(boolean, java.io.IOException);
    descriptor: (ZLjava/io/IOException;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
        start local 1 // boolean direct
        start local 2 // java.io.IOException e
         0: .line 222
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         1: .line 223
            iload 1 /* direct */
            ifeq 4
         2: .line 224
            aload 0 /* this */
            aload 2 /* e */
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.exDirect:Ljava/io/IOException;
         3: .line 225
            goto 5
         4: .line 226
      StackMap locals: org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext
      StackMap stack:
            aload 0 /* this */
            aload 2 /* e */
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.exProxy:Ljava/io/IOException;
         5: .line 228
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.outcomes:I
            iconst_1
            iadd
            dup_x1
            putfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.outcomes:I
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.tryConnectors:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            if_icmpne 7
         6: .line 229
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.countDown:Ljava/util/concurrent/CountDownLatch;
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         7: .line 222
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 3
            monitorexit
        10: athrow
        11: .line 232
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.io.IOException e
        end local 1 // boolean direct
        end local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$ConnectionContext;
            0   12     1  direct  Z
            0   12     2       e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    MethodParameters:
        Name  Flags
      direct  
      e       

  synchronized java.io.IOException getConnectException();
    descriptor: ()Ljava/io/IOException;
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=8, locals=1, args_size=1
        start local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
         0: .line 235
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.exDirect:Ljava/io/IOException;
            ifnull 2
         1: .line 236
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.exDirect:Ljava/io/IOException;
            areturn
         2: .line 238
      StackMap locals:
      StackMap stack:
            new java.net.ConnectException
            dup
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.this$0:Lorg/graalvm/component/installer/remote/ProxyConnectionFactory;
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory.feedback:Lorg/graalvm/component/installer/Feedback;
            ldc "EXC_TimeoutConnectTo"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.url:Ljava/net/URL;
            aastore
            invokeinterface org.graalvm.component.installer.Feedback.l10n:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.net.ConnectException.<init>:(Ljava/lang/String;)V
            areturn
        end local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$ConnectionContext;

  synchronized void submit(org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector);
    descriptor: (Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$Connector;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
        start local 1 // org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector c
         0: .line 242
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.tryConnectors:Ljava/util/List;
            aload 1 /* c */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 243
            return
        end local 1 // org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector c
        end local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$ConnectionContext;
            0    2     1     c  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$Connector;
    MethodParameters:
      Name  Flags
      c     

  void start();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
         0: .line 246
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.tryConnectors:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 3
      StackMap locals: org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector
            astore 1 /* c */
        start local 1 // org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector c
         2: .line 247
            aload 0 /* this */
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext.this$0:Lorg/graalvm/component/installer/remote/ProxyConnectionFactory;
            getfield org.graalvm.component.installer.remote.ProxyConnectionFactory.connectors:Ljava/util/concurrent/ExecutorService;
            aload 1 /* c */
            invokeinterface java.util.concurrent.ExecutorService.submit:(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
            pop
        end local 1 // org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector c
         3: .line 246
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 249
            return
        end local 0 // org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$ConnectionContext;
            2    3     1     c  Lorg/graalvm/component/installer/remote/ProxyConnectionFactory$Connector;
}
SourceFile: "ProxyConnectionFactory.java"
NestHost: org.graalvm.component.installer.remote.ProxyConnectionFactory
InnerClasses:
  private ConnectionContext = org.graalvm.component.installer.remote.ProxyConnectionFactory$ConnectionContext of org.graalvm.component.installer.remote.ProxyConnectionFactory
  final Connector = org.graalvm.component.installer.remote.ProxyConnectionFactory$Connector of org.graalvm.component.installer.remote.ProxyConnectionFactory