public final class com.sun.jndi.ldap.Connection implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.sun.jndi.ldap.Connection
  super_class: java.lang.Object
{
  private static final boolean debug;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int dump;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private final java.lang.Thread worker;
    descriptor: Ljava/lang/Thread;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean v3;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  public final java.lang.String host;
    descriptor: Ljava/lang/String;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  public final int port;
    descriptor: I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL

  private boolean bound;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.io.OutputStream traceFile;
    descriptor: Ljava/io/OutputStream;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String traceTagIn;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String traceTagOut;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  public java.io.InputStream inStream;
    descriptor: Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC

  public java.io.OutputStream outStream;
    descriptor: Ljava/io/OutputStream;
    flags: (0x0001) ACC_PUBLIC

  public java.net.Socket sock;
    descriptor: Ljava/net/Socket;
    flags: (0x0001) ACC_PUBLIC

  private final com.sun.jndi.ldap.LdapClient parent;
    descriptor: Lcom/sun/jndi/ldap/LdapClient;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private com.sun.jndi.ldap.LdapRequest pendingRequests;
    descriptor: Lcom/sun/jndi/ldap/LdapRequest;
    flags: (0x0002) ACC_PRIVATE

  volatile java.io.IOException closureReason;
    descriptor: Ljava/io/IOException;
    flags: (0x0040) ACC_VOLATILE

  volatile boolean useable;
    descriptor: Z
    flags: (0x0040) ACC_VOLATILE

  int readTimeout;
    descriptor: I
    flags: (0x0000) 

  int connectTimeout;
    descriptor: I
    flags: (0x0000) 

  private static final boolean IS_HOSTNAME_VERIFICATION_DISABLED;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.lang.Object pauseLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean paused;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 165
            invokestatic com.sun.jndi.ldap.Connection.hostnameVerificationDisabledValue:()Z
         1: .line 164
            putstatic com.sun.jndi.ldap.Connection.IS_HOSTNAME_VERIFICATION_DISABLED:Z
         2: .line 165
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static boolean hostnameVerificationDisabledValue();
    descriptor: ()Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=0
         0: .line 168
            invokedynamic run()Ljava/security/PrivilegedAction;
              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:
                  ()Ljava/lang/Object;
                  com/sun/jndi/ldap/Connection.lambda$0()Ljava/lang/String; (6)
                  ()Ljava/lang/String;
            astore 0 /* act */
        start local 0 // java.security.PrivilegedAction act
         1: .line 170
            aload 0 /* act */
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* prop */
        start local 1 // java.lang.String prop
         2: .line 171
            aload 1 /* prop */
            ifnonnull 4
         3: .line 172
            iconst_0
            ireturn
         4: .line 174
      StackMap locals: java.security.PrivilegedAction java.lang.String
      StackMap stack:
            aload 1 /* prop */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 5
            iconst_1
            goto 6
      StackMap locals:
      StackMap stack:
         5: aload 1 /* prop */
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
      StackMap locals:
      StackMap stack: int
         6: ireturn
        end local 1 // java.lang.String prop
        end local 0 // java.security.PrivilegedAction act
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    7     0   act  Ljava/security/PrivilegedAction<Ljava/lang/String;>;
            2    7     1  prop  Ljava/lang/String;

  void setV3(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // boolean v
         0: .line 180
            aload 0 /* this */
            iload 1 /* v */
            putfield com.sun.jndi.ldap.Connection.v3:Z
         1: .line 181
            return
        end local 1 // boolean v
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/jndi/ldap/Connection;
            0    2     1     v  Z
    MethodParameters:
      Name  Flags
      v     

  void setBound();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.sun.jndi.ldap.Connection this
         0: .line 188
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.bound:Z
         1: .line 189
            return
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/jndi/ldap/Connection;

  void <init>(com.sun.jndi.ldap.LdapClient, java.lang.String, int, java.lang.String, int, int, java.io.OutputStream);
    descriptor: (Lcom/sun/jndi/ldap/LdapClient;Ljava/lang/String;ILjava/lang/String;IILjava/io/OutputStream;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=11, args_size=8
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.LdapClient parent
        start local 2 // java.lang.String host
        start local 3 // int port
        start local 4 // java.lang.String socketFactory
        start local 5 // int connectTimeout
        start local 6 // int readTimeout
        start local 7 // java.io.OutputStream trace
         0: .line 197
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 120
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.v3:Z
         2: .line 127
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.bound:Z
         3: .line 130
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
         4: .line 131
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.traceTagIn:Ljava/lang/String;
         5: .line 132
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.traceTagOut:Ljava/lang/String;
         6: .line 151
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.outMsgId:I
         7: .line 157
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         8: .line 159
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.closureReason:Ljava/io/IOException;
         9: .line 160
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.useable:Z
        10: .line 739
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield com.sun.jndi.ldap.Connection.pauseLock:Ljava/lang/Object;
        11: .line 740
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.paused:Z
        12: .line 200
            aload 0 /* this */
            aload 2 /* host */
            putfield com.sun.jndi.ldap.Connection.host:Ljava/lang/String;
        13: .line 201
            aload 0 /* this */
            iload 3 /* port */
            putfield com.sun.jndi.ldap.Connection.port:I
        14: .line 202
            aload 0 /* this */
            aload 1 /* parent */
            putfield com.sun.jndi.ldap.Connection.parent:Lcom/sun/jndi/ldap/LdapClient;
        15: .line 203
            aload 0 /* this */
            iload 6 /* readTimeout */
            putfield com.sun.jndi.ldap.Connection.readTimeout:I
        16: .line 204
            aload 0 /* this */
            iload 5 /* connectTimeout */
            putfield com.sun.jndi.ldap.Connection.connectTimeout:I
        17: .line 206
            aload 7 /* trace */
            ifnull 21
        18: .line 207
            aload 0 /* this */
            aload 7 /* trace */
            putfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
        19: .line 208
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "<- "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* host */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 3 /* port */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "\n\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield com.sun.jndi.ldap.Connection.traceTagIn:Ljava/lang/String;
        20: .line 209
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "-> "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* host */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 3 /* port */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "\n\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield com.sun.jndi.ldap.Connection.traceTagOut:Ljava/lang/String;
        21: .line 216
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapClient java.lang.String int java.lang.String int int java.io.OutputStream
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* host */
            iload 3 /* port */
            aload 4 /* socketFactory */
            iload 5 /* connectTimeout */
            invokevirtual com.sun.jndi.ldap.Connection.createSocket:(Ljava/lang/String;ILjava/lang/String;I)Ljava/net/Socket;
            putfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
        22: .line 222
            aload 0 /* this */
            new java.io.BufferedInputStream
            dup
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getInputStream:()Ljava/io/InputStream;
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            putfield com.sun.jndi.ldap.Connection.inStream:Ljava/io/InputStream;
        23: .line 223
            aload 0 /* this */
            new java.io.BufferedOutputStream
            dup
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            invokevirtual java.net.Socket.getOutputStream:()Ljava/io/OutputStream;
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            putfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
        24: .line 225
            goto 36
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
        25: astore 8 /* e */
        start local 8 // java.lang.reflect.InvocationTargetException e
        26: .line 226
            aload 8 /* e */
            invokevirtual java.lang.reflect.InvocationTargetException.getTargetException:()Ljava/lang/Throwable;
            astore 9 /* realException */
        start local 9 // java.lang.Throwable realException
        27: .line 230
            new javax.naming.CommunicationException
            dup
            new java.lang.StringBuilder
            dup
            aload 2 /* host */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 3 /* port */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.naming.CommunicationException.<init>:(Ljava/lang/String;)V
        28: .line 229
            astore 10 /* ce */
        start local 10 // javax.naming.CommunicationException ce
        29: .line 231
            aload 10 /* ce */
            aload 9 /* realException */
            invokevirtual javax.naming.CommunicationException.setRootCause:(Ljava/lang/Throwable;)V
        30: .line 232
            aload 10 /* ce */
            athrow
        end local 10 // javax.naming.CommunicationException ce
        end local 9 // java.lang.Throwable realException
        end local 8 // java.lang.reflect.InvocationTargetException e
        31: .line 233
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 8 /* e */
        start local 8 // java.lang.Exception e
        32: .line 238
            new javax.naming.CommunicationException
            dup
            new java.lang.StringBuilder
            dup
            aload 2 /* host */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 3 /* port */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial javax.naming.CommunicationException.<init>:(Ljava/lang/String;)V
        33: .line 237
            astore 9 /* ce */
        start local 9 // javax.naming.CommunicationException ce
        34: .line 239
            aload 9 /* ce */
            aload 8 /* e */
            invokevirtual javax.naming.CommunicationException.setRootCause:(Ljava/lang/Throwable;)V
        35: .line 240
            aload 9 /* ce */
            athrow
        end local 9 // javax.naming.CommunicationException ce
        end local 8 // java.lang.Exception e
        36: .line 243
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic com.sun.jndi.ldap.Obj.helper:Lcom/sun/jndi/ldap/VersionHelper;
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.VersionHelper.createThread:(Ljava/lang/Runnable;)Ljava/lang/Thread;
            putfield com.sun.jndi.ldap.Connection.worker:Ljava/lang/Thread;
        37: .line 244
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.worker:Ljava/lang/Thread;
            iconst_1
            invokevirtual java.lang.Thread.setDaemon:(Z)V
        38: .line 245
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.worker:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.start:()V
        39: .line 246
            return
        end local 7 // java.io.OutputStream trace
        end local 6 // int readTimeout
        end local 5 // int connectTimeout
        end local 4 // java.lang.String socketFactory
        end local 3 // int port
        end local 2 // java.lang.String host
        end local 1 // com.sun.jndi.ldap.LdapClient parent
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   40     0            this  Lcom/sun/jndi/ldap/Connection;
            0   40     1          parent  Lcom/sun/jndi/ldap/LdapClient;
            0   40     2            host  Ljava/lang/String;
            0   40     3            port  I
            0   40     4   socketFactory  Ljava/lang/String;
            0   40     5  connectTimeout  I
            0   40     6     readTimeout  I
            0   40     7           trace  Ljava/io/OutputStream;
           26   31     8               e  Ljava/lang/reflect/InvocationTargetException;
           27   31     9   realException  Ljava/lang/Throwable;
           29   31    10              ce  Ljavax/naming/CommunicationException;
           32   36     8               e  Ljava/lang/Exception;
           34   36     9              ce  Ljavax/naming/CommunicationException;
      Exception table:
        from    to  target  type
          21    24      25  Class java.lang.reflect.InvocationTargetException
          21    24      31  Class java.lang.Exception
    Exceptions:
      throws javax.naming.NamingException
    MethodParameters:
                Name  Flags
      parent          
      host            
      port            
      socketFactory   
      connectTimeout  
      readTimeout     
      trace           

  private java.net.InetSocketAddress createInetSocketAddress(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Ljava/net/InetSocketAddress;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // java.lang.String host
        start local 2 // int port
         0: .line 252
            new java.net.InetSocketAddress
            dup
            aload 1 /* host */
            iload 2 /* port */
            invokespecial java.net.InetSocketAddress.<init>:(Ljava/lang/String;I)V
            areturn
        end local 2 // int port
        end local 1 // java.lang.String host
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jndi/ldap/Connection;
            0    1     1  host  Ljava/lang/String;
            0    1     2  port  I
    MethodParameters:
      Name  Flags
      host  
      port  

  private java.net.Socket createSocket(java.lang.String, int, java.lang.String, int);
    descriptor: (Ljava/lang/String;ILjava/lang/String;I)Ljava/net/Socket;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=5
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // java.lang.String host
        start local 2 // int port
        start local 3 // java.lang.String socketFactory
        start local 4 // int connectTimeout
         0: .line 267
            aconst_null
            astore 5 /* socket */
        start local 5 // java.net.Socket socket
         1: .line 269
            aload 3 /* socketFactory */
            ifnull 15
         2: .line 275
            getstatic com.sun.jndi.ldap.Obj.helper:Lcom/sun/jndi/ldap/VersionHelper;
            aload 3 /* socketFactory */
            invokevirtual com.sun.jndi.ldap.VersionHelper.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
         3: .line 274
            astore 6 /* socketFactoryClass */
        start local 6 // java.lang.Class socketFactoryClass
         4: .line 277
            aload 6 /* socketFactoryClass */
            ldc "getDefault"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
         5: .line 276
            astore 7 /* getDefault */
        start local 7 // java.lang.reflect.Method getDefault
         6: .line 278
            aload 7 /* getDefault */
            aconst_null
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javax.net.SocketFactory
            astore 8 /* factory */
        start local 8 // javax.net.SocketFactory factory
         7: .line 282
            iload 4 /* connectTimeout */
            ifle 12
         8: .line 285
            aload 0 /* this */
            aload 1 /* host */
            iload 2 /* port */
            invokevirtual com.sun.jndi.ldap.Connection.createInetSocketAddress:(Ljava/lang/String;I)Ljava/net/InetSocketAddress;
         9: .line 284
            astore 9 /* endpoint */
        start local 9 // java.net.InetSocketAddress endpoint
        10: .line 288
            aload 8 /* factory */
            invokevirtual javax.net.SocketFactory.createSocket:()Ljava/net/Socket;
            astore 5 /* socket */
        11: .line 296
            aload 5 /* socket */
            aload 9 /* endpoint */
            iload 4 /* connectTimeout */
            invokevirtual java.net.Socket.connect:(Ljava/net/SocketAddress;I)V
        end local 9 // java.net.InetSocketAddress endpoint
        12: .line 300
      StackMap locals: com.sun.jndi.ldap.Connection java.lang.String int java.lang.String int java.net.Socket java.lang.Class java.lang.reflect.Method javax.net.SocketFactory
      StackMap stack:
            aload 5 /* socket */
            ifnonnull 21
        13: .line 306
            aload 8 /* factory */
            aload 1 /* host */
            iload 2 /* port */
            invokevirtual javax.net.SocketFactory.createSocket:(Ljava/lang/String;I)Ljava/net/Socket;
            astore 5 /* socket */
        end local 8 // javax.net.SocketFactory factory
        end local 7 // java.lang.reflect.Method getDefault
        end local 6 // java.lang.Class socketFactoryClass
        14: .line 308
            goto 21
        15: .line 310
      StackMap locals:
      StackMap stack:
            iload 4 /* connectTimeout */
            ifle 19
        16: .line 312
            aload 0 /* this */
            aload 1 /* host */
            iload 2 /* port */
            invokevirtual com.sun.jndi.ldap.Connection.createInetSocketAddress:(Ljava/lang/String;I)Ljava/net/InetSocketAddress;
            astore 6 /* endpoint */
        start local 6 // java.net.InetSocketAddress endpoint
        17: .line 314
            new java.net.Socket
            dup
            invokespecial java.net.Socket.<init>:()V
            astore 5 /* socket */
        18: .line 320
            aload 5 /* socket */
            aload 6 /* endpoint */
            iload 4 /* connectTimeout */
            invokevirtual java.net.Socket.connect:(Ljava/net/SocketAddress;I)V
        end local 6 // java.net.InetSocketAddress endpoint
        19: .line 325
      StackMap locals:
      StackMap stack:
            aload 5 /* socket */
            ifnonnull 21
        20: .line 330
            new java.net.Socket
            dup
            aload 1 /* host */
            iload 2 /* port */
            invokespecial java.net.Socket.<init>:(Ljava/lang/String;I)V
            astore 5 /* socket */
        21: .line 338
      StackMap locals:
      StackMap stack:
            aload 5 /* socket */
            instanceof javax.net.ssl.SSLSocket
            ifeq 32
        22: .line 339
            aload 5 /* socket */
            checkcast javax.net.ssl.SSLSocket
            astore 6 /* sslSocket */
        start local 6 // javax.net.ssl.SSLSocket sslSocket
        23: .line 340
            getstatic com.sun.jndi.ldap.Connection.IS_HOSTNAME_VERIFICATION_DISABLED:Z
            ifne 27
        24: .line 341
            aload 6 /* sslSocket */
            invokevirtual javax.net.ssl.SSLSocket.getSSLParameters:()Ljavax/net/ssl/SSLParameters;
            astore 7 /* param */
        start local 7 // javax.net.ssl.SSLParameters param
        25: .line 342
            aload 7 /* param */
            ldc "LDAPS"
            invokevirtual javax.net.ssl.SSLParameters.setEndpointIdentificationAlgorithm:(Ljava/lang/String;)V
        26: .line 343
            aload 6 /* sslSocket */
            aload 7 /* param */
            invokevirtual javax.net.ssl.SSLSocket.setSSLParameters:(Ljavax/net/ssl/SSLParameters;)V
        end local 7 // javax.net.ssl.SSLParameters param
        27: .line 345
      StackMap locals: javax.net.ssl.SSLSocket
      StackMap stack:
            iload 4 /* connectTimeout */
            ifle 32
        28: .line 346
            aload 6 /* sslSocket */
            invokevirtual javax.net.ssl.SSLSocket.getSoTimeout:()I
            istore 7 /* socketTimeout */
        start local 7 // int socketTimeout
        29: .line 347
            aload 6 /* sslSocket */
            iload 4 /* connectTimeout */
            invokevirtual javax.net.ssl.SSLSocket.setSoTimeout:(I)V
        30: .line 348
            aload 6 /* sslSocket */
            invokevirtual javax.net.ssl.SSLSocket.startHandshake:()V
        31: .line 349
            aload 6 /* sslSocket */
            iload 7 /* socketTimeout */
            invokevirtual javax.net.ssl.SSLSocket.setSoTimeout:(I)V
        end local 7 // int socketTimeout
        end local 6 // javax.net.ssl.SSLSocket sslSocket
        32: .line 352
      StackMap locals:
      StackMap stack:
            aload 5 /* socket */
            areturn
        end local 5 // java.net.Socket socket
        end local 4 // int connectTimeout
        end local 3 // java.lang.String socketFactory
        end local 2 // int port
        end local 1 // java.lang.String host
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   33     0                this  Lcom/sun/jndi/ldap/Connection;
            0   33     1                host  Ljava/lang/String;
            0   33     2                port  I
            0   33     3       socketFactory  Ljava/lang/String;
            0   33     4      connectTimeout  I
            1   33     5              socket  Ljava/net/Socket;
            4   14     6  socketFactoryClass  Ljava/lang/Class<+Ljavax/net/SocketFactory;>;
            6   14     7          getDefault  Ljava/lang/reflect/Method;
            7   14     8             factory  Ljavax/net/SocketFactory;
           10   12     9            endpoint  Ljava/net/InetSocketAddress;
           17   19     6            endpoint  Ljava/net/InetSocketAddress;
           23   32     6           sslSocket  Ljavax/net/ssl/SSLSocket;
           25   27     7               param  Ljavax/net/ssl/SSLParameters;
           29   32     7       socketTimeout  I
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
                Name  Flags
      host            
      port            
      socketFactory   
      connectTimeout  

  synchronized int getMsgId();
    descriptor: ()I
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.jndi.ldap.Connection this
         0: .line 362
            aload 0 /* this */
            dup
            getfield com.sun.jndi.ldap.Connection.outMsgId:I
            iconst_1
            iadd
            dup_x1
            putfield com.sun.jndi.ldap.Connection.outMsgId:I
            ireturn
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jndi/ldap/Connection;

  com.sun.jndi.ldap.LdapRequest writeRequest(com.sun.jndi.ldap.BerEncoder, int);
    descriptor: (Lcom/sun/jndi/ldap/BerEncoder;I)Lcom/sun/jndi/ldap/LdapRequest;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.BerEncoder ber
        start local 2 // int msgId
         0: .line 366
            aload 0 /* this */
            aload 1 /* ber */
            iload 2 /* msgId */
            iconst_0
            iconst_m1
            invokevirtual com.sun.jndi.ldap.Connection.writeRequest:(Lcom/sun/jndi/ldap/BerEncoder;IZI)Lcom/sun/jndi/ldap/LdapRequest;
            areturn
        end local 2 // int msgId
        end local 1 // com.sun.jndi.ldap.BerEncoder ber
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/sun/jndi/ldap/Connection;
            0    1     1    ber  Lcom/sun/jndi/ldap/BerEncoder;
            0    1     2  msgId  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      ber    
      msgId  

  com.sun.jndi.ldap.LdapRequest writeRequest(com.sun.jndi.ldap.BerEncoder, int, boolean);
    descriptor: (Lcom/sun/jndi/ldap/BerEncoder;IZ)Lcom/sun/jndi/ldap/LdapRequest;
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.BerEncoder ber
        start local 2 // int msgId
        start local 3 // boolean pauseAfterReceipt
         0: .line 371
            aload 0 /* this */
            aload 1 /* ber */
            iload 2 /* msgId */
            iload 3 /* pauseAfterReceipt */
            iconst_m1
            invokevirtual com.sun.jndi.ldap.Connection.writeRequest:(Lcom/sun/jndi/ldap/BerEncoder;IZI)Lcom/sun/jndi/ldap/LdapRequest;
            areturn
        end local 3 // boolean pauseAfterReceipt
        end local 2 // int msgId
        end local 1 // com.sun.jndi.ldap.BerEncoder ber
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    1     0               this  Lcom/sun/jndi/ldap/Connection;
            0    1     1                ber  Lcom/sun/jndi/ldap/BerEncoder;
            0    1     2              msgId  I
            0    1     3  pauseAfterReceipt  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                   Name  Flags
      ber                
      msgId              
      pauseAfterReceipt  

  com.sun.jndi.ldap.LdapRequest writeRequest(com.sun.jndi.ldap.BerEncoder, int, boolean, int);
    descriptor: (Lcom/sun/jndi/ldap/BerEncoder;IZI)Lcom/sun/jndi/ldap/LdapRequest;
    flags: (0x0000) 
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.BerEncoder ber
        start local 2 // int msgId
        start local 3 // boolean pauseAfterReceipt
        start local 4 // int replyQueueCapacity
         0: .line 378
            new com.sun.jndi.ldap.LdapRequest
            dup
            iload 2 /* msgId */
            iload 3 /* pauseAfterReceipt */
            iload 4 /* replyQueueCapacity */
            invokespecial com.sun.jndi.ldap.LdapRequest.<init>:(IZI)V
         1: .line 377
            astore 5 /* req */
        start local 5 // com.sun.jndi.ldap.LdapRequest req
         2: .line 379
            aload 0 /* this */
            aload 5 /* req */
            invokevirtual com.sun.jndi.ldap.Connection.addRequest:(Lcom/sun/jndi/ldap/LdapRequest;)V
         3: .line 381
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 5
         4: .line 382
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceTagOut:Ljava/lang/String;
            aload 1 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getBuf:()[B
            iconst_0
            aload 1 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
            invokestatic com.sun.jndi.ldap.Ber.dumpBER:(Ljava/io/OutputStream;Ljava/lang/String;[BII)V
         5: .line 389
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.unpauseReader:()V
         6: .line 396
            aload 0 /* this */
            dup
            astore 6
            monitorenter
         7: .line 397
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            aload 1 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getBuf:()[B
            iconst_0
            aload 1 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
            invokevirtual java.io.OutputStream.write:([BII)V
         8: .line 398
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
         9: .line 396
            aload 6
            monitorexit
        10: goto 16
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.BerEncoder int int int com.sun.jndi.ldap.LdapRequest com.sun.jndi.ldap.Connection
      StackMap stack: java.lang.Throwable
        11: aload 6
            monitorexit
        12: athrow
        13: .line 400
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.BerEncoder int int int com.sun.jndi.ldap.LdapRequest
      StackMap stack: java.io.IOException
            astore 6 /* e */
        start local 6 // java.io.IOException e
        14: .line 401
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
        15: .line 402
            aload 0 /* this */
            aload 6 /* e */
            dup_x1
            putfield com.sun.jndi.ldap.Connection.closureReason:Ljava/io/IOException;
            athrow
        end local 6 // java.io.IOException e
        16: .line 405
      StackMap locals:
      StackMap stack:
            aload 5 /* req */
            areturn
        end local 5 // com.sun.jndi.ldap.LdapRequest req
        end local 4 // int replyQueueCapacity
        end local 3 // boolean pauseAfterReceipt
        end local 2 // int msgId
        end local 1 // com.sun.jndi.ldap.BerEncoder ber
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   17     0                this  Lcom/sun/jndi/ldap/Connection;
            0   17     1                 ber  Lcom/sun/jndi/ldap/BerEncoder;
            0   17     2               msgId  I
            0   17     3   pauseAfterReceipt  Z
            0   17     4  replyQueueCapacity  I
            2   17     5                 req  Lcom/sun/jndi/ldap/LdapRequest;
           14   16     6                   e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7    10      11  any
          11    12      11  any
           6    13      13  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                    Name  Flags
      ber                 
      msgId               
      pauseAfterReceipt   
      replyQueueCapacity  

  com.sun.jndi.ldap.BerDecoder readReply(com.sun.jndi.ldap.LdapRequest);
    descriptor: (Lcom/sun/jndi/ldap/LdapRequest;)Lcom/sun/jndi/ldap/BerDecoder;
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.LdapRequest ldr
         0: .line 415
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         1: .line 416
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            ifnonnull 5
         2: .line 417
            new javax.naming.ServiceUnavailableException
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.host:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.port:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         3: .line 418
            ldc "; socket closed"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 417
            invokespecial javax.naming.ServiceUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 415
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest top com.sun.jndi.ldap.Connection
      StackMap stack:
            aload 3
            monitorexit
         6: goto 9
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: aload 3
            monitorexit
         8: athrow
         9: .line 422
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aconst_null
            astore 3 /* namingException */
        start local 3 // javax.naming.NamingException namingException
        10: .line 427
            aload 1 /* ldr */
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.readTimeout:I
            i2l
            invokevirtual com.sun.jndi.ldap.LdapRequest.getReplyBer:(J)Lcom/sun/jndi/ldap/BerDecoder;
            astore 2 /* rber */
        start local 2 // com.sun.jndi.ldap.BerDecoder rber
        11: .line 428
            goto 21
        end local 2 // com.sun.jndi.ldap.BerDecoder rber
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest top javax.naming.NamingException
      StackMap stack: java.lang.InterruptedException
        12: pop
        13: .line 429
            new javax.naming.InterruptedNamingException
            dup
        14: .line 430
            ldc "Interrupted during LDAP operation"
        15: .line 429
            invokespecial javax.naming.InterruptedNamingException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 431
      StackMap locals:
      StackMap stack: javax.naming.CommunicationException
            astore 4 /* ce */
        start local 4 // javax.naming.CommunicationException ce
        17: .line 433
            aload 4 /* ce */
            athrow
        end local 4 // javax.naming.CommunicationException ce
        18: .line 434
      StackMap locals:
      StackMap stack: javax.naming.NamingException
            astore 4 /* ne */
        start local 4 // javax.naming.NamingException ne
        19: .line 436
            aload 4 /* ne */
            astore 3 /* namingException */
        20: .line 437
            aconst_null
            astore 2 /* rber */
        end local 4 // javax.naming.NamingException ne
        start local 2 // com.sun.jndi.ldap.BerDecoder rber
        21: .line 440
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest com.sun.jndi.ldap.BerDecoder javax.naming.NamingException
      StackMap stack:
            aload 2 /* rber */
            ifnonnull 23
        22: .line 441
            aload 0 /* this */
            aload 1 /* ldr */
            aconst_null
            invokevirtual com.sun.jndi.ldap.Connection.abandonRequest:(Lcom/sun/jndi/ldap/LdapRequest;[Ljavax/naming/ldap/Control;)V
        23: .line 447
      StackMap locals:
      StackMap stack:
            aload 3 /* namingException */
            ifnull 25
        24: .line 449
            aload 3 /* namingException */
            athrow
        25: .line 451
      StackMap locals:
      StackMap stack:
            aload 2 /* rber */
            areturn
        end local 3 // javax.naming.NamingException namingException
        end local 2 // com.sun.jndi.ldap.BerDecoder rber
        end local 1 // com.sun.jndi.ldap.LdapRequest ldr
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   26     0             this  Lcom/sun/jndi/ldap/Connection;
            0   26     1              ldr  Lcom/sun/jndi/ldap/LdapRequest;
           11   12     2             rber  Lcom/sun/jndi/ldap/BerDecoder;
           21   26     2             rber  Lcom/sun/jndi/ldap/BerDecoder;
           10   26     3  namingException  Ljavax/naming/NamingException;
           17   18     4               ce  Ljavax/naming/CommunicationException;
           19   21     4               ne  Ljavax/naming/NamingException;
      Exception table:
        from    to  target  type
           1     6       7  any
           7     8       7  any
          10    11      12  Class java.lang.InterruptedException
          10    11      16  Class javax.naming.CommunicationException
          10    11      18  Class javax.naming.NamingException
    Exceptions:
      throws java.io.IOException, javax.naming.NamingException
    MethodParameters:
      Name  Flags
      ldr   

  private synchronized void addRequest(com.sun.jndi.ldap.LdapRequest);
    descriptor: (Lcom/sun/jndi/ldap/LdapRequest;)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.LdapRequest ldapRequest
         0: .line 462
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
        start local 2 // com.sun.jndi.ldap.LdapRequest ldr
         1: .line 463
            aload 2 /* ldr */
            ifnonnull 5
         2: .line 464
            aload 0 /* this */
            aload 1 /* ldapRequest */
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         3: .line 465
            aload 1 /* ldapRequest */
            aconst_null
            putfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
         4: .line 466
            goto 7
         5: .line 467
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 1 /* ldapRequest */
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
            putfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
         6: .line 468
            aload 0 /* this */
            aload 1 /* ldapRequest */
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         7: .line 470
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.sun.jndi.ldap.LdapRequest ldr
        end local 1 // com.sun.jndi.ldap.LdapRequest ldapRequest
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lcom/sun/jndi/ldap/Connection;
            0    8     1  ldapRequest  Lcom/sun/jndi/ldap/LdapRequest;
            1    8     2          ldr  Lcom/sun/jndi/ldap/LdapRequest;
    MethodParameters:
             Name  Flags
      ldapRequest  

  synchronized com.sun.jndi.ldap.LdapRequest findRequest(int);
    descriptor: (I)Lcom/sun/jndi/ldap/LdapRequest;
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // int msgId
         0: .line 474
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
        start local 2 // com.sun.jndi.ldap.LdapRequest ldr
         1: .line 475
            goto 5
         2: .line 476
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.msgId:I
            iload 1 /* msgId */
            if_icmpne 4
         3: .line 477
            aload 2 /* ldr */
            areturn
         4: .line 479
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
         5: .line 475
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            ifnonnull 2
         6: .line 481
            aconst_null
            areturn
        end local 2 // com.sun.jndi.ldap.LdapRequest ldr
        end local 1 // int msgId
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lcom/sun/jndi/ldap/Connection;
            0    7     1  msgId  I
            1    7     2    ldr  Lcom/sun/jndi/ldap/LdapRequest;
    MethodParameters:
       Name  Flags
      msgId  

  synchronized void removeRequest(com.sun.jndi.ldap.LdapRequest);
    descriptor: (Lcom/sun/jndi/ldap/LdapRequest;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.LdapRequest req
         0: .line 486
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
        start local 2 // com.sun.jndi.ldap.LdapRequest ldr
         1: .line 487
            aconst_null
            astore 3 /* ldrprev */
        start local 3 // com.sun.jndi.ldap.LdapRequest ldrprev
         2: .line 489
            goto 12
         3: .line 490
      StackMap locals: com.sun.jndi.ldap.LdapRequest com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 2 /* ldr */
            aload 1 /* req */
            if_acmpne 10
         4: .line 491
            aload 2 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.cancel:()V
         5: .line 493
            aload 3 /* ldrprev */
            ifnull 8
         6: .line 494
            aload 3 /* ldrprev */
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            putfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
         7: .line 495
            goto 9
         8: .line 496
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         9: .line 498
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            aconst_null
            putfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
        10: .line 500
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            astore 3 /* ldrprev */
        11: .line 501
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
        12: .line 489
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            ifnonnull 3
        13: .line 503
            return
        end local 3 // com.sun.jndi.ldap.LdapRequest ldrprev
        end local 2 // com.sun.jndi.ldap.LdapRequest ldr
        end local 1 // com.sun.jndi.ldap.LdapRequest req
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     0     this  Lcom/sun/jndi/ldap/Connection;
            0   14     1      req  Lcom/sun/jndi/ldap/LdapRequest;
            1   14     2      ldr  Lcom/sun/jndi/ldap/LdapRequest;
            2   14     3  ldrprev  Lcom/sun/jndi/ldap/LdapRequest;
    MethodParameters:
      Name  Flags
      req   

  void abandonRequest(com.sun.jndi.ldap.LdapRequest, javax.naming.ldap.Control[]);
    descriptor: (Lcom/sun/jndi/ldap/LdapRequest;[Ljavax/naming/ldap/Control;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.LdapRequest ldr
        start local 2 // javax.naming.ldap.Control[] reqCtls
         0: .line 507
            aload 0 /* this */
            aload 1 /* ldr */
            invokevirtual com.sun.jndi.ldap.Connection.removeRequest:(Lcom/sun/jndi/ldap/LdapRequest;)V
         1: .line 509
            new com.sun.jndi.ldap.BerEncoder
            dup
            sipush 256
            invokespecial com.sun.jndi.ldap.BerEncoder.<init>:(I)V
            astore 3 /* ber */
        start local 3 // com.sun.jndi.ldap.BerEncoder ber
         2: .line 510
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getMsgId:()I
            istore 4 /* abandonMsgId */
        start local 4 // int abandonMsgId
         3: .line 516
            aload 3 /* ber */
            bipush 48
            invokevirtual com.sun.jndi.ldap.BerEncoder.beginSeq:(I)V
         4: .line 517
            aload 3 /* ber */
            iload 4 /* abandonMsgId */
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeInt:(I)V
         5: .line 518
            aload 3 /* ber */
            aload 1 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.msgId:I
            bipush 80
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeInt:(II)V
         6: .line 520
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.v3:Z
            ifeq 8
         7: .line 521
            aload 3 /* ber */
            aload 2 /* reqCtls */
            invokestatic com.sun.jndi.ldap.LdapClient.encodeControls:(Lcom/sun/jndi/ldap/BerEncoder;[Ljavax/naming/ldap/Control;)V
         8: .line 523
      StackMap locals: com.sun.jndi.ldap.BerEncoder int
      StackMap stack:
            aload 3 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.endSeq:()V
         9: .line 525
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 13
        10: .line 526
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceTagOut:Ljava/lang/String;
            aload 3 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getBuf:()[B
            iconst_0
        11: .line 527
            aload 3 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
        12: .line 526
            invokestatic com.sun.jndi.ldap.Ber.dumpBER:(Ljava/io/OutputStream;Ljava/lang/String;[BII)V
        13: .line 530
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 5
            monitorenter
        14: .line 531
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            aload 3 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getBuf:()[B
            iconst_0
            aload 3 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
            invokevirtual java.io.OutputStream.write:([BII)V
        15: .line 532
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        16: .line 530
            aload 5
            monitorexit
        17: goto 21
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest javax.naming.ldap.Control[] com.sun.jndi.ldap.BerEncoder int com.sun.jndi.ldap.Connection
      StackMap stack: java.lang.Throwable
        18: aload 5
            monitorexit
        19: athrow
        20: .line 535
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest javax.naming.ldap.Control[] com.sun.jndi.ldap.BerEncoder int
      StackMap stack: java.io.IOException
            pop
        21: .line 540
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int abandonMsgId
        end local 3 // com.sun.jndi.ldap.BerEncoder ber
        end local 2 // javax.naming.ldap.Control[] reqCtls
        end local 1 // com.sun.jndi.ldap.LdapRequest ldr
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   22     0          this  Lcom/sun/jndi/ldap/Connection;
            0   22     1           ldr  Lcom/sun/jndi/ldap/LdapRequest;
            0   22     2       reqCtls  [Ljavax/naming/ldap/Control;
            2   22     3           ber  Lcom/sun/jndi/ldap/BerEncoder;
            3   22     4  abandonMsgId  I
      Exception table:
        from    to  target  type
          14    17      18  any
          18    19      18  any
           3    20      20  Class java.io.IOException
    MethodParameters:
         Name  Flags
      ldr      
      reqCtls  

  synchronized void abandonOutstandingReqs(javax.naming.ldap.Control[]);
    descriptor: ([Ljavax/naming/ldap/Control;)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // javax.naming.ldap.Control[] reqCtls
         0: .line 543
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
        start local 2 // com.sun.jndi.ldap.LdapRequest ldr
         1: .line 545
            goto 4
         2: .line 546
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 0 /* this */
            aload 2 /* ldr */
            aload 1 /* reqCtls */
            invokevirtual com.sun.jndi.ldap.Connection.abandonRequest:(Lcom/sun/jndi/ldap/LdapRequest;[Ljavax/naming/ldap/Control;)V
         3: .line 547
            aload 0 /* this */
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            dup
            astore 2 /* ldr */
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         4: .line 545
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            ifnonnull 2
         5: .line 549
            return
        end local 2 // com.sun.jndi.ldap.LdapRequest ldr
        end local 1 // javax.naming.ldap.Control[] reqCtls
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/sun/jndi/ldap/Connection;
            0    6     1  reqCtls  [Ljavax/naming/ldap/Control;
            1    6     2      ldr  Lcom/sun/jndi/ldap/LdapRequest;
    MethodParameters:
         Name  Flags
      reqCtls  

  private void ldapUnbind(javax.naming.ldap.Control[]);
    descriptor: ([Ljavax/naming/ldap/Control;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // javax.naming.ldap.Control[] reqCtls
         0: .line 560
            new com.sun.jndi.ldap.BerEncoder
            dup
            sipush 256
            invokespecial com.sun.jndi.ldap.BerEncoder.<init>:(I)V
            astore 2 /* ber */
        start local 2 // com.sun.jndi.ldap.BerEncoder ber
         1: .line 561
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getMsgId:()I
            istore 3 /* unbindMsgId */
        start local 3 // int unbindMsgId
         2: .line 569
            aload 2 /* ber */
            bipush 48
            invokevirtual com.sun.jndi.ldap.BerEncoder.beginSeq:(I)V
         3: .line 570
            aload 2 /* ber */
            iload 3 /* unbindMsgId */
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeInt:(I)V
         4: .line 572
            aload 2 /* ber */
            bipush 66
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeByte:(I)V
         5: .line 573
            aload 2 /* ber */
            iconst_0
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeByte:(I)V
         6: .line 575
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.v3:Z
            ifeq 8
         7: .line 576
            aload 2 /* ber */
            aload 1 /* reqCtls */
            invokestatic com.sun.jndi.ldap.LdapClient.encodeControls:(Lcom/sun/jndi/ldap/BerEncoder;[Ljavax/naming/ldap/Control;)V
         8: .line 578
      StackMap locals: com.sun.jndi.ldap.BerEncoder int
      StackMap stack:
            aload 2 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.endSeq:()V
         9: .line 580
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 13
        10: .line 581
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceTagOut:Ljava/lang/String;
            aload 2 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getBuf:()[B
        11: .line 582
            iconst_0
            aload 2 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
        12: .line 581
            invokestatic com.sun.jndi.ldap.Ber.dumpBER:(Ljava/io/OutputStream;Ljava/lang/String;[BII)V
        13: .line 585
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 4
            monitorenter
        14: .line 586
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            aload 2 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getBuf:()[B
            iconst_0
            aload 2 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
            invokevirtual java.io.OutputStream.write:([BII)V
        15: .line 587
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        16: .line 585
            aload 4
            monitorexit
        17: goto 21
      StackMap locals: com.sun.jndi.ldap.Connection javax.naming.ldap.Control[] com.sun.jndi.ldap.BerEncoder int com.sun.jndi.ldap.Connection
      StackMap stack: java.lang.Throwable
        18: aload 4
            monitorexit
        19: athrow
        20: .line 590
      StackMap locals: com.sun.jndi.ldap.Connection javax.naming.ldap.Control[] com.sun.jndi.ldap.BerEncoder int
      StackMap stack: java.io.IOException
            pop
        21: .line 595
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int unbindMsgId
        end local 2 // com.sun.jndi.ldap.BerEncoder ber
        end local 1 // javax.naming.ldap.Control[] reqCtls
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0         this  Lcom/sun/jndi/ldap/Connection;
            0   22     1      reqCtls  [Ljavax/naming/ldap/Control;
            1   22     2          ber  Lcom/sun/jndi/ldap/BerEncoder;
            2   22     3  unbindMsgId  I
      Exception table:
        from    to  target  type
          14    17      18  any
          18    19      18  any
           2    20      20  Class java.io.IOException
    MethodParameters:
         Name  Flags
      reqCtls  

  void cleanup(javax.naming.ldap.Control[], boolean);
    descriptor: ([Ljavax/naming/ldap/Control;Z)V
    flags: (0x0000) 
    Code:
      stack=2, locals=7, args_size=3
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // javax.naming.ldap.Control[] reqCtls
        start local 2 // boolean notifyParent
         0: .line 608
            iconst_0
            istore 3 /* nparent */
        start local 3 // boolean nparent
         1: .line 610
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         2: .line 611
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.useable:Z
         3: .line 613
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            ifnull 36
         4: .line 618
            iload 2 /* notifyParent */
            ifne 6
         5: .line 619
            aload 0 /* this */
            aload 1 /* reqCtls */
            invokevirtual com.sun.jndi.ldap.Connection.abandonOutstandingReqs:([Ljavax/naming/ldap/Control;)V
         6: .line 621
      StackMap locals: int com.sun.jndi.ldap.Connection
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.bound:Z
            ifeq 23
         7: .line 622
            aload 0 /* this */
            aload 1 /* reqCtls */
            invokevirtual com.sun.jndi.ldap.Connection.ldapUnbind:([Ljavax/naming/ldap/Control;)V
         8: .line 624
            goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 5
        10: .line 626
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        11: .line 627
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        12: .line 628
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.unpauseReader:()V
        13: .line 629
            goto 15
      StackMap locals: com.sun.jndi.ldap.Connection javax.naming.ldap.Control[] int int com.sun.jndi.ldap.Connection java.lang.Throwable
      StackMap stack: java.io.IOException
        14: astore 6
        15: .line 633
      StackMap locals:
      StackMap stack:
            iload 2 /* notifyParent */
            ifne 21
        16: .line 634
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
            astore 6 /* ldr */
        start local 6 // com.sun.jndi.ldap.LdapRequest ldr
        17: .line 635
            goto 20
        18: .line 636
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 6 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.cancel:()V
        19: .line 637
            aload 6 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 6 /* ldr */
        20: .line 635
      StackMap locals:
      StackMap stack:
            aload 6 /* ldr */
            ifnonnull 18
        end local 6 // com.sun.jndi.ldap.LdapRequest ldr
        21: .line 640
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
        22: .line 641
            aload 5
            athrow
        23: .line 626
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        24: .line 627
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        25: .line 628
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.unpauseReader:()V
        26: .line 629
            goto 28
      StackMap locals:
      StackMap stack: java.io.IOException
        27: astore 6
        28: .line 633
      StackMap locals:
      StackMap stack:
            iload 2 /* notifyParent */
            ifne 34
        29: .line 634
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
            astore 6 /* ldr */
        start local 6 // com.sun.jndi.ldap.LdapRequest ldr
        30: .line 635
            goto 33
        31: .line 636
      StackMap locals: com.sun.jndi.ldap.Connection javax.naming.ldap.Control[] int int com.sun.jndi.ldap.Connection top com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 6 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.cancel:()V
        32: .line 637
            aload 6 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 6 /* ldr */
        33: .line 635
      StackMap locals:
      StackMap stack:
            aload 6 /* ldr */
            ifnonnull 31
        end local 6 // com.sun.jndi.ldap.LdapRequest ldr
        34: .line 640
      StackMap locals: com.sun.jndi.ldap.Connection javax.naming.ldap.Control[] int int com.sun.jndi.ldap.Connection
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
        35: .line 642
            iload 2 /* notifyParent */
            istore 3 /* nparent */
        36: .line 644
      StackMap locals:
      StackMap stack:
            iload 3 /* nparent */
            ifeq 42
        37: .line 645
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
            astore 5 /* ldr */
        start local 5 // com.sun.jndi.ldap.LdapRequest ldr
        38: .line 646
            goto 41
        39: .line 647
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 5 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.close:()V
        40: .line 648
            aload 5 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 5 /* ldr */
        41: .line 646
      StackMap locals:
      StackMap stack:
            aload 5 /* ldr */
            ifnonnull 39
        end local 5 // com.sun.jndi.ldap.LdapRequest ldr
        42: .line 610
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        43: goto 46
      StackMap locals:
      StackMap stack: java.lang.Throwable
        44: aload 4
            monitorexit
        45: athrow
        46: .line 652
      StackMap locals:
      StackMap stack:
            iload 3 /* nparent */
            ifeq 48
        47: .line 653
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.parent:Lcom/sun/jndi/ldap/LdapClient;
            invokevirtual com.sun.jndi.ldap.LdapClient.processConnectionClosure:()V
        48: .line 655
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean nparent
        end local 2 // boolean notifyParent
        end local 1 // javax.naming.ldap.Control[] reqCtls
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   49     0          this  Lcom/sun/jndi/ldap/Connection;
            0   49     1       reqCtls  [Ljavax/naming/ldap/Control;
            0   49     2  notifyParent  Z
            1   49     3       nparent  Z
           17   21     6           ldr  Lcom/sun/jndi/ldap/LdapRequest;
           30   34     6           ldr  Lcom/sun/jndi/ldap/LdapRequest;
           38   42     5           ldr  Lcom/sun/jndi/ldap/LdapRequest;
      Exception table:
        from    to  target  type
           4     9       9  any
          10    13      14  Class java.io.IOException
          23    26      27  Class java.io.IOException
           2    43      44  any
          44    45      44  any
    MethodParameters:
              Name  Flags
      reqCtls       
      notifyParent  

  public synchronized void replaceStreams(java.io.InputStream, java.io.OutputStream);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // java.io.InputStream newIn
        start local 2 // java.io.OutputStream newOut
         0: .line 668
            aload 0 /* this */
            aload 1 /* newIn */
            putfield com.sun.jndi.ldap.Connection.inStream:Ljava/io/InputStream;
         1: .line 672
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
         2: .line 673
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         3: astore 3
         4: .line 679
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* newOut */
            putfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
         5: .line 680
            return
        end local 2 // java.io.OutputStream newOut
        end local 1 // java.io.InputStream newIn
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lcom/sun/jndi/ldap/Connection;
            0    6     1   newIn  Ljava/io/InputStream;
            0    6     2  newOut  Ljava/io/OutputStream;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
    MethodParameters:
        Name  Flags
      newIn   
      newOut  

  private synchronized java.io.InputStream getInputStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.jndi.ldap.Connection this
         0: .line 688
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.inStream:Ljava/io/InputStream;
            areturn
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jndi/ldap/Connection;

  private void unpauseReader();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.jndi.ldap.Connection this
         0: .line 746
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pauseLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 747
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.paused:Z
            ifeq 4
         2: .line 752
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.paused:Z
         3: .line 753
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pauseLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notify:()V
         4: .line 746
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 1
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 756
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/sun/jndi/ldap/Connection;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    Exceptions:
      throws java.io.IOException

  private void pauseReader();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.sun.jndi.ldap.Connection this
         0: .line 768
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.paused:Z
         1: .line 770
            goto 3
         2: .line 771
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pauseLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.wait:()V
         3: .line 770
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.paused:Z
            ifne 2
         4: .line 773
            goto 9
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         5: pop
         6: .line 774
            new java.io.InterruptedIOException
            dup
         7: .line 775
            ldc "Pause/unpause reader has problems."
         8: .line 774
            invokespecial java.io.InterruptedIOException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 777
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/sun/jndi/ldap/Connection;
      Exception table:
        from    to  target  type
           1     4       5  Class java.lang.InterruptedException
    Exceptions:
      throws java.io.IOException

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=16, args_size=1
        start local 0 // com.sun.jndi.ldap.Connection this
         0: .line 798
            aconst_null
            astore 10 /* in */
        start local 10 // java.io.InputStream in
         1: .line 804
      StackMap locals: com.sun.jndi.ldap.Connection top top top top top top top top top java.io.InputStream
      StackMap stack:
            sipush 129
            newarray 8
            astore 1 /* inbuf */
        start local 1 // byte[] inbuf
         2: .line 806
            iconst_0
            istore 5 /* offset */
        start local 5 // int offset
         3: .line 807
            iconst_0
            istore 6 /* seqlen */
        start local 6 // int seqlen
         4: .line 808
            iconst_0
            istore 7 /* seqlenlen */
        start local 7 // int seqlenlen
         5: .line 810
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getInputStream:()Ljava/io/InputStream;
            astore 10 /* in */
         6: .line 813
            aload 10 /* in */
            aload 1 /* inbuf */
            iload 5 /* offset */
            iconst_1
            invokevirtual java.io.InputStream.read:([BII)I
            istore 3 /* bytesread */
        start local 3 // int bytesread
         7: .line 814
            iload 3 /* bytesread */
            ifge 10
         8: .line 815
            aload 10 /* in */
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getInputStream:()Ljava/io/InputStream;
            if_acmpeq 73
         9: .line 816
            goto 1
        10: .line 822
      StackMap locals: com.sun.jndi.ldap.Connection byte[] top int top int int int top top java.io.InputStream
      StackMap stack:
            aload 1 /* inbuf */
            iload 5 /* offset */
            iinc 5 /* offset */ 1
            baload
            bipush 48
            if_icmpeq 12
        11: .line 823
            goto 1
        12: .line 826
      StackMap locals:
      StackMap stack:
            aload 10 /* in */
            aload 1 /* inbuf */
            iload 5 /* offset */
            iconst_1
            invokevirtual java.io.InputStream.read:([BII)I
            istore 3 /* bytesread */
        13: .line 827
            iload 3 /* bytesread */
            ifge 15
        14: .line 828
            goto 73
        15: .line 829
      StackMap locals:
      StackMap stack:
            aload 1 /* inbuf */
            iload 5 /* offset */
            iinc 5 /* offset */ 1
            baload
            istore 6 /* seqlen */
        16: .line 834
            iload 6 /* seqlen */
            sipush 128
            iand
            sipush 128
            if_icmpne 38
        17: .line 835
            iload 6 /* seqlen */
            bipush 127
            iand
            istore 7 /* seqlenlen */
        18: .line 837
            iconst_0
            istore 3 /* bytesread */
        19: .line 838
            iconst_0
            istore 8 /* eos */
        start local 8 // boolean eos
        20: .line 841
            goto 28
        21: .line 842
      StackMap locals: com.sun.jndi.ldap.Connection byte[] top int top int int int int top java.io.InputStream
      StackMap stack:
            aload 10 /* in */
            aload 1 /* inbuf */
            iload 5 /* offset */
            iload 3 /* bytesread */
            iadd
        22: .line 843
            iload 7 /* seqlenlen */
            iload 3 /* bytesread */
            isub
        23: .line 842
            invokevirtual java.io.InputStream.read:([BII)I
            istore 4 /* br */
        start local 4 // int br
        24: .line 844
            iload 4 /* br */
            ifge 27
        25: .line 845
            iconst_1
            istore 8 /* eos */
        26: .line 846
            goto 29
        27: .line 848
      StackMap locals: com.sun.jndi.ldap.Connection byte[] top int int int int int int top java.io.InputStream
      StackMap stack:
            iload 3 /* bytesread */
            iload 4 /* br */
            iadd
            istore 3 /* bytesread */
        end local 4 // int br
        28: .line 841
      StackMap locals: com.sun.jndi.ldap.Connection byte[] top int top int int int int top java.io.InputStream
      StackMap stack:
            iload 3 /* bytesread */
            iload 7 /* seqlenlen */
            if_icmplt 21
        29: .line 852
      StackMap locals:
      StackMap stack:
            iload 8 /* eos */
            ifeq 31
        30: .line 853
            goto 73
        31: .line 856
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* seqlen */
        32: .line 857
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        33: goto 36
        34: .line 858
      StackMap locals: int
      StackMap stack:
            iload 6 /* seqlen */
            bipush 8
            ishl
            aload 1 /* inbuf */
            iload 5 /* offset */
            iload 11 /* i */
            iadd
            baload
            sipush 255
            iand
            iadd
            istore 6 /* seqlen */
        35: .line 857
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        36: iload 11 /* i */
            iload 7 /* seqlenlen */
            if_icmplt 34
        end local 11 // int i
        37: .line 860
            iload 5 /* offset */
            iload 3 /* bytesread */
            iadd
            istore 5 /* offset */
        end local 8 // boolean eos
        38: .line 864
      StackMap locals: com.sun.jndi.ldap.Connection byte[] top int top int int int top top java.io.InputStream
      StackMap stack:
            aload 10 /* in */
            iload 6 /* seqlen */
            invokestatic com.sun.jndi.ldap.Connection.readFully:(Ljava/io/InputStream;I)[B
            astore 11 /* left */
        start local 11 // byte[] left
        39: .line 865
            aload 1 /* inbuf */
            iload 5 /* offset */
            aload 11 /* left */
            arraylength
            iadd
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 1 /* inbuf */
        40: .line 866
            aload 11 /* left */
            iconst_0
            aload 1 /* inbuf */
            iload 5 /* offset */
            aload 11 /* left */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        41: .line 867
            iload 5 /* offset */
            aload 11 /* left */
            arraylength
            iadd
            istore 5 /* offset */
        42: .line 870
            new com.sun.jndi.ldap.BerDecoder
            dup
            aload 1 /* inbuf */
            iconst_0
            iload 5 /* offset */
            invokespecial com.sun.jndi.ldap.BerDecoder.<init>:([BII)V
            astore 9 /* retBer */
        start local 9 // com.sun.jndi.ldap.BerDecoder retBer
        43: .line 872
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 45
        44: .line 873
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceTagIn:Ljava/lang/String;
            aload 1 /* inbuf */
            iconst_0
            iload 5 /* offset */
            invokestatic com.sun.jndi.ldap.Ber.dumpBER:(Ljava/io/OutputStream;Ljava/lang/String;[BII)V
        45: .line 876
      StackMap locals: com.sun.jndi.ldap.Connection byte[] top int top int int int top com.sun.jndi.ldap.BerDecoder java.io.InputStream byte[]
      StackMap stack:
            aload 9 /* retBer */
            aconst_null
            invokevirtual com.sun.jndi.ldap.BerDecoder.parseSeq:([I)I
            pop
        46: .line 877
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.BerDecoder.parseInt:()I
            istore 2 /* inMsgId */
        start local 2 // int inMsgId
        47: .line 878
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.BerDecoder.reset:()V
        48: .line 880
            iconst_0
            istore 12 /* needPause */
        start local 12 // boolean needPause
        49: .line 882
            iload 2 /* inMsgId */
            ifne 52
        50: .line 884
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.parent:Lcom/sun/jndi/ldap/LdapClient;
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.LdapClient.processUnsolicited:(Lcom/sun/jndi/ldap/BerDecoder;)V
        51: .line 885
            goto 1
        52: .line 886
      StackMap locals: com.sun.jndi.ldap.Connection byte[] int int top int int int top com.sun.jndi.ldap.BerDecoder java.io.InputStream byte[] int
      StackMap stack:
            aload 0 /* this */
            iload 2 /* inMsgId */
            invokevirtual com.sun.jndi.ldap.Connection.findRequest:(I)Lcom/sun/jndi/ldap/LdapRequest;
            astore 13 /* ldr */
        start local 13 // com.sun.jndi.ldap.LdapRequest ldr
        53: .line 888
            aload 13 /* ldr */
            ifnull 1
        54: .line 895
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pauseLock:Ljava/lang/Object;
            dup
            astore 14
            monitorenter
        55: .line 896
            aload 13 /* ldr */
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.LdapRequest.addReplyBer:(Lcom/sun/jndi/ldap/BerDecoder;)Z
            istore 12 /* needPause */
        56: .line 897
            iload 12 /* needPause */
            ifeq 58
        57: .line 902
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.pauseReader:()V
        58: .line 895
      StackMap locals: com.sun.jndi.ldap.LdapRequest java.lang.Object
      StackMap stack:
            aload 14
            monitorexit
        59: goto 1
      StackMap locals:
      StackMap stack: java.lang.Throwable
        60: aload 14
            monitorexit
        61: athrow
        end local 13 // com.sun.jndi.ldap.LdapRequest ldr
        end local 12 // boolean needPause
        end local 9 // com.sun.jndi.ldap.BerDecoder retBer
        end local 2 // int inMsgId
        62: .line 912
      StackMap locals: com.sun.jndi.ldap.Connection byte[] top int top int int int top top java.io.InputStream byte[]
      StackMap stack: com.sun.jndi.ldap.Ber$DecodeException
            pop
        end local 11 // byte[] left
        63: .line 915
            goto 1
        end local 7 // int seqlenlen
        end local 6 // int seqlen
        end local 5 // int offset
        end local 3 // int bytesread
        end local 1 // byte[] inbuf
      StackMap locals: com.sun.jndi.ldap.Connection top top top top top top top top top java.io.InputStream
      StackMap stack: java.io.IOException
        64: astore 11 /* ie */
        start local 11 // java.io.IOException ie
        65: .line 921
            aload 10 /* in */
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getInputStream:()Ljava/io/InputStream;
            if_acmpne 1
        66: .line 928
            aload 11 /* ie */
            athrow
        end local 11 // java.io.IOException ie
        67: .line 937
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 11 /* ex */
        start local 11 // java.io.IOException ex
        68: .line 941
            aload 0 /* this */
            aload 11 /* ex */
            putfield com.sun.jndi.ldap.Connection.closureReason:Ljava/io/IOException;
        end local 11 // java.io.IOException ex
        69: .line 943
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
            goto 74
        70: .line 942
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 15
        71: .line 943
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
        72: .line 944
            aload 15
            athrow
        73: .line 943
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
        74: .line 948
      StackMap locals:
      StackMap stack:
            return
        end local 10 // java.io.InputStream in
        end local 0 // com.sun.jndi.ldap.Connection this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   75     0       this  Lcom/sun/jndi/ldap/Connection;
            2   64     1      inbuf  [B
           47   62     2    inMsgId  I
            7   64     3  bytesread  I
           24   28     4         br  I
            3   64     5     offset  I
            4   64     6     seqlen  I
            5   64     7  seqlenlen  I
           20   38     8        eos  Z
           43   62     9     retBer  Lcom/sun/jndi/ldap/BerDecoder;
            1   75    10         in  Ljava/io/InputStream;
           33   37    11          i  I
           39   63    11       left  [B
           49   62    12  needPause  Z
           53   62    13        ldr  Lcom/sun/jndi/ldap/LdapRequest;
           65   67    11         ie  Ljava/io/IOException;
           68   69    11         ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          55    59      60  any
          60    61      60  any
          42    62      62  Class com.sun.jndi.ldap.Ber$DecodeException
           1     9      64  Class java.io.IOException
          10    11      64  Class java.io.IOException
          12    14      64  Class java.io.IOException
          15    30      64  Class java.io.IOException
          31    63      64  Class java.io.IOException
           1    67      67  Class java.io.IOException
           1    69      70  any

  private static byte[] readFully(java.io.InputStream, int);
    descriptor: (Ljava/io/InputStream;I)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // java.io.InputStream is
        start local 1 // int length
         0: .line 953
            iload 1 /* length */
            sipush 8192
            invokestatic java.lang.Math.min:(II)I
            newarray 8
            astore 2 /* buf */
        start local 2 // byte[] buf
         1: .line 954
            iconst_0
            istore 3 /* nread */
        start local 3 // int nread
         2: .line 955
            goto 15
         3: .line 957
      StackMap locals: byte[] int
      StackMap stack:
            iload 3 /* nread */
            aload 2 /* buf */
            arraylength
            if_icmplt 8
         4: .line 958
            iload 1 /* length */
            iload 3 /* nread */
            isub
            aload 2 /* buf */
            arraylength
            sipush 8192
            iadd
            invokestatic java.lang.Math.min:(II)I
            istore 4 /* bytesToRead */
        start local 4 // int bytesToRead
         5: .line 959
            aload 2 /* buf */
            arraylength
            iload 3 /* nread */
            iload 4 /* bytesToRead */
            iadd
            if_icmpge 9
         6: .line 960
            aload 2 /* buf */
            iload 3 /* nread */
            iload 4 /* bytesToRead */
            iadd
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 2 /* buf */
         7: .line 962
            goto 9
        end local 4 // int bytesToRead
         8: .line 963
      StackMap locals:
      StackMap stack:
            aload 2 /* buf */
            arraylength
            iload 3 /* nread */
            isub
            istore 4 /* bytesToRead */
        start local 4 // int bytesToRead
         9: .line 965
      StackMap locals: int
      StackMap stack:
            aload 0 /* is */
            aload 2 /* buf */
            iload 3 /* nread */
            iload 4 /* bytesToRead */
            invokevirtual java.io.InputStream.read:([BII)I
            istore 5 /* count */
        start local 5 // int count
        10: .line 966
            iload 5 /* count */
            ifge 14
        11: .line 967
            aload 2 /* buf */
            arraylength
            iload 3 /* nread */
            if_icmpeq 16
        12: .line 968
            aload 2 /* buf */
            iload 3 /* nread */
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 2 /* buf */
        13: .line 969
            goto 16
        14: .line 971
      StackMap locals: int
      StackMap stack:
            iload 3 /* nread */
            iload 5 /* count */
            iadd
            istore 3 /* nread */
        end local 5 // int count
        end local 4 // int bytesToRead
        15: .line 955
      StackMap locals:
      StackMap stack:
            iload 3 /* nread */
            iload 1 /* length */
            if_icmplt 3
        16: .line 973
      StackMap locals:
      StackMap stack:
            aload 2 /* buf */
            areturn
        end local 3 // int nread
        end local 2 // byte[] buf
        end local 1 // int length
        end local 0 // java.io.InputStream is
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0           is  Ljava/io/InputStream;
            0   17     1       length  I
            1   17     2          buf  [B
            2   17     3        nread  I
            5    8     4  bytesToRead  I
            9   15     4  bytesToRead  I
           10   15     5        count  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      is      
      length  

  private static java.lang.String lambda$0();
    descriptor: ()Ljava/lang/String;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 169
            ldc "com.sun.jndi.ldap.object.disableEndpointIdentification"
         1: .line 168
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
         2: .line 169
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "Connection.java"
InnerClasses:
  final DecodeException = com.sun.jndi.ldap.Ber$DecodeException of com.sun.jndi.ldap.Ber
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles