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 java.lang.Object pauseLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

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

  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 166
            aload 0 /* this */
            iload 1 /* v */
            putfield com.sun.jndi.ldap.Connection.v3:Z
         1: .line 167
            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 174
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.bound:Z
         1: .line 175
            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 183
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 117
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.v3:Z
         2: .line 124
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.bound:Z
         3: .line 127
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
         4: .line 128
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.traceTagIn:Ljava/lang/String;
         5: .line 129
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.traceTagOut:Ljava/lang/String;
         6: .line 148
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.outMsgId:I
         7: .line 154
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         8: .line 156
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.closureReason:Ljava/io/IOException;
         9: .line 157
            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 186
            aload 0 /* this */
            aload 2 /* host */
            putfield com.sun.jndi.ldap.Connection.host:Ljava/lang/String;
        13: .line 187
            aload 0 /* this */
            iload 3 /* port */
            putfield com.sun.jndi.ldap.Connection.port:I
        14: .line 188
            aload 0 /* this */
            aload 1 /* parent */
            putfield com.sun.jndi.ldap.Connection.parent:Lcom/sun/jndi/ldap/LdapClient;
        15: .line 189
            aload 0 /* this */
            iload 6 /* readTimeout */
            putfield com.sun.jndi.ldap.Connection.readTimeout:I
        16: .line 190
            aload 0 /* this */
            iload 5 /* connectTimeout */
            putfield com.sun.jndi.ldap.Connection.connectTimeout:I
        17: .line 192
            aload 7 /* trace */
            ifnull 21
        18: .line 193
            aload 0 /* this */
            aload 7 /* trace */
            putfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
        19: .line 194
            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 195
            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 202
      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 208
            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 209
            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 211
            goto 36
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
        25: astore 8 /* e */
        start local 8 // java.lang.reflect.InvocationTargetException e
        26: .line 212
            aload 8 /* e */
            invokevirtual java.lang.reflect.InvocationTargetException.getTargetException:()Ljava/lang/Throwable;
            astore 9 /* realException */
        start local 9 // java.lang.Throwable realException
        27: .line 216
            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 215
            astore 10 /* ce */
        start local 10 // javax.naming.CommunicationException ce
        29: .line 217
            aload 10 /* ce */
            aload 9 /* realException */
            invokevirtual javax.naming.CommunicationException.setRootCause:(Ljava/lang/Throwable;)V
        30: .line 218
            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 219
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 8 /* e */
        start local 8 // java.lang.Exception e
        32: .line 224
            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 223
            astore 9 /* ce */
        start local 9 // javax.naming.CommunicationException ce
        34: .line 225
            aload 9 /* ce */
            aload 8 /* e */
            invokevirtual javax.naming.CommunicationException.setRootCause:(Ljava/lang/Throwable;)V
        35: .line 226
            aload 9 /* ce */
            athrow
        end local 9 // javax.naming.CommunicationException ce
        end local 8 // java.lang.Exception e
        36: .line 229
      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 230
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.worker:Ljava/lang/Thread;
            iconst_1
            invokevirtual java.lang.Thread.setDaemon:(Z)V
        38: .line 231
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.worker:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.start:()V
        39: .line 232
            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 238
            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 253
            aconst_null
            astore 5 /* socket */
        start local 5 // java.net.Socket socket
         1: .line 255
            aload 3 /* socketFactory */
            ifnull 15
         2: .line 261
            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 260
            astore 6 /* socketFactoryClass */
        start local 6 // java.lang.Class socketFactoryClass
         4: .line 263
            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 262
            astore 7 /* getDefault */
        start local 7 // java.lang.reflect.Method getDefault
         6: .line 264
            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 268
            iload 4 /* connectTimeout */
            ifle 12
         8: .line 271
            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 270
            astore 9 /* endpoint */
        start local 9 // java.net.InetSocketAddress endpoint
        10: .line 274
            aload 8 /* factory */
            invokevirtual javax.net.SocketFactory.createSocket:()Ljava/net/Socket;
            astore 5 /* socket */
        11: .line 282
            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 286
      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 292
            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 294
            goto 21
        15: .line 296
      StackMap locals:
      StackMap stack:
            iload 4 /* connectTimeout */
            ifle 19
        16: .line 298
            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 300
            new java.net.Socket
            dup
            invokespecial java.net.Socket.<init>:()V
            astore 5 /* socket */
        18: .line 306
            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 311
      StackMap locals:
      StackMap stack:
            aload 5 /* socket */
            ifnonnull 21
        20: .line 316
            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 324
      StackMap locals:
      StackMap stack:
            iload 4 /* connectTimeout */
            ifle 27
            aload 5 /* socket */
            instanceof javax.net.ssl.SSLSocket
            ifeq 27
        22: .line 325
            aload 5 /* socket */
            checkcast javax.net.ssl.SSLSocket
            astore 6 /* sslSocket */
        start local 6 // javax.net.ssl.SSLSocket sslSocket
        23: .line 326
            aload 6 /* sslSocket */
            invokevirtual javax.net.ssl.SSLSocket.getSoTimeout:()I
            istore 7 /* socketTimeout */
        start local 7 // int socketTimeout
        24: .line 328
            aload 6 /* sslSocket */
            iload 4 /* connectTimeout */
            invokevirtual javax.net.ssl.SSLSocket.setSoTimeout:(I)V
        25: .line 329
            aload 6 /* sslSocket */
            invokevirtual javax.net.ssl.SSLSocket.startHandshake:()V
        26: .line 330
            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
        27: .line 333
      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   28     0                this  Lcom/sun/jndi/ldap/Connection;
            0   28     1                host  Ljava/lang/String;
            0   28     2                port  I
            0   28     3       socketFactory  Ljava/lang/String;
            0   28     4      connectTimeout  I
            1   28     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   27     6           sslSocket  Ljavax/net/ssl/SSLSocket;
           24   27     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 343
            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 347
            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 352
            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 359
            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 358
            astore 5 /* req */
        start local 5 // com.sun.jndi.ldap.LdapRequest req
         2: .line 360
            aload 0 /* this */
            aload 5 /* req */
            invokevirtual com.sun.jndi.ldap.Connection.addRequest:(Lcom/sun/jndi/ldap/LdapRequest;)V
         3: .line 362
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 5
         4: .line 363
            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 370
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.unpauseReader:()V
         6: .line 377
            aload 0 /* this */
            dup
            astore 6
            monitorenter
         7: .line 378
            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 379
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
         9: .line 377
            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 381
      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 382
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
        15: .line 383
            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 386
      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=6, locals=10, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.LdapRequest ldr
         0: .line 397
            lconst_0
            lstore 3 /* elapsedMilli */
        start local 3 // long elapsedMilli
         1: .line 398
            lconst_0
            lstore 5 /* elapsedNano */
        start local 5 // long elapsedNano
         2: .line 400
            goto 34
        start local 2 // com.sun.jndi.ldap.BerDecoder rber
         3: .line 405
      StackMap locals: com.sun.jndi.ldap.BerDecoder long long
      StackMap stack:
            aload 0 /* this */
            dup
            astore 7
            monitorenter
         4: .line 406
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            ifnonnull 8
         5: .line 407
            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;
         6: .line 408
            ldc "; socket closed"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 407
            invokespecial javax.naming.ServiceUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 405
      StackMap locals: com.sun.jndi.ldap.Connection
      StackMap stack:
            aload 7
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 7
            monitorexit
        11: athrow
        12: .line 411
      StackMap locals:
      StackMap stack:
            aload 1 /* ldr */
            dup
            astore 7
            monitorenter
        13: .line 413
            aload 1 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.getReplyBer:()Lcom/sun/jndi/ldap/BerDecoder;
            astore 2 /* rber */
        14: .line 414
            aload 2 /* rber */
            ifnonnull 24
        15: .line 415
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.readTimeout:I
            ifle 22
        16: .line 416
            invokestatic java.lang.System.nanoTime:()J
            lstore 8 /* beginNano */
        start local 8 // long beginNano
        17: .line 420
            aload 1 /* ldr */
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.readTimeout:I
            i2l
            lload 3 /* elapsedMilli */
            lsub
            invokevirtual java.lang.Object.wait:(J)V
        18: .line 421
            lload 5 /* elapsedNano */
            invokestatic java.lang.System.nanoTime:()J
            lload 8 /* beginNano */
            lsub
            ladd
            lstore 5 /* elapsedNano */
        19: .line 422
            lload 3 /* elapsedMilli */
            lload 5 /* elapsedNano */
            ldc 1000000
            ldiv
            ladd
            lstore 3 /* elapsedMilli */
        20: .line 423
            lload 5 /* elapsedNano */
            ldc 1000000
            lrem
            lstore 5 /* elapsedNano */
        end local 8 // long beginNano
        21: .line 425
            goto 26
        22: .line 429
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 1 /* ldr */
            invokevirtual java.lang.Object.wait:()V
        23: .line 431
            goto 26
        24: .line 432
      StackMap locals:
      StackMap stack:
            aload 7
            monitorexit
        25: goto 38
        26: .line 411
      StackMap locals:
      StackMap stack:
            aload 7
            monitorexit
        27: goto 34
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: aload 7
            monitorexit
        29: athrow
        30: .line 435
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest com.sun.jndi.ldap.BerDecoder long long
      StackMap stack: java.lang.InterruptedException
            pop
        31: .line 436
            new javax.naming.InterruptedNamingException
            dup
        32: .line 437
            ldc "Interrupted during LDAP operation"
        33: .line 436
            invokespecial javax.naming.InterruptedNamingException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // com.sun.jndi.ldap.BerDecoder rber
        34: .line 400
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest top long long
      StackMap stack:
            aload 1 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.getReplyBer:()Lcom/sun/jndi/ldap/BerDecoder;
            dup
            astore 2 /* rber */
        start local 2 // com.sun.jndi.ldap.BerDecoder rber
        35: ifnonnull 38
        36: .line 401
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.readTimeout:I
            ifle 3
            lload 3 /* elapsedMilli */
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.readTimeout:I
            i2l
        37: .line 400
            lcmp
            iflt 3
        38: .line 441
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest com.sun.jndi.ldap.BerDecoder long long
      StackMap stack:
            aload 2 /* rber */
            ifnonnull 43
            lload 3 /* elapsedMilli */
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.readTimeout:I
            i2l
            lcmp
            iflt 43
        39: .line 442
            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
        40: .line 443
            new javax.naming.NamingException
            dup
            new java.lang.StringBuilder
            dup
            ldc "LDAP response read timed out, timeout used:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        41: .line 444
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.readTimeout:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "ms."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        42: .line 443
            invokespecial javax.naming.NamingException.<init>:(Ljava/lang/String;)V
            athrow
        43: .line 447
      StackMap locals:
      StackMap stack:
            aload 2 /* rber */
            areturn
        end local 5 // long elapsedNano
        end local 3 // long elapsedMilli
        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   44     0          this  Lcom/sun/jndi/ldap/Connection;
            0   44     1           ldr  Lcom/sun/jndi/ldap/LdapRequest;
            3   34     2          rber  Lcom/sun/jndi/ldap/BerDecoder;
           35   44     2          rber  Lcom/sun/jndi/ldap/BerDecoder;
            1   44     3  elapsedMilli  J
            2   44     5   elapsedNano  J
           17   21     8     beginNano  J
      Exception table:
        from    to  target  type
           4     9      10  any
          10    11      10  any
          13    25      28  any
          26    27      28  any
          28    29      28  any
           3    25      30  Class java.lang.InterruptedException
          26    30      30  Class java.lang.InterruptedException
    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 459
            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 460
            aload 2 /* ldr */
            ifnonnull 5
         2: .line 461
            aload 0 /* this */
            aload 1 /* ldapRequest */
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         3: .line 462
            aload 1 /* ldapRequest */
            aconst_null
            putfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
         4: .line 463
            goto 7
         5: .line 464
      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 465
            aload 0 /* this */
            aload 1 /* ldapRequest */
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         7: .line 467
      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 471
            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 472
            goto 5
         2: .line 473
      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 474
            aload 2 /* ldr */
            areturn
         4: .line 476
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
         5: .line 472
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            ifnonnull 2
         6: .line 478
            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 483
            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 484
            aconst_null
            astore 3 /* ldrprev */
        start local 3 // com.sun.jndi.ldap.LdapRequest ldrprev
         2: .line 486
            goto 12
         3: .line 487
      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 488
            aload 2 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.cancel:()V
         5: .line 490
            aload 3 /* ldrprev */
            ifnull 8
         6: .line 491
            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 492
            goto 9
         8: .line 493
      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 495
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            aconst_null
            putfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
        10: .line 497
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            astore 3 /* ldrprev */
        11: .line 498
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
        12: .line 486
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            ifnonnull 3
        13: .line 500
            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 504
            aload 0 /* this */
            aload 1 /* ldr */
            invokevirtual com.sun.jndi.ldap.Connection.removeRequest:(Lcom/sun/jndi/ldap/LdapRequest;)V
         1: .line 506
            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 507
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getMsgId:()I
            istore 4 /* abandonMsgId */
        start local 4 // int abandonMsgId
         3: .line 513
            aload 3 /* ber */
            bipush 48
            invokevirtual com.sun.jndi.ldap.BerEncoder.beginSeq:(I)V
         4: .line 514
            aload 3 /* ber */
            iload 4 /* abandonMsgId */
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeInt:(I)V
         5: .line 515
            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 517
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.v3:Z
            ifeq 8
         7: .line 518
            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 520
      StackMap locals: com.sun.jndi.ldap.BerEncoder int
      StackMap stack:
            aload 3 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.endSeq:()V
         9: .line 522
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 13
        10: .line 523
            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 524
            aload 3 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
        12: .line 523
            invokestatic com.sun.jndi.ldap.Ber.dumpBER:(Ljava/io/OutputStream;Ljava/lang/String;[BII)V
        13: .line 527
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 5
            monitorenter
        14: .line 528
            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 529
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        16: .line 527
            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 532
      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 537
      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 540
            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 542
            goto 4
         2: .line 543
      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 544
            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 542
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            ifnonnull 2
         5: .line 546
            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 557
            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 558
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getMsgId:()I
            istore 3 /* unbindMsgId */
        start local 3 // int unbindMsgId
         2: .line 566
            aload 2 /* ber */
            bipush 48
            invokevirtual com.sun.jndi.ldap.BerEncoder.beginSeq:(I)V
         3: .line 567
            aload 2 /* ber */
            iload 3 /* unbindMsgId */
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeInt:(I)V
         4: .line 569
            aload 2 /* ber */
            bipush 66
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeByte:(I)V
         5: .line 570
            aload 2 /* ber */
            iconst_0
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeByte:(I)V
         6: .line 572
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.v3:Z
            ifeq 8
         7: .line 573
            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 575
      StackMap locals: com.sun.jndi.ldap.BerEncoder int
      StackMap stack:
            aload 2 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.endSeq:()V
         9: .line 577
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 13
        10: .line 578
            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 579
            iconst_0
            aload 2 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
        12: .line 578
            invokestatic com.sun.jndi.ldap.Ber.dumpBER:(Ljava/io/OutputStream;Ljava/lang/String;[BII)V
        13: .line 582
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 4
            monitorenter
        14: .line 583
            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 584
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        16: .line 582
            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 587
      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 592
      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 605
            iconst_0
            istore 3 /* nparent */
        start local 3 // boolean nparent
         1: .line 607
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         2: .line 608
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.useable:Z
         3: .line 610
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            ifnull 36
         4: .line 615
            iload 2 /* notifyParent */
            ifne 6
         5: .line 616
            aload 0 /* this */
            aload 1 /* reqCtls */
            invokevirtual com.sun.jndi.ldap.Connection.abandonOutstandingReqs:([Ljavax/naming/ldap/Control;)V
         6: .line 618
      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 619
            aload 0 /* this */
            aload 1 /* reqCtls */
            invokevirtual com.sun.jndi.ldap.Connection.ldapUnbind:([Ljavax/naming/ldap/Control;)V
         8: .line 621
            goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 5
        10: .line 623
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        11: .line 624
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        12: .line 625
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.unpauseReader:()V
        13: .line 626
            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 630
      StackMap locals:
      StackMap stack:
            iload 2 /* notifyParent */
            ifne 21
        16: .line 631
            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 632
            goto 20
        18: .line 633
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 6 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.cancel:()V
        19: .line 634
            aload 6 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 6 /* ldr */
        20: .line 632
      StackMap locals:
      StackMap stack:
            aload 6 /* ldr */
            ifnonnull 18
        end local 6 // com.sun.jndi.ldap.LdapRequest ldr
        21: .line 637
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
        22: .line 638
            aload 5
            athrow
        23: .line 623
      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 624
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        25: .line 625
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.unpauseReader:()V
        26: .line 626
            goto 28
      StackMap locals:
      StackMap stack: java.io.IOException
        27: astore 6
        28: .line 630
      StackMap locals:
      StackMap stack:
            iload 2 /* notifyParent */
            ifne 34
        29: .line 631
            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 632
            goto 33
        31: .line 633
      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 634
            aload 6 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 6 /* ldr */
        33: .line 632
      StackMap locals:
      StackMap stack:
            aload 6 /* ldr */
            ifnonnull 31
        end local 6 // com.sun.jndi.ldap.LdapRequest ldr
        34: .line 637
      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 639
            iload 2 /* notifyParent */
            istore 3 /* nparent */
        36: .line 641
      StackMap locals:
      StackMap stack:
            iload 3 /* nparent */
            ifeq 47
        37: .line 642
            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 643
            goto 46
        39: .line 645
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 5 /* ldr */
            dup
            astore 6
            monitorenter
        40: .line 646
            aload 5 /* ldr */
            invokevirtual java.lang.Object.notify:()V
        41: .line 647
            aload 5 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 5 /* ldr */
        42: .line 645
            aload 6
            monitorexit
        43: goto 46
      StackMap locals: com.sun.jndi.ldap.Connection javax.naming.ldap.Control[] int int com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest com.sun.jndi.ldap.LdapRequest
      StackMap stack: java.lang.Throwable
        44: aload 6
            monitorexit
        45: athrow
        46: .line 643
      StackMap locals:
      StackMap stack:
            aload 5 /* ldr */
            ifnonnull 39
        end local 5 // com.sun.jndi.ldap.LdapRequest ldr
        47: .line 607
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        48: goto 51
      StackMap locals:
      StackMap stack: java.lang.Throwable
        49: aload 4
            monitorexit
        50: athrow
        51: .line 652
      StackMap locals:
      StackMap stack:
            iload 3 /* nparent */
            ifeq 53
        52: .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
        53: .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   54     0          this  Lcom/sun/jndi/ldap/Connection;
            0   54     1       reqCtls  [Ljavax/naming/ldap/Control;
            0   54     2  notifyParent  Z
            1   54     3       nparent  Z
           17   21     6           ldr  Lcom/sun/jndi/ldap/LdapRequest;
           30   34     6           ldr  Lcom/sun/jndi/ldap/LdapRequest;
           38   47     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
          40    43      44  any
          44    45      44  any
           2    48      49  any
          49    50      49  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 879
            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 881
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 45
        44: .line 882
            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 885
      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 886
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.BerDecoder.parseInt:()I
            istore 2 /* inMsgId */
        start local 2 // int inMsgId
        47: .line 887
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.BerDecoder.reset:()V
        48: .line 889
            iconst_0
            istore 12 /* needPause */
        start local 12 // boolean needPause
        49: .line 891
            iload 2 /* inMsgId */
            ifne 52
        50: .line 893
            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 894
            goto 1
        52: .line 895
      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 897
            aload 13 /* ldr */
            ifnull 1
        54: .line 904
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pauseLock:Ljava/lang/Object;
            dup
            astore 14
            monitorenter
        55: .line 905
            aload 13 /* ldr */
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.LdapRequest.addReplyBer:(Lcom/sun/jndi/ldap/BerDecoder;)Z
            istore 12 /* needPause */
        56: .line 906
            iload 12 /* needPause */
            ifeq 58
        57: .line 911
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.pauseReader:()V
        58: .line 904
      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 921
      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 924
            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 930
            aload 10 /* in */
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getInputStream:()Ljava/io/InputStream;
            if_acmpne 1
        66: .line 937
            aload 11 /* ie */
            athrow
        end local 11 // java.io.IOException ie
        67: .line 946
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 11 /* ex */
        start local 11 // java.io.IOException ex
        68: .line 950
            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 952
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
            goto 74
        70: .line 951
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 15
        71: .line 952
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
        72: .line 953
            aload 15
            athrow
        73: .line 952
      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 957
      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 962
            iload 1 /* length */
            sipush 8192
            invokestatic java.lang.Math.min:(II)I
            newarray 8
            astore 2 /* buf */
        start local 2 // byte[] buf
         1: .line 963
            iconst_0
            istore 3 /* nread */
        start local 3 // int nread
         2: .line 964
            goto 15
         3: .line 966
      StackMap locals: byte[] int
      StackMap stack:
            iload 3 /* nread */
            aload 2 /* buf */
            arraylength
            if_icmplt 8
         4: .line 967
            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 968
            aload 2 /* buf */
            arraylength
            iload 3 /* nread */
            iload 4 /* bytesToRead */
            iadd
            if_icmpge 9
         6: .line 969
            aload 2 /* buf */
            iload 3 /* nread */
            iload 4 /* bytesToRead */
            iadd
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 2 /* buf */
         7: .line 971
            goto 9
        end local 4 // int bytesToRead
         8: .line 972
      StackMap locals:
      StackMap stack:
            aload 2 /* buf */
            arraylength
            iload 3 /* nread */
            isub
            istore 4 /* bytesToRead */
        start local 4 // int bytesToRead
         9: .line 974
      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 975
            iload 5 /* count */
            ifge 14
        11: .line 976
            aload 2 /* buf */
            arraylength
            iload 3 /* nread */
            if_icmpeq 16
        12: .line 977
            aload 2 /* buf */
            iload 3 /* nread */
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 2 /* buf */
        13: .line 978
            goto 16
        14: .line 980
      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 964
      StackMap locals:
      StackMap stack:
            iload 3 /* nread */
            iload 1 /* length */
            if_icmplt 3
        16: .line 982
      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  
}
SourceFile: "Connection.java"
InnerClasses:
  final DecodeException = com.sun.jndi.ldap.Ber$DecodeException of com.sun.jndi.ldap.Ber