public abstract class com.sun.jmx.remote.internal.ClientCommunicatorAdmin
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.jmx.remote.internal.ClientCommunicatorAdmin
  super_class: java.lang.Object
{
  private final com.sun.jmx.remote.internal.ClientCommunicatorAdmin$Checker checker;
    descriptor: Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin$Checker;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private long period;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

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

  private final int[] lock;
    descriptor: [I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final com.sun.jmx.remote.util.ClassLogger logger;
    descriptor: Lcom/sun/jmx/remote/util/ClassLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 248
            new com.sun.jmx.remote.util.ClassLogger
            dup
            ldc "javax.management.remote.misc"
         1: .line 249
            ldc "ClientCommunicatorAdmin"
         2: .line 248
            invokespecial com.sun.jmx.remote.util.ClassLogger.<init>:(Ljava/lang/String;Ljava/lang/String;)V
         3: .line 247
            putstatic com.sun.jmx.remote.internal.ClientCommunicatorAdmin.logger:Lcom/sun/jmx/remote/util/ClassLogger;
         4: .line 249
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.sun.jmx.remote.internal.ClientCommunicatorAdmin this
        start local 1 // long period
         0: .line 35
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 243
            aload 0 /* this */
            iconst_0
            putfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
         2: .line 245
            aload 0 /* this */
            iconst_0
            newarray 10
            putfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
         3: .line 36
            aload 0 /* this */
            lload 1 /* period */
            putfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.period:J
         4: .line 38
            lload 1 /* period */
            lconst_0
            lcmp
            ifle 10
         5: .line 39
            aload 0 /* this */
            new com.sun.jmx.remote.internal.ClientCommunicatorAdmin$Checker
            dup
            aload 0 /* this */
            invokespecial com.sun.jmx.remote.internal.ClientCommunicatorAdmin$Checker.<init>:(Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin;)V
            putfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.checker:Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin$Checker;
         6: .line 41
            new java.lang.Thread
            dup
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.checker:Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin$Checker;
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            astore 3 /* t */
        start local 3 // java.lang.Thread t
         7: .line 42
            aload 3 /* t */
            iconst_1
            invokevirtual java.lang.Thread.setDaemon:(Z)V
         8: .line 43
            aload 3 /* t */
            invokevirtual java.lang.Thread.start:()V
        end local 3 // java.lang.Thread t
         9: .line 44
            goto 11
        10: .line 45
      StackMap locals: com.sun.jmx.remote.internal.ClientCommunicatorAdmin long
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.checker:Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin$Checker;
        11: .line 46
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long period
        end local 0 // com.sun.jmx.remote.internal.ClientCommunicatorAdmin this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin;
            0   12     1  period  J
            7    9     3       t  Ljava/lang/Thread;
    MethodParameters:
        Name  Flags
      period  

  public void gotIOException(java.io.IOException);
    descriptor: (Ljava/io/IOException;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.jmx.remote.internal.ClientCommunicatorAdmin this
        start local 1 // java.io.IOException ioe
         0: .line 52
            aload 0 /* this */
            aload 1 /* ioe */
            invokevirtual com.sun.jmx.remote.internal.ClientCommunicatorAdmin.restart:(Ljava/io/IOException;)V
         1: .line 53
            return
        end local 1 // java.io.IOException ioe
        end local 0 // com.sun.jmx.remote.internal.ClientCommunicatorAdmin this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin;
            0    2     1   ioe  Ljava/io/IOException;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      ioe   

  protected abstract void checkConnection();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  protected abstract void doStart();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  protected abstract void doStop();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public void terminate();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.sun.jmx.remote.internal.ClientCommunicatorAdmin this
         0: .line 74
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
            dup
            astore 1
            monitorenter
         1: .line 75
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
            iconst_3
            if_icmpne 4
         2: .line 76
            aload 1
            monitorexit
         3: return
         4: .line 79
      StackMap locals: int[]
      StackMap stack:
            aload 0 /* this */
            iconst_3
            putfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
         5: .line 81
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
            invokevirtual java.lang.Object.notifyAll:()V
         6: .line 83
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.checker:Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin$Checker;
            ifnull 8
         7: .line 84
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.checker:Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin$Checker;
            invokevirtual com.sun.jmx.remote.internal.ClientCommunicatorAdmin$Checker.stop:()V
         8: .line 74
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 1
            monitorexit
        11: athrow
        12: .line 86
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.jmx.remote.internal.ClientCommunicatorAdmin this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin;
      Exception table:
        from    to  target  type
           1     3      10  any
           4     9      10  any
          10    11      10  any

  private void restart(java.io.IOException);
    descriptor: (Ljava/io/IOException;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.sun.jmx.remote.internal.ClientCommunicatorAdmin this
        start local 1 // java.io.IOException ioe
         0: .line 90
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
            dup
            astore 2
            monitorenter
         1: .line 91
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
            iconst_3
            if_icmpne 3
         2: .line 92
            new java.io.IOException
            dup
            ldc "The client has been closed."
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 93
      StackMap locals: int[]
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
            iconst_2
            if_icmpne 5
         4: .line 94
            aload 1 /* ioe */
            athrow
         5: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
            iconst_1
            if_icmpne 18
         6: .line 98
            goto 13
         7: .line 100
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
            invokevirtual java.lang.Object.wait:()V
         8: .line 101
            goto 13
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         9: astore 3 /* ire */
        start local 3 // java.lang.InterruptedException ire
        10: .line 103
            new java.io.InterruptedIOException
            dup
            aload 3 /* ire */
            invokevirtual java.lang.InterruptedException.toString:()Ljava/lang/String;
            invokespecial java.io.InterruptedIOException.<init>:(Ljava/lang/String;)V
            astore 4 /* iioe */
        start local 4 // java.io.InterruptedIOException iioe
        11: .line 104
            aload 4 /* iioe */
            aload 3 /* ire */
            invokestatic com.sun.jmx.remote.util.EnvHelp.initCause:(Ljava/lang/Throwable;Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
        12: .line 106
            aload 4 /* iioe */
            athrow
        end local 4 // java.io.InterruptedIOException iioe
        end local 3 // java.lang.InterruptedException ire
        13: .line 98
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
            iconst_1
            if_icmpeq 7
        14: .line 110
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
            iconst_3
            if_icmpne 16
        15: .line 111
            new java.io.IOException
            dup
            ldc "The client has been closed."
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
            ifeq 20
        17: .line 114
            aload 1 /* ioe */
            athrow
        18: .line 117
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
        19: .line 118
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
            invokevirtual java.lang.Object.notifyAll:()V
        20: .line 90
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        21: goto 24
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: aload 2
            monitorexit
        23: athrow
        24: .line 124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ClientCommunicatorAdmin.doStart:()V
        25: .line 125
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
            dup
            astore 2
            monitorenter
        26: .line 126
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
            iconst_3
            if_icmpne 28
        27: .line 127
            new java.io.IOException
            dup
            ldc "The client has been closed."
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        28: .line 130
      StackMap locals: int[]
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
        29: .line 132
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
            invokevirtual java.lang.Object.notifyAll:()V
        30: .line 125
            aload 2
            monitorexit
        31: goto 34
      StackMap locals:
      StackMap stack: java.lang.Throwable
        32: aload 2
            monitorexit
        33: athrow
        34: .line 135
      StackMap locals:
      StackMap stack:
            return
        35: .line 136
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
        36: .line 137
            getstatic com.sun.jmx.remote.internal.ClientCommunicatorAdmin.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "restart"
            new java.lang.StringBuilder
            dup
            ldc "Failed to restart: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.jmx.remote.util.ClassLogger.warning:(Ljava/lang/String;Ljava/lang/String;)V
        37: .line 138
            getstatic com.sun.jmx.remote.internal.ClientCommunicatorAdmin.logger:Lcom/sun/jmx/remote/util/ClassLogger;
            ldc "restart"
            aload 2 /* e */
            invokevirtual com.sun.jmx.remote.util.ClassLogger.debug:(Ljava/lang/String;Ljava/lang/Throwable;)V
        38: .line 140
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
            dup
            astore 3
            monitorenter
        39: .line 141
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
            iconst_3
            if_icmpne 41
        40: .line 142
            new java.io.IOException
            dup
            ldc "The client has been closed."
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        41: .line 145
      StackMap locals: java.lang.Exception int[]
      StackMap stack:
            aload 0 /* this */
            iconst_2
            putfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.state:I
        42: .line 147
            aload 0 /* this */
            getfield com.sun.jmx.remote.internal.ClientCommunicatorAdmin.lock:[I
            invokevirtual java.lang.Object.notifyAll:()V
        43: .line 140
            aload 3
            monitorexit
        44: goto 47
      StackMap locals:
      StackMap stack: java.lang.Throwable
        45: aload 3
            monitorexit
        46: athrow
        47: .line 151
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ClientCommunicatorAdmin.doStop:()V
        48: .line 152
            goto 50
      StackMap locals:
      StackMap stack: java.lang.Exception
        49: pop
        50: .line 157
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.jmx.remote.internal.ClientCommunicatorAdmin.terminate:()V
        51: .line 159
            aload 1 /* ioe */
            athrow
        end local 2 // java.lang.Exception e
        end local 1 // java.io.IOException ioe
        end local 0 // com.sun.jmx.remote.internal.ClientCommunicatorAdmin this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   52     0  this  Lcom/sun/jmx/remote/internal/ClientCommunicatorAdmin;
            0   52     1   ioe  Ljava/io/IOException;
           10   13     3   ire  Ljava/lang/InterruptedException;
           11   13     4  iioe  Ljava/io/InterruptedIOException;
           36   52     2     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           7     8       9  Class java.lang.InterruptedException
           1    21      22  any
          22    23      22  any
          26    31      32  any
          32    33      32  any
          24    34      35  Class java.lang.Exception
          39    44      45  any
          45    46      45  any
          47    48      49  Class java.lang.Exception
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      ioe   
}
SourceFile: "ClientCommunicatorAdmin.java"
NestMembers:
  com.sun.jmx.remote.internal.ClientCommunicatorAdmin$Checker
InnerClasses:
  private Checker = com.sun.jmx.remote.internal.ClientCommunicatorAdmin$Checker of com.sun.jmx.remote.internal.ClientCommunicatorAdmin