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

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

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

  private java.lang.Object pauseLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

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

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

  private static boolean hostnameVerificationDisabledValue();
    descriptor: ()Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 167
            new com.sun.jndi.ldap.Connection$1
            dup
            invokespecial com.sun.jndi.ldap.Connection$1.<init>:()V
            astore 0 /* act */
        start local 0 // java.security.PrivilegedAction act
         1: .line 174
            aload 0 /* act */
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* prop */
        start local 1 // java.lang.String prop
         2: .line 175
            aload 1 /* prop */
            ifnonnull 4
         3: .line 176
            iconst_0
            ireturn
         4: .line 178
      StackMap locals: java.security.PrivilegedAction java.lang.String
      StackMap stack:
            aload 1 /* prop */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 5
            iconst_1
            goto 6
      StackMap locals:
      StackMap stack:
         5: aload 1 /* prop */
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
      StackMap locals:
      StackMap stack: int
         6: ireturn
        end local 1 // java.lang.String prop
        end local 0 // java.security.PrivilegedAction act
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    7     0   act  Ljava/security/PrivilegedAction<Ljava/lang/String;>;
            2    7     1  prop  Ljava/lang/String;

  void setV3(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // boolean v
         0: .line 185
            aload 0 /* this */
            iload 1 /* v */
            putfield com.sun.jndi.ldap.Connection.v3:Z
         1: .line 186
            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 193
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.bound:Z
         1: .line 194
            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 202
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 120
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.v3:Z
         2: .line 127
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.bound:Z
         3: .line 130
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
         4: .line 131
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.traceTagIn:Ljava/lang/String;
         5: .line 132
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.traceTagOut:Ljava/lang/String;
         6: .line 151
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.outMsgId:I
         7: .line 157
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         8: .line 159
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.closureReason:Ljava/io/IOException;
         9: .line 160
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.useable:Z
        10: .line 776
            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 777
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.paused:Z
        12: .line 205
            aload 0 /* this */
            aload 2 /* host */
            putfield com.sun.jndi.ldap.Connection.host:Ljava/lang/String;
        13: .line 206
            aload 0 /* this */
            iload 3 /* port */
            putfield com.sun.jndi.ldap.Connection.port:I
        14: .line 207
            aload 0 /* this */
            aload 1 /* parent */
            putfield com.sun.jndi.ldap.Connection.parent:Lcom/sun/jndi/ldap/LdapClient;
        15: .line 208
            aload 0 /* this */
            iload 6 /* readTimeout */
            putfield com.sun.jndi.ldap.Connection.readTimeout:I
        16: .line 210
            aload 7 /* trace */
            ifnull 20
        17: .line 211
            aload 0 /* this */
            aload 7 /* trace */
            putfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
        18: .line 212
            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;
        19: .line 213
            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;
        20: .line 220
      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;
        21: .line 226
            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;
        22: .line 227
            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;
        23: .line 229
            goto 35
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
        24: astore 8 /* e */
        start local 8 // java.lang.reflect.InvocationTargetException e
        25: .line 230
            aload 8 /* e */
            invokevirtual java.lang.reflect.InvocationTargetException.getTargetException:()Ljava/lang/Throwable;
            astore 9 /* realException */
        start local 9 // java.lang.Throwable realException
        26: .line 234
            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
        27: .line 233
            astore 10 /* ce */
        start local 10 // javax.naming.CommunicationException ce
        28: .line 235
            aload 10 /* ce */
            aload 9 /* realException */
            invokevirtual javax.naming.CommunicationException.setRootCause:(Ljava/lang/Throwable;)V
        29: .line 236
            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
        30: .line 237
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 8 /* e */
        start local 8 // java.lang.Exception e
        31: .line 244
            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
        32: .line 243
            astore 9 /* ce */
        start local 9 // javax.naming.CommunicationException ce
        33: .line 245
            aload 9 /* ce */
            aload 8 /* e */
            invokevirtual javax.naming.CommunicationException.setRootCause:(Ljava/lang/Throwable;)V
        34: .line 246
            aload 9 /* ce */
            athrow
        end local 9 // javax.naming.CommunicationException ce
        end local 8 // java.lang.Exception e
        35: .line 249
      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;
        36: .line 250
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.worker:Ljava/lang/Thread;
            iconst_1
            invokevirtual java.lang.Thread.setDaemon:(Z)V
        37: .line 251
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.worker:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.start:()V
        38: .line 252
            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   39     0            this  Lcom/sun/jndi/ldap/Connection;
            0   39     1          parent  Lcom/sun/jndi/ldap/LdapClient;
            0   39     2            host  Ljava/lang/String;
            0   39     3            port  I
            0   39     4   socketFactory  Ljava/lang/String;
            0   39     5  connectTimeout  I
            0   39     6     readTimeout  I
            0   39     7           trace  Ljava/io/OutputStream;
           25   30     8               e  Ljava/lang/reflect/InvocationTargetException;
           26   30     9   realException  Ljava/lang/Throwable;
           28   30    10              ce  Ljavax/naming/CommunicationException;
           31   35     8               e  Ljava/lang/Exception;
           33   35     9              ce  Ljavax/naming/CommunicationException;
      Exception table:
        from    to  target  type
          20    23      24  Class java.lang.reflect.InvocationTargetException
          20    23      30  Class java.lang.Exception
    Exceptions:
      throws javax.naming.NamingException
    MethodParameters:
                Name  Flags
      parent          
      host            
      port            
      socketFactory   
      connectTimeout  
      readTimeout     
      trace           

  private java.lang.Object createInetSocketAddress(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=5, 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 262
            ldc "java.net.InetSocketAddress"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
         1: .line 261
            astore 3 /* inetSocketAddressClass */
        start local 3 // java.lang.Class inetSocketAddressClass
         2: .line 265
            aload 3 /* inetSocketAddressClass */
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
         3: .line 266
            ldc Ljava/lang/String;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
         4: .line 265
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
         5: .line 264
            astore 4 /* inetSocketAddressCons */
        start local 4 // java.lang.reflect.Constructor inetSocketAddressCons
         6: .line 268
            aload 4 /* inetSocketAddressCons */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 269
            aload 1 /* host */
            aastore
            dup
            iconst_1
            new java.lang.Integer
            dup
            iload 2 /* port */
            invokespecial java.lang.Integer.<init>:(I)V
            aastore
         8: .line 268
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
         9: areturn
        end local 4 // java.lang.reflect.Constructor inetSocketAddressCons
        end local 3 // java.lang.Class inetSocketAddressClass
        10: .line 271
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            pop
        11: .line 272
            new java.lang.NoSuchMethodException
            dup
            invokespecial java.lang.NoSuchMethodException.<init>:()V
            athrow
        12: .line 274
      StackMap locals:
      StackMap stack: java.lang.InstantiationException
            pop
        13: .line 275
            new java.lang.NoSuchMethodException
            dup
            invokespecial java.lang.NoSuchMethodException.<init>:()V
            athrow
        14: .line 277
      StackMap locals:
      StackMap stack: java.lang.reflect.InvocationTargetException
            pop
        15: .line 278
            new java.lang.NoSuchMethodException
            dup
            invokespecial java.lang.NoSuchMethodException.<init>:()V
            athrow
        16: .line 280
      StackMap locals:
      StackMap stack: java.lang.IllegalAccessException
            pop
        17: .line 281
            new java.lang.NoSuchMethodException
            dup
            invokespecial java.lang.NoSuchMethodException.<init>:()V
            athrow
        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   18     0                    this  Lcom/sun/jndi/ldap/Connection;
            0   18     1                    host  Ljava/lang/String;
            0   18     2                    port  I
            2   10     3  inetSocketAddressClass  Ljava/lang/Class;
            6   10     4   inetSocketAddressCons  Ljava/lang/reflect/Constructor;
      Exception table:
        from    to  target  type
           0     9      10  Class java.lang.ClassNotFoundException
           0     9      12  Class java.lang.InstantiationException
           0     9      14  Class java.lang.reflect.InvocationTargetException
           0     9      16  Class java.lang.IllegalAccessException
    Exceptions:
      throws java.lang.NoSuchMethodException
    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=8, locals=12, 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 297
            aconst_null
            astore 5 /* socket */
        start local 5 // java.net.Socket socket
         1: .line 299
            aload 3 /* socketFactory */
            ifnull 31
         2: .line 303
            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;
            astore 6 /* socketFactoryClass */
        start local 6 // java.lang.Class socketFactoryClass
         3: .line 305
            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;
         4: .line 304
            astore 7 /* getDefault */
        start local 7 // java.lang.reflect.Method getDefault
         5: .line 306
            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;
            astore 8 /* factory */
        start local 8 // java.lang.Object factory
         6: .line 310
            aconst_null
            astore 9 /* createSocket */
        start local 9 // java.lang.reflect.Method createSocket
         7: .line 312
            iload 4 /* connectTimeout */
            ifle 23
         8: .line 315
            aload 6 /* socketFactoryClass */
            ldc "createSocket"
         9: .line 316
            iconst_0
            anewarray java.lang.Class
        10: .line 315
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 9 /* createSocket */
        11: .line 318
            ldc Ljava/net/Socket;
            ldc "connect"
        12: .line 319
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc "java.net.SocketAddress"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            aastore
            dup
            iconst_1
        13: .line 320
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
        14: .line 318
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 10 /* connect */
        start local 10 // java.lang.reflect.Method connect
        15: .line 321
            aload 0 /* this */
            aload 1 /* host */
            iload 2 /* port */
            invokevirtual com.sun.jndi.ldap.Connection.createInetSocketAddress:(Ljava/lang/String;I)Ljava/lang/Object;
            astore 11 /* endpoint */
        start local 11 // java.lang.Object endpoint
        16: .line 325
            aload 9 /* createSocket */
            aload 8 /* factory */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.net.Socket
        17: .line 324
            astore 5 /* socket */
        18: .line 333
            aload 10 /* connect */
            aload 5 /* socket */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        19: .line 334
            aload 11 /* endpoint */
            aastore
            dup
            iconst_1
            new java.lang.Integer
            dup
            iload 4 /* connectTimeout */
            invokespecial java.lang.Integer.<init>:(I)V
            aastore
        20: .line 333
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 11 // java.lang.Object endpoint
        end local 10 // java.lang.reflect.Method connect
        21: .line 336
            goto 23
      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 java.lang.Object java.lang.reflect.Method
      StackMap stack: java.lang.NoSuchMethodException
        22: pop
        23: .line 341
      StackMap locals:
      StackMap stack:
            aload 5 /* socket */
            ifnonnull 47
        24: .line 342
            aload 6 /* socketFactoryClass */
            ldc "createSocket"
        25: .line 343
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/String;
            aastore
            dup
            iconst_1
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
        26: .line 342
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 9 /* createSocket */
        27: .line 350
            aload 9 /* createSocket */
            aload 8 /* factory */
        28: .line 351
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* host */
            aastore
            dup
            iconst_1
            new java.lang.Integer
            dup
            iload 2 /* port */
            invokespecial java.lang.Integer.<init>:(I)V
            aastore
        29: .line 350
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.net.Socket
            astore 5 /* socket */
        end local 9 // java.lang.reflect.Method createSocket
        end local 8 // java.lang.Object factory
        end local 7 // java.lang.reflect.Method getDefault
        end local 6 // java.lang.Class socketFactoryClass
        30: .line 353
            goto 47
        31: .line 355
      StackMap locals: com.sun.jndi.ldap.Connection java.lang.String int java.lang.String int java.net.Socket
      StackMap stack:
            iload 4 /* connectTimeout */
            ifle 45
        32: .line 359
            ldc Ljava/net/Socket;
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
        33: .line 358
            astore 6 /* socketCons */
        start local 6 // java.lang.reflect.Constructor socketCons
        34: .line 361
            ldc Ljava/net/Socket;
            ldc "connect"
        35: .line 362
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc "java.net.SocketAddress"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            aastore
            dup
            iconst_1
        36: .line 363
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
        37: .line 361
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            astore 7 /* connect */
        start local 7 // java.lang.reflect.Method connect
        38: .line 364
            aload 0 /* this */
            aload 1 /* host */
            iload 2 /* port */
            invokevirtual com.sun.jndi.ldap.Connection.createInetSocketAddress:(Ljava/lang/String;I)Ljava/lang/Object;
            astore 8 /* endpoint */
        start local 8 // java.lang.Object endpoint
        39: .line 366
            aload 6 /* socketCons */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.net.Socket
            astore 5 /* socket */
        40: .line 372
            aload 7 /* connect */
            aload 5 /* socket */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        41: .line 373
            aload 8 /* endpoint */
            aastore
            dup
            iconst_1
            new java.lang.Integer
            dup
            iload 4 /* connectTimeout */
            invokespecial java.lang.Integer.<init>:(I)V
            aastore
        42: .line 372
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // java.lang.Object endpoint
        end local 7 // java.lang.reflect.Method connect
        end local 6 // java.lang.reflect.Constructor socketCons
        43: .line 375
            goto 45
      StackMap locals:
      StackMap stack: java.lang.NoSuchMethodException
        44: pop
        45: .line 380
      StackMap locals:
      StackMap stack:
            aload 5 /* socket */
            ifnonnull 47
        46: .line 385
            new java.net.Socket
            dup
            aload 1 /* host */
            iload 2 /* port */
            invokespecial java.net.Socket.<init>:(Ljava/lang/String;I)V
            astore 5 /* socket */
        47: .line 389
      StackMap locals:
      StackMap stack:
            getstatic com.sun.jndi.ldap.Connection.IS_HOSTNAME_VERIFICATION_DISABLED:Z
            ifne 50
        48: .line 390
            aload 5 /* socket */
            instanceof sun.security.ssl.SSLSocketImpl
            ifeq 50
        49: .line 391
            aload 5 /* socket */
            checkcast sun.security.ssl.SSLSocketImpl
            ldc "LDAPS"
            invokevirtual sun.security.ssl.SSLSocketImpl.trySetHostnameVerification:(Ljava/lang/String;)Z
            istore 6
        50: .line 398
      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   51     0                this  Lcom/sun/jndi/ldap/Connection;
            0   51     1                host  Ljava/lang/String;
            0   51     2                port  I
            0   51     3       socketFactory  Ljava/lang/String;
            0   51     4      connectTimeout  I
            1   51     5              socket  Ljava/net/Socket;
            3   30     6  socketFactoryClass  Ljava/lang/Class;
            5   30     7          getDefault  Ljava/lang/reflect/Method;
            6   30     8             factory  Ljava/lang/Object;
            7   30     9        createSocket  Ljava/lang/reflect/Method;
           15   21    10             connect  Ljava/lang/reflect/Method;
           16   21    11            endpoint  Ljava/lang/Object;
           34   43     6          socketCons  Ljava/lang/reflect/Constructor;
           38   43     7             connect  Ljava/lang/reflect/Method;
           39   43     8            endpoint  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           8    21      22  Class java.lang.NoSuchMethodException
          32    43      44  Class java.lang.NoSuchMethodException
    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 408
            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=4, 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 412
            aload 0 /* this */
            aload 1 /* ber */
            iload 2 /* msgId */
            iconst_0
            invokevirtual com.sun.jndi.ldap.Connection.writeRequest:(Lcom/sun/jndi/ldap/BerEncoder;IZ)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=6, 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 418
            new com.sun.jndi.ldap.LdapRequest
            dup
            iload 2 /* msgId */
            iload 3 /* pauseAfterReceipt */
            invokespecial com.sun.jndi.ldap.LdapRequest.<init>:(IZ)V
            astore 4 /* req */
        start local 4 // com.sun.jndi.ldap.LdapRequest req
         1: .line 419
            aload 0 /* this */
            aload 4 /* req */
            invokevirtual com.sun.jndi.ldap.Connection.addRequest:(Lcom/sun/jndi/ldap/LdapRequest;)V
         2: .line 421
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 4
         3: .line 422
            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
         4: .line 429
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.unpauseReader:()V
         5: .line 436
            aload 0 /* this */
            dup
            astore 5
            monitorenter
         6: .line 437
            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
         7: .line 438
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
         8: .line 436
            aload 5
            monitorexit
         9: goto 15
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.BerEncoder int int com.sun.jndi.ldap.LdapRequest com.sun.jndi.ldap.Connection
      StackMap stack: java.lang.Throwable
        10: aload 5
            monitorexit
        11: athrow
        12: .line 440
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.BerEncoder int int com.sun.jndi.ldap.LdapRequest
      StackMap stack: java.io.IOException
            astore 5 /* e */
        start local 5 // java.io.IOException e
        13: .line 441
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
        14: .line 442
            aload 0 /* this */
            aload 5 /* e */
            dup_x1
            putfield com.sun.jndi.ldap.Connection.closureReason:Ljava/io/IOException;
            athrow
        end local 5 // java.io.IOException e
        15: .line 445
      StackMap locals:
      StackMap stack:
            aload 4 /* req */
            areturn
        end local 4 // com.sun.jndi.ldap.LdapRequest req
        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   16     0               this  Lcom/sun/jndi/ldap/Connection;
            0   16     1                ber  Lcom/sun/jndi/ldap/BerEncoder;
            0   16     2              msgId  I
            0   16     3  pauseAfterReceipt  Z
            1   16     4                req  Lcom/sun/jndi/ldap/LdapRequest;
           13   15     5                  e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           6     9      10  any
          10    11      10  any
           5    12      12  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                   Name  Flags
      ber                
      msgId              
      pauseAfterReceipt  

  com.sun.jndi.ldap.BerDecoder readReply(com.sun.jndi.ldap.LdapRequest);
    descriptor: (Lcom/sun/jndi/ldap/LdapRequest;)Lcom/sun/jndi/ldap/BerDecoder;
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.sun.jndi.ldap.Connection this
        start local 1 // com.sun.jndi.ldap.LdapRequest ldr
         0: .line 454
            iconst_0
            istore 3 /* waited */
        start local 3 // boolean waited
         1: .line 456
            goto 30
        start local 2 // com.sun.jndi.ldap.BerDecoder rber
         2: .line 459
      StackMap locals: com.sun.jndi.ldap.BerDecoder int
      StackMap stack:
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         3: .line 460
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            ifnonnull 7
         4: .line 461
            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;
         5: .line 462
            ldc "; socket closed"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 461
            invokespecial javax.naming.ServiceUnavailableException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 459
      StackMap locals: com.sun.jndi.ldap.Connection
      StackMap stack:
            aload 4
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 4
            monitorexit
        10: athrow
        11: .line 465
      StackMap locals:
      StackMap stack:
            aload 1 /* ldr */
            dup
            astore 4
            monitorenter
        12: .line 467
            aload 1 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.getReplyBer:()Lcom/sun/jndi/ldap/BerDecoder;
            astore 2 /* rber */
        13: .line 468
            aload 2 /* rber */
            ifnonnull 20
        14: .line 469
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.readTimeout:I
            ifle 18
        15: .line 473
            aload 1 /* ldr */
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.readTimeout:I
            i2l
            invokevirtual java.lang.Object.wait:(J)V
        16: .line 474
            iconst_1
            istore 3 /* waited */
        17: .line 475
            goto 22
        18: .line 476
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 1 /* ldr */
            ldc 15000
            invokevirtual java.lang.Object.wait:(J)V
        19: .line 478
            goto 22
        20: .line 479
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        21: goto 32
        22: .line 465
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        23: goto 30
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: aload 4
            monitorexit
        25: athrow
        26: .line 482
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest com.sun.jndi.ldap.BerDecoder int
      StackMap stack: java.lang.InterruptedException
            pop
        27: .line 483
            new javax.naming.InterruptedNamingException
            dup
        28: .line 484
            ldc "Interrupted during LDAP operation"
        29: .line 483
            invokespecial javax.naming.InterruptedNamingException.<init>:(Ljava/lang/String;)V
            athrow
        end local 2 // com.sun.jndi.ldap.BerDecoder rber
        30: .line 456
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest top int
      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
        31: ifnonnull 32
            iload 3 /* waited */
            ifeq 2
        32: .line 488
      StackMap locals: com.sun.jndi.ldap.Connection com.sun.jndi.ldap.LdapRequest com.sun.jndi.ldap.BerDecoder int
      StackMap stack:
            aload 2 /* rber */
            ifnonnull 37
            iload 3 /* waited */
            ifeq 37
        33: .line 489
            aload 0 /* this */
            aload 1 /* ldr */
            invokevirtual com.sun.jndi.ldap.Connection.removeRequest:(Lcom/sun/jndi/ldap/LdapRequest;)V
        34: .line 490
            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
        35: .line 491
            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;
        36: .line 490
            invokespecial javax.naming.NamingException.<init>:(Ljava/lang/String;)V
            athrow
        37: .line 494
      StackMap locals:
      StackMap stack:
            aload 2 /* rber */
            areturn
        end local 3 // boolean waited
        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   38     0    this  Lcom/sun/jndi/ldap/Connection;
            0   38     1     ldr  Lcom/sun/jndi/ldap/LdapRequest;
            2   30     2    rber  Lcom/sun/jndi/ldap/BerDecoder;
           31   38     2    rber  Lcom/sun/jndi/ldap/BerDecoder;
            1   38     3  waited  Z
      Exception table:
        from    to  target  type
           3     8       9  any
           9    10       9  any
          12    21      24  any
          22    23      24  any
          24    25      24  any
           2    21      26  Class java.lang.InterruptedException
          22    26      26  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 506
            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 507
            aload 2 /* ldr */
            ifnonnull 5
         2: .line 508
            aload 0 /* this */
            aload 1 /* ldapRequest */
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         3: .line 509
            aload 1 /* ldapRequest */
            aconst_null
            putfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
         4: .line 510
            goto 7
         5: .line 511
      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 512
            aload 0 /* this */
            aload 1 /* ldapRequest */
            putfield com.sun.jndi.ldap.Connection.pendingRequests:Lcom/sun/jndi/ldap/LdapRequest;
         7: .line 514
      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 518
            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 519
            goto 5
         2: .line 520
      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 521
            aload 2 /* ldr */
            areturn
         4: .line 523
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
         5: .line 519
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            ifnonnull 2
         6: .line 525
            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 530
            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 531
            aconst_null
            astore 3 /* ldrprev */
        start local 3 // com.sun.jndi.ldap.LdapRequest ldrprev
         2: .line 533
            goto 12
         3: .line 534
      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 535
            aload 2 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.cancel:()V
         5: .line 537
            aload 3 /* ldrprev */
            ifnull 8
         6: .line 538
            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 539
            goto 9
         8: .line 540
      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 542
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            aconst_null
            putfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
        10: .line 544
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            astore 3 /* ldrprev */
        11: .line 545
            aload 2 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 2 /* ldr */
        12: .line 533
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            ifnonnull 3
        13: .line 547
            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 551
            aload 0 /* this */
            aload 1 /* ldr */
            invokevirtual com.sun.jndi.ldap.Connection.removeRequest:(Lcom/sun/jndi/ldap/LdapRequest;)V
         1: .line 553
            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 554
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getMsgId:()I
            istore 4 /* abandonMsgId */
        start local 4 // int abandonMsgId
         3: .line 560
            aload 3 /* ber */
            bipush 48
            invokevirtual com.sun.jndi.ldap.BerEncoder.beginSeq:(I)V
         4: .line 561
            aload 3 /* ber */
            iload 4 /* abandonMsgId */
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeInt:(I)V
         5: .line 562
            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 564
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.v3:Z
            ifeq 8
         7: .line 565
            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 567
      StackMap locals: com.sun.jndi.ldap.BerEncoder int
      StackMap stack:
            aload 3 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.endSeq:()V
         9: .line 569
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 13
        10: .line 570
            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 571
            aload 3 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
        12: .line 570
            invokestatic com.sun.jndi.ldap.Ber.dumpBER:(Ljava/io/OutputStream;Ljava/lang/String;[BII)V
        13: .line 574
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 5
            monitorenter
        14: .line 575
            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 576
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        16: .line 574
            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 579
      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 584
      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 587
            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 589
            goto 4
         2: .line 590
      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 591
            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 589
      StackMap locals:
      StackMap stack:
            aload 2 /* ldr */
            ifnonnull 2
         5: .line 593
            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 604
            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 605
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getMsgId:()I
            istore 3 /* unbindMsgId */
        start local 3 // int unbindMsgId
         2: .line 613
            aload 2 /* ber */
            bipush 48
            invokevirtual com.sun.jndi.ldap.BerEncoder.beginSeq:(I)V
         3: .line 614
            aload 2 /* ber */
            iload 3 /* unbindMsgId */
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeInt:(I)V
         4: .line 616
            aload 2 /* ber */
            bipush 66
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeByte:(I)V
         5: .line 617
            aload 2 /* ber */
            iconst_0
            invokevirtual com.sun.jndi.ldap.BerEncoder.encodeByte:(I)V
         6: .line 619
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.v3:Z
            ifeq 8
         7: .line 620
            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 622
      StackMap locals: com.sun.jndi.ldap.BerEncoder int
      StackMap stack:
            aload 2 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.endSeq:()V
         9: .line 624
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 13
        10: .line 625
            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 626
            iconst_0
            aload 2 /* ber */
            invokevirtual com.sun.jndi.ldap.BerEncoder.getDataLen:()I
        12: .line 625
            invokestatic com.sun.jndi.ldap.Ber.dumpBER:(Ljava/io/OutputStream;Ljava/lang/String;[BII)V
        13: .line 629
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 4
            monitorenter
        14: .line 630
            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 631
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        16: .line 629
            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 634
      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 639
      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 652
            iconst_0
            istore 3 /* nparent */
        start local 3 // boolean nparent
         1: .line 654
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         2: .line 655
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.useable:Z
         3: .line 657
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            ifnull 36
         4: .line 662
            iload 2 /* notifyParent */
            ifne 6
         5: .line 663
            aload 0 /* this */
            aload 1 /* reqCtls */
            invokevirtual com.sun.jndi.ldap.Connection.abandonOutstandingReqs:([Ljavax/naming/ldap/Control;)V
         6: .line 665
      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 666
            aload 0 /* this */
            aload 1 /* reqCtls */
            invokevirtual com.sun.jndi.ldap.Connection.ldapUnbind:([Ljavax/naming/ldap/Control;)V
         8: .line 668
            goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 5
        10: .line 670
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
        11: .line 671
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        12: .line 672
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.unpauseReader:()V
        13: .line 673
            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 677
      StackMap locals:
      StackMap stack:
            iload 2 /* notifyParent */
            ifne 21
        16: .line 678
            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 679
            goto 20
        18: .line 680
      StackMap locals: com.sun.jndi.ldap.LdapRequest
      StackMap stack:
            aload 6 /* ldr */
            invokevirtual com.sun.jndi.ldap.LdapRequest.cancel:()V
        19: .line 681
            aload 6 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 6 /* ldr */
        20: .line 679
      StackMap locals:
      StackMap stack:
            aload 6 /* ldr */
            ifnonnull 18
        end local 6 // com.sun.jndi.ldap.LdapRequest ldr
        21: .line 684
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
        22: .line 685
            aload 5
            athrow
        23: .line 670
      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 671
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.sock:Ljava/net/Socket;
            invokevirtual java.net.Socket.close:()V
        25: .line 672
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.unpauseReader:()V
        26: .line 673
            goto 28
      StackMap locals:
      StackMap stack: java.io.IOException
        27: astore 6
        28: .line 677
      StackMap locals:
      StackMap stack:
            iload 2 /* notifyParent */
            ifne 34
        29: .line 678
            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 679
            goto 33
        31: .line 680
      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 681
            aload 6 /* ldr */
            getfield com.sun.jndi.ldap.LdapRequest.next:Lcom/sun/jndi/ldap/LdapRequest;
            astore 6 /* ldr */
        33: .line 679
      StackMap locals:
      StackMap stack:
            aload 6 /* ldr */
            ifnonnull 31
        end local 6 // com.sun.jndi.ldap.LdapRequest ldr
        34: .line 684
      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 686
            iload 2 /* notifyParent */
            istore 3 /* nparent */
        36: .line 654
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        37: goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: aload 4
            monitorexit
        39: athrow
        40: .line 689
      StackMap locals:
      StackMap stack:
            iload 3 /* nparent */
            ifeq 42
        41: .line 690
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.parent:Lcom/sun/jndi/ldap/LdapClient;
            invokevirtual com.sun.jndi.ldap.LdapClient.processConnectionClosure:()V
        42: .line 692
      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   43     0          this  Lcom/sun/jndi/ldap/Connection;
            0   43     1       reqCtls  [Ljavax/naming/ldap/Control;
            0   43     2  notifyParent  Z
            1   43     3       nparent  Z
           17   21     6           ldr  Lcom/sun/jndi/ldap/LdapRequest;
           30   34     6           ldr  Lcom/sun/jndi/ldap/LdapRequest;
      Exception table:
        from    to  target  type
           4     9       9  any
          10    13      14  Class java.io.IOException
          23    26      27  Class java.io.IOException
           2    37      38  any
          38    39      38  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 705
            aload 0 /* this */
            aload 1 /* newIn */
            putfield com.sun.jndi.ldap.Connection.inStream:Ljava/io/InputStream;
         1: .line 709
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
         2: .line 710
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         3: astore 3
         4: .line 716
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* newOut */
            putfield com.sun.jndi.ldap.Connection.outStream:Ljava/io/OutputStream;
         5: .line 717
            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 725
            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 783
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pauseLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 784
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.paused:Z
            ifeq 4
         2: .line 789
            aload 0 /* this */
            iconst_0
            putfield com.sun.jndi.ldap.Connection.paused:Z
         3: .line 790
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pauseLock:Ljava/lang/Object;
            invokevirtual java.lang.Object.notify:()V
         4: .line 783
      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 793
      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 805
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.ldap.Connection.paused:Z
         1: .line 807
            goto 3
         2: .line 808
      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 807
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.paused:Z
            ifne 2
         4: .line 810
            goto 9
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         5: pop
         6: .line 811
            new java.io.InterruptedIOException
            dup
         7: .line 812
            ldc "Pause/unpause reader has problems."
         8: .line 811
            invokespecial java.io.InterruptedIOException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 814
      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 835
            aconst_null
            astore 10 /* in */
        start local 10 // java.io.InputStream in
         1: .line 840
      StackMap locals: com.sun.jndi.ldap.Connection top top top top top top top top top java.io.InputStream
      StackMap stack:
            bipush 10
            newarray 8
            astore 1 /* inbuf */
        start local 1 // byte[] inbuf
         2: .line 842
            iconst_0
            istore 5 /* offset */
        start local 5 // int offset
         3: .line 843
            iconst_0
            istore 6 /* seqlen */
        start local 6 // int seqlen
         4: .line 844
            iconst_0
            istore 7 /* seqlenlen */
        start local 7 // int seqlenlen
         5: .line 846
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getInputStream:()Ljava/io/InputStream;
            astore 10 /* in */
         6: .line 849
            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 850
            iload 3 /* bytesread */
            ifge 10
         8: .line 851
            aload 10 /* in */
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getInputStream:()Ljava/io/InputStream;
            if_acmpeq 73
         9: .line 852
            goto 1
        10: .line 858
      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 859
            goto 1
        12: .line 862
      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 863
            iload 3 /* bytesread */
            ifge 15
        14: .line 864
            goto 73
        15: .line 865
      StackMap locals:
      StackMap stack:
            aload 1 /* inbuf */
            iload 5 /* offset */
            iinc 5 /* offset */ 1
            baload
            istore 6 /* seqlen */
        16: .line 870
            iload 6 /* seqlen */
            sipush 128
            iand
            sipush 128
            if_icmpne 38
        17: .line 871
            iload 6 /* seqlen */
            bipush 127
            iand
            istore 7 /* seqlenlen */
        18: .line 873
            iconst_0
            istore 3 /* bytesread */
        19: .line 874
            iconst_0
            istore 8 /* eos */
        start local 8 // boolean eos
        20: .line 877
            goto 28
        21: .line 878
      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 879
            iload 7 /* seqlenlen */
            iload 3 /* bytesread */
            isub
        23: .line 878
            invokevirtual java.io.InputStream.read:([BII)I
            istore 4 /* br */
        start local 4 // int br
        24: .line 880
            iload 4 /* br */
            ifge 27
        25: .line 881
            iconst_1
            istore 8 /* eos */
        26: .line 882
            goto 29
        27: .line 884
      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 877
      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 888
      StackMap locals:
      StackMap stack:
            iload 8 /* eos */
            ifeq 31
        30: .line 889
            goto 73
        31: .line 892
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* seqlen */
        32: .line 893
            iconst_0
            istore 11 /* i */
        start local 11 // int i
        33: goto 36
        34: .line 894
      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 893
            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 896
            iload 5 /* offset */
            iload 3 /* bytesread */
            iadd
            istore 5 /* offset */
        end local 8 // boolean eos
        38: .line 900
      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 */
            iconst_0
            invokestatic sun.misc.IOUtils.readFully:(Ljava/io/InputStream;IZ)[B
            astore 11 /* left */
        start local 11 // byte[] left
        39: .line 901
            aload 1 /* inbuf */
            iload 5 /* offset */
            aload 11 /* left */
            arraylength
            iadd
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 1 /* inbuf */
        40: .line 902
            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 903
            iload 5 /* offset */
            aload 11 /* left */
            arraylength
            iadd
            istore 5 /* offset */
        42: .line 915
            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 917
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.traceFile:Ljava/io/OutputStream;
            ifnull 45
        44: .line 918
            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 921
      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 922
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.BerDecoder.parseInt:()I
            istore 2 /* inMsgId */
        start local 2 // int inMsgId
        47: .line 923
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.BerDecoder.reset:()V
        48: .line 925
            iconst_0
            istore 12 /* needPause */
        start local 12 // boolean needPause
        49: .line 927
            iload 2 /* inMsgId */
            ifne 52
        50: .line 929
            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 930
            goto 1
        52: .line 931
      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 933
            aload 13 /* ldr */
            ifnull 1
        54: .line 940
            aload 0 /* this */
            getfield com.sun.jndi.ldap.Connection.pauseLock:Ljava/lang/Object;
            dup
            astore 14
            monitorenter
        55: .line 941
            aload 13 /* ldr */
            aload 9 /* retBer */
            invokevirtual com.sun.jndi.ldap.LdapRequest.addReplyBer:(Lcom/sun/jndi/ldap/BerDecoder;)Z
            istore 12 /* needPause */
        56: .line 942
            iload 12 /* needPause */
            ifeq 58
        57: .line 947
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.pauseReader:()V
        58: .line 940
      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 957
      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 960
            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 966
            aload 10 /* in */
            aload 0 /* this */
            invokevirtual com.sun.jndi.ldap.Connection.getInputStream:()Ljava/io/InputStream;
            if_acmpne 1
        66: .line 973
            aload 11 /* ie */
            athrow
        end local 11 // java.io.IOException ie
        67: .line 982
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 11 /* ex */
        start local 11 // java.io.IOException ex
        68: .line 986
            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 988
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
            goto 74
        70: .line 987
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 15
        71: .line 988
            aload 0 /* this */
            aconst_null
            iconst_1
            invokevirtual com.sun.jndi.ldap.Connection.cleanup:([Ljavax/naming/ldap/Control;Z)V
        72: .line 989
            aload 15
            athrow
        73: .line 988
      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 993
      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
}
SourceFile: "Connection.java"
NestMembers:
  com.sun.jndi.ldap.Connection$1
InnerClasses:
  final DecodeException = com.sun.jndi.ldap.Ber$DecodeException of com.sun.jndi.ldap.Ber
  com.sun.jndi.ldap.Connection$1