final class sun.security.ssl.HandshakeStateManager
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.HandshakeStateManager
  super_class: java.lang.Object
{
  private java.util.LinkedList<sun.security.ssl.HandshakeStateManager$HandshakeState> upcomingStates;
    descriptor: Ljava/util/LinkedList;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/LinkedList<Lsun/security/ssl/HandshakeStateManager$HandshakeState;>;

  private java.util.LinkedList<sun.security.ssl.HandshakeStateManager$HandshakeState> alternatives;
    descriptor: Ljava/util/LinkedList;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/LinkedList<Lsun/security/ssl/HandshakeStateManager$HandshakeState;>;

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

  private static final java.util.HashMap<java.lang.Byte, java.lang.String> handshakeTypes;
    descriptor: Ljava/util/HashMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/HashMap<Ljava/lang/Byte;Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 217
            getstatic sun.security.ssl.Handshaker.debug:Lsun/security/ssl/Debug;
            ifnull 2
         1: .line 218
            ldc "handshake"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 2
            ldc "verbose"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 2
            iconst_1
            goto 3
      StackMap locals:
      StackMap stack:
         2: iconst_0
         3: .line 217
      StackMap locals:
      StackMap stack: int
            putstatic sun.security.ssl.HandshakeStateManager.debugIsOn:Z
         4: .line 219
            new java.util.HashMap
            dup
            bipush 8
            invokespecial java.util.HashMap.<init>:(I)V
            putstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
         5: .line 221
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            iconst_0
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            ldc "hello_request"
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 222
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            iconst_1
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            ldc "client_hello"
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 223
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            iconst_2
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            ldc "server_hello"
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         8: .line 224
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            bipush 11
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            ldc "certificate"
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 225
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            bipush 12
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            ldc "server_key_exchange"
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 226
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            bipush 14
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            ldc "server_hello_done"
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 227
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            bipush 15
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            ldc "certificate_verify"
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 228
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            bipush 16
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            ldc "client_key_exchange"
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 229
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            bipush 20
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            ldc "finished"
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 230
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeStateManager this
         0: .line 232
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 233
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
         2: .line 234
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield sun.security.ssl.HandshakeStateManager.alternatives:Ljava/util/LinkedList;
         3: .line 235
            return
        end local 0 // sun.security.ssl.HandshakeStateManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/security/ssl/HandshakeStateManager;

  boolean isEmpty();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeStateManager this
         0: .line 309
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ireturn
        end local 0 // sun.security.ssl.HandshakeStateManager this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/HandshakeStateManager;

  java.util.List<java.lang.Byte> check(byte);
    descriptor: (B)Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // sun.security.ssl.HandshakeStateManager this
        start local 1 // byte handshakeType
         0: .line 313
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 2 /* ignoredOptional */
        start local 2 // java.util.List ignoredOptional
         1: .line 315
            new java.lang.StringBuilder
            dup
            ldc "Handshake message sequence violation, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* handshakeType */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 314
            astore 3 /* exceptionMsg */
        start local 3 // java.lang.String exceptionMsg
         3: .line 317
            getstatic sun.security.ssl.HandshakeStateManager.debugIsOn:Z
            ifeq 7
         4: .line 318
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         5: .line 319
            new java.lang.StringBuilder
            dup
            ldc "check handshake state: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* handshakeType */
            invokestatic sun.security.ssl.HandshakeStateManager.toString:(B)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 318
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 322
      StackMap locals: java.util.List java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ifeq 14
         8: .line 324
            iload 1 /* handshakeType */
            ifeq 13
         9: .line 325
            iload 1 /* handshakeType */
            iconst_1
            if_icmpeq 13
        10: .line 326
            new javax.net.ssl.SSLProtocolException
            dup
        11: .line 327
            new java.lang.StringBuilder
            dup
            ldc "Handshake message sequence violation, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* handshakeType */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 326
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 331
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
        14: .line 336
      StackMap locals:
      StackMap stack:
            iload 1 /* handshakeType */
            ifne 16
        15: .line 337
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
        16: .line 340
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 5
            goto 32
      StackMap locals: sun.security.ssl.HandshakeStateManager int java.util.List java.lang.String top java.util.Iterator
      StackMap stack:
        17: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 4 /* handshakeState */
        start local 4 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        18: .line 341
            aload 4 /* handshakeState */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.handshakeType:B
            iload 1 /* handshakeType */
            if_icmpne 20
        19: .line 343
            aload 2 /* ignoredOptional */
            areturn
        20: .line 346
      StackMap locals: sun.security.ssl.HandshakeStateManager int java.util.List java.lang.String sun.security.ssl.HandshakeStateManager$HandshakeState java.util.Iterator
      StackMap stack:
            aload 4 /* handshakeState */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.isOptional:Z
            ifeq 23
        21: .line 347
            aload 2 /* ignoredOptional */
            aload 4 /* handshakeState */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.handshakeType:B
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        22: .line 348
            goto 32
        23: .line 350
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.alternatives:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 7
            goto 30
      StackMap locals: sun.security.ssl.HandshakeStateManager int java.util.List java.lang.String sun.security.ssl.HandshakeStateManager$HandshakeState java.util.Iterator top java.util.Iterator
      StackMap stack:
        24: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 6 /* alternative */
        start local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState alternative
        25: .line 351
            aload 6 /* alternative */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.handshakeType:B
            iload 1 /* handshakeType */
            if_icmpne 27
        26: .line 352
            aload 2 /* ignoredOptional */
            areturn
        27: .line 355
      StackMap locals: sun.security.ssl.HandshakeStateManager int java.util.List java.lang.String sun.security.ssl.HandshakeStateManager$HandshakeState java.util.Iterator sun.security.ssl.HandshakeStateManager$HandshakeState java.util.Iterator
      StackMap stack:
            aload 6 /* alternative */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.isOptional:Z
            ifeq 29
        28: .line 356
            goto 30
        29: .line 358
      StackMap locals:
      StackMap stack:
            new javax.net.ssl.SSLProtocolException
            dup
            aload 3 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState alternative
        30: .line 350
      StackMap locals: sun.security.ssl.HandshakeStateManager int java.util.List java.lang.String sun.security.ssl.HandshakeStateManager$HandshakeState java.util.Iterator top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 24
        31: .line 362
            new javax.net.ssl.SSLProtocolException
            dup
            aload 3 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        32: .line 340
      StackMap locals: sun.security.ssl.HandshakeStateManager int java.util.List java.lang.String top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 17
        33: .line 366
            new javax.net.ssl.SSLProtocolException
            dup
        34: .line 367
            new java.lang.StringBuilder
            dup
            ldc "Handshake message sequence violation, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* handshakeType */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        35: .line 366
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.lang.String exceptionMsg
        end local 2 // java.util.List ignoredOptional
        end local 1 // byte handshakeType
        end local 0 // sun.security.ssl.HandshakeStateManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   36     0             this  Lsun/security/ssl/HandshakeStateManager;
            0   36     1    handshakeType  B
            1   36     2  ignoredOptional  Ljava/util/List<Ljava/lang/Byte;>;
            3   36     3     exceptionMsg  Ljava/lang/String;
           18   32     4   handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           25   30     6      alternative  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
    Exceptions:
      throws javax.net.ssl.SSLProtocolException
    Signature: (B)Ljava/util/List<Ljava/lang/Byte;>;
    MethodParameters:
               Name  Flags
      handshakeType  

  void update(sun.security.ssl.HandshakeMessage, boolean);
    descriptor: (Lsun/security/ssl/HandshakeMessage;Z)V
    flags: (0x0000) 
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // sun.security.ssl.HandshakeStateManager this
        start local 1 // sun.security.ssl.HandshakeMessage handshakeMessage
        start local 2 // boolean isAbbreviated
         0: .line 373
            aload 1 /* handshakeMessage */
            invokevirtual sun.security.ssl.HandshakeMessage.messageType:()I
            i2b
            istore 3 /* handshakeType */
        start local 3 // byte handshakeType
         1: .line 375
            new java.lang.StringBuilder
            dup
            ldc "Handshake message sequence violation, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* handshakeType */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 374
            astore 4 /* exceptionMsg */
        start local 4 // java.lang.String exceptionMsg
         3: .line 377
            getstatic sun.security.ssl.HandshakeStateManager.debugIsOn:Z
            ifeq 7
         4: .line 378
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         5: .line 379
            new java.lang.StringBuilder
            dup
            ldc "update handshake state: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* handshakeType */
            invokestatic sun.security.ssl.HandshakeStateManager.toString:(B)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         6: .line 378
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 382
      StackMap locals: int java.lang.String
      StackMap stack:
            iconst_0
            istore 5 /* hasPresentState */
        start local 5 // boolean hasPresentState
         8: .line 383
            iload 3 /* handshakeType */
            lookupswitch { // 4
                    0: 9
                    1: 12
                    2: 19
                   11: 60
              default: 82
          }
         9: .line 394
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ifne 92
        10: .line 396
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_HELLO:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        11: .line 400
            goto 92
        12: .line 411
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ifne 16
        13: .line 413
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.pop:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 6 /* handshakeState */
        start local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        14: .line 414
            aload 6 /* handshakeState */
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_HELLO:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            if_acmpeq 16
        15: .line 415
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        16: .line 420
      StackMap locals:
      StackMap stack:
            aload 1 /* handshakeMessage */
            checkcast sun.security.ssl.HandshakeMessage$ClientHello
            pop
        17: .line 421
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_HELLO:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        18: .line 423
            goto 92
        19: .line 461
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ifne 27
        20: .line 463
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.pop:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 6 /* handshakeState */
        start local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        21: .line 464
            aconst_null
            astore 7 /* alternative */
        start local 7 // sun.security.ssl.HandshakeStateManager$HandshakeState alternative
        22: .line 465
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.alternatives:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ifne 24
        23: .line 466
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.alternatives:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.pop:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 7 /* alternative */
        24: .line 469
      StackMap locals: sun.security.ssl.HandshakeStateManager$HandshakeState sun.security.ssl.HandshakeStateManager$HandshakeState
      StackMap stack:
            aload 6 /* handshakeState */
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_HELLO:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            if_acmpeq 28
        25: .line 470
            aload 7 /* alternative */
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_HELLO:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            if_acmpeq 28
        26: .line 471
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // sun.security.ssl.HandshakeStateManager$HandshakeState alternative
        end local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        27: .line 475
      StackMap locals:
      StackMap stack:
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        28: .line 479
      StackMap locals:
      StackMap stack:
            aload 1 /* handshakeMessage */
            checkcast sun.security.ssl.HandshakeMessage$ServerHello
            astore 6 /* serverHello */
        start local 6 // sun.security.ssl.HandshakeMessage$ServerHello serverHello
        29: .line 480
            aload 6 /* serverHello */
            getfield sun.security.ssl.HandshakeMessage$ServerHello.extensions:Lsun/security/ssl/HelloExtensions;
            pop
        30: .line 488
            iload 2 /* isAbbreviated */
            ifeq 36
        31: .line 497
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_CHANGE_CIPHER_SPEC:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        32: .line 498
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_FINISHED:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        33: .line 501
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_CHANGE_CIPHER_SPEC:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        34: .line 502
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_FINISHED:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        35: .line 503
            goto 92
        36: .line 523
      StackMap locals: sun.security.ssl.HandshakeMessage$ServerHello
      StackMap stack:
            aload 6 /* serverHello */
            getfield sun.security.ssl.HandshakeMessage$ServerHello.cipherSuite:Lsun/security/ssl/CipherSuite;
            getfield sun.security.ssl.CipherSuite.keyExchange:Lsun/security/ssl/CipherSuite$KeyExchange;
            astore 7 /* keyExchange */
        start local 7 // sun.security.ssl.CipherSuite$KeyExchange keyExchange
        37: .line 524
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_KRB5:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 42
        38: .line 525
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_KRB5_EXPORT:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 42
        39: .line 526
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_DH_ANON:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 42
        40: .line 527
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_ECDH_ANON:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 42
        41: .line 529
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_CERTIFICATE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        42: .line 533
      StackMap locals: sun.security.ssl.CipherSuite$KeyExchange
      StackMap stack:
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_RSA_EXPORT:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 49
        43: .line 534
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_DHE_RSA:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 49
        44: .line 535
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_DHE_DSS:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 49
        45: .line 536
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_DH_ANON:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 49
        46: .line 537
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_ECDHE_RSA:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 49
        47: .line 538
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_ECDHE_ECDSA:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpeq 49
        48: .line 539
            aload 7 /* keyExchange */
            getstatic sun.security.ssl.CipherSuite$KeyExchange.K_ECDH_ANON:Lsun/security/ssl/CipherSuite$KeyExchange;
            if_acmpne 50
        49: .line 541
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_KEY_EXCHANGE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        50: .line 545
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CERTIFICATE_REQUEST:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        51: .line 548
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_HELLO_DONE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        52: .line 558
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_CERTIFICATE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        53: .line 572
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_KEY_EXCHANGE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        54: .line 575
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CERTIFICATE_VERIFY:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        55: .line 578
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_CHANGE_CIPHER_SPEC:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        56: .line 579
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_FINISHED:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        57: .line 589
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_CHANGE_CIPHER_SPEC:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        58: .line 590
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_FINISHED:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
            pop
        end local 7 // sun.security.ssl.CipherSuite$KeyExchange keyExchange
        59: .line 593
            goto 92
        end local 6 // sun.security.ssl.HandshakeMessage$ServerHello serverHello
        60: .line 613
      StackMap locals:
      StackMap stack:
            goto 79
        61: .line 614
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.pop:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 7 /* handshakeState */
        start local 7 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        62: .line 615
            aload 7 /* handshakeState */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.handshakeType:B
            iload 3 /* handshakeType */
            if_icmpne 77
        63: .line 616
            iconst_1
            istore 5 /* hasPresentState */
        64: .line 623
            aload 7 /* handshakeState */
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_CERTIFICATE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            if_acmpeq 67
        65: .line 624
            aload 7 /* handshakeState */
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_CERTIFICATE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            if_acmpeq 67
        66: .line 625
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        67: .line 629
      StackMap locals: sun.security.ssl.HandshakeStateManager sun.security.ssl.HandshakeMessage int int java.lang.String int top sun.security.ssl.HandshakeStateManager$HandshakeState
      StackMap stack:
            iconst_0
            istore 8 /* isClientMessage */
        start local 8 // boolean isClientMessage
        68: .line 630
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ifne 72
        69: .line 634
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.getFirst:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 9 /* nextState */
        start local 9 // sun.security.ssl.HandshakeStateManager$HandshakeState nextState
        70: .line 635
            aload 9 /* nextState */
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_KEY_EXCHANGE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            if_acmpne 72
        71: .line 636
            iconst_1
            istore 8 /* isClientMessage */
        end local 9 // sun.security.ssl.HandshakeStateManager$HandshakeState nextState
        72: .line 640
      StackMap locals: int
      StackMap stack:
            iload 8 /* isClientMessage */
            ifeq 75
        73: .line 641
            aload 7 /* handshakeState */
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_CERTIFICATE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            if_acmpeq 80
        74: .line 642
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        75: .line 657
      StackMap locals:
      StackMap stack:
            aload 7 /* handshakeState */
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_CERTIFICATE:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            if_acmpeq 80
        76: .line 658
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 8 // boolean isClientMessage
        77: .line 663
      StackMap locals:
      StackMap stack:
            aload 7 /* handshakeState */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.isOptional:Z
            ifne 79
        78: .line 664
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        79: .line 613
      StackMap locals: sun.security.ssl.HandshakeStateManager sun.security.ssl.HandshakeMessage int int java.lang.String int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ifeq 61
        80: .line 669
      StackMap locals:
      StackMap stack:
            iload 5 /* hasPresentState */
            ifne 92
        81: .line 670
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        82: .line 679
      StackMap locals:
      StackMap stack:
            goto 89
        83: .line 680
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.pop:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 7 /* handshakeState */
        start local 7 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        84: .line 681
            aload 7 /* handshakeState */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.handshakeType:B
            iload 3 /* handshakeType */
            if_icmpne 87
        85: .line 682
            iconst_1
            istore 5 /* hasPresentState */
        86: .line 683
            goto 90
        87: .line 684
      StackMap locals: sun.security.ssl.HandshakeStateManager sun.security.ssl.HandshakeMessage int int java.lang.String int top sun.security.ssl.HandshakeStateManager$HandshakeState
      StackMap stack:
            aload 7 /* handshakeState */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.isOptional:Z
            ifne 89
        88: .line 685
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        89: .line 679
      StackMap locals: sun.security.ssl.HandshakeStateManager sun.security.ssl.HandshakeMessage int int java.lang.String int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ifeq 83
        90: .line 690
      StackMap locals:
      StackMap stack:
            iload 5 /* hasPresentState */
            ifne 92
        91: .line 691
            new javax.net.ssl.SSLProtocolException
            dup
            aload 4 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        92: .line 697
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.HandshakeStateManager.debugIsOn:Z
            ifeq 105
        93: .line 698
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 7
            goto 98
      StackMap locals: sun.security.ssl.HandshakeStateManager sun.security.ssl.HandshakeMessage int int java.lang.String int top java.util.Iterator
      StackMap stack:
        94: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 6 /* handshakeState */
        start local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        95: .line 699
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        96: .line 700
            new java.lang.StringBuilder
            dup
            ldc "upcoming handshake states: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* handshakeState */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        97: .line 699
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        98: .line 698
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 94
        99: .line 702
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.alternatives:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 7
            goto 104
      StackMap locals:
      StackMap stack:
       100: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 6 /* handshakeState */
        start local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
       101: .line 703
            getstatic java.lang.System.out:Ljava/io/PrintStream;
       102: .line 704
            new java.lang.StringBuilder
            dup
            ldc "upcoming handshake alternative state: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* handshakeState */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
       103: .line 703
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
       104: .line 702
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 100
       105: .line 707
      StackMap locals: sun.security.ssl.HandshakeStateManager sun.security.ssl.HandshakeMessage int int java.lang.String int
      StackMap stack:
            return
        end local 5 // boolean hasPresentState
        end local 4 // java.lang.String exceptionMsg
        end local 3 // byte handshakeType
        end local 2 // boolean isAbbreviated
        end local 1 // sun.security.ssl.HandshakeMessage handshakeMessage
        end local 0 // sun.security.ssl.HandshakeStateManager this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0  106     0              this  Lsun/security/ssl/HandshakeStateManager;
            0  106     1  handshakeMessage  Lsun/security/ssl/HandshakeMessage;
            0  106     2     isAbbreviated  Z
            1  106     3     handshakeType  B
            3  106     4      exceptionMsg  Ljava/lang/String;
            8  106     5   hasPresentState  Z
           14   16     6    handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           21   27     6    handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           22   27     7       alternative  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           29   60     6       serverHello  Lsun/security/ssl/HandshakeMessage$ServerHello;
           37   59     7       keyExchange  Lsun/security/ssl/CipherSuite$KeyExchange;
           62   79     7    handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           68   77     8   isClientMessage  Z
           70   72     9         nextState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           84   89     7    handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           95   98     6    handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
          101  104     6    handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
    Exceptions:
      throws javax.net.ssl.SSLProtocolException
    MethodParameters:
                  Name  Flags
      handshakeMessage  
      isAbbreviated     

  void changeCipherSpec(boolean, boolean);
    descriptor: (ZZ)V
    flags: (0x0000) 
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // sun.security.ssl.HandshakeStateManager this
        start local 1 // boolean isInput
        start local 2 // boolean isClient
         0: .line 712
            getstatic sun.security.ssl.HandshakeStateManager.debugIsOn:Z
            ifeq 4
         1: .line 713
            getstatic java.lang.System.out:Ljava/io/PrintStream;
         2: .line 714
            ldc "update handshake state: change_cipher_spec"
         3: .line 713
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 717
      StackMap locals:
      StackMap stack:
            ldc "ChangeCipherSpec message sequence violation"
            astore 3 /* exceptionMsg */
        start local 3 // java.lang.String exceptionMsg
         5: .line 720
            iload 2 /* isClient */
            ifeq 6
            iload 1 /* isInput */
            ifne 7
      StackMap locals: java.lang.String
      StackMap stack:
         6: iload 2 /* isClient */
            ifne 9
            iload 1 /* isInput */
            ifne 9
         7: .line 721
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_SERVER_CHANGE_CIPHER_SPEC:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            astore 4 /* expectedState */
        start local 4 // sun.security.ssl.HandshakeStateManager$HandshakeState expectedState
         8: .line 722
            goto 10
        end local 4 // sun.security.ssl.HandshakeStateManager$HandshakeState expectedState
         9: .line 723
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.HandshakeStateManager$HandshakeState.HS_CLIENT_CHANGE_CIPHER_SPEC:Lsun/security/ssl/HandshakeStateManager$HandshakeState;
            astore 4 /* expectedState */
        start local 4 // sun.security.ssl.HandshakeStateManager$HandshakeState expectedState
        10: .line 726
      StackMap locals: sun.security.ssl.HandshakeStateManager$HandshakeState
      StackMap stack:
            iconst_0
            istore 5 /* hasPresentState */
        start local 5 // boolean hasPresentState
        11: .line 729
            goto 18
        12: .line 730
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.pop:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 6 /* handshakeState */
        start local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        13: .line 731
            aload 6 /* handshakeState */
            aload 4 /* expectedState */
            if_acmpne 16
        14: .line 732
            iconst_1
            istore 5 /* hasPresentState */
        15: .line 733
            goto 19
        16: .line 734
      StackMap locals: sun.security.ssl.HandshakeStateManager$HandshakeState
      StackMap stack:
            aload 6 /* handshakeState */
            getfield sun.security.ssl.HandshakeStateManager$HandshakeState.isOptional:Z
            ifne 18
        17: .line 735
            new javax.net.ssl.SSLProtocolException
            dup
            aload 3 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        18: .line 729
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.isEmpty:()Z
            ifeq 12
        19: .line 740
      StackMap locals:
      StackMap stack:
            iload 5 /* hasPresentState */
            ifne 21
        20: .line 741
            new javax.net.ssl.SSLProtocolException
            dup
            aload 3 /* exceptionMsg */
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 746
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.HandshakeStateManager.debugIsOn:Z
            ifeq 34
        22: .line 747
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.upcomingStates:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 7
            goto 27
      StackMap locals: sun.security.ssl.HandshakeStateManager int int java.lang.String sun.security.ssl.HandshakeStateManager$HandshakeState int top java.util.Iterator
      StackMap stack:
        23: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 6 /* handshakeState */
        start local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        24: .line 748
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        25: .line 749
            new java.lang.StringBuilder
            dup
            ldc "upcoming handshake states: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* handshakeState */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        26: .line 748
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        27: .line 747
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 23
        28: .line 751
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeStateManager.alternatives:Ljava/util/LinkedList;
            invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
            astore 7
            goto 33
      StackMap locals:
      StackMap stack:
        29: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeStateManager$HandshakeState
            astore 6 /* handshakeState */
        start local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        30: .line 752
            getstatic java.lang.System.out:Ljava/io/PrintStream;
        31: .line 753
            new java.lang.StringBuilder
            dup
            ldc "upcoming handshake alternative state: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* handshakeState */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        32: .line 752
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 6 // sun.security.ssl.HandshakeStateManager$HandshakeState handshakeState
        33: .line 751
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 29
        34: .line 756
      StackMap locals: sun.security.ssl.HandshakeStateManager int int java.lang.String sun.security.ssl.HandshakeStateManager$HandshakeState int
      StackMap stack:
            return
        end local 5 // boolean hasPresentState
        end local 4 // sun.security.ssl.HandshakeStateManager$HandshakeState expectedState
        end local 3 // java.lang.String exceptionMsg
        end local 2 // boolean isClient
        end local 1 // boolean isInput
        end local 0 // sun.security.ssl.HandshakeStateManager this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   35     0             this  Lsun/security/ssl/HandshakeStateManager;
            0   35     1          isInput  Z
            0   35     2         isClient  Z
            5   35     3     exceptionMsg  Ljava/lang/String;
            8    9     4    expectedState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           10   35     4    expectedState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           11   35     5  hasPresentState  Z
           13   18     6   handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           24   27     6   handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
           30   33     6   handshakeState  Lsun/security/ssl/HandshakeStateManager$HandshakeState;
    Exceptions:
      throws javax.net.ssl.SSLProtocolException
    MethodParameters:
          Name  Flags
      isInput   
      isClient  

  private static java.lang.String toString(byte);
    descriptor: (B)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // byte handshakeType
         0: .line 759
            getstatic sun.security.ssl.HandshakeStateManager.handshakeTypes:Ljava/util/HashMap;
            iload 0 /* handshakeType */
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
            invokevirtual java.util.HashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* s */
        start local 1 // java.lang.String s
         1: .line 760
            aload 1 /* s */
            ifnonnull 3
         2: .line 761
            ldc "unknown"
            astore 1 /* s */
         3: .line 763
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* s */
            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 0 /* handshakeType */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.lang.String s
        end local 0 // byte handshakeType
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0  handshakeType  B
            1    4     1              s  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      handshakeType  
}
SourceFile: "HandshakeStateManager.java"
NestMembers:
  sun.security.ssl.HandshakeStateManager$HandshakeState
InnerClasses:
  final KeyExchange = sun.security.ssl.CipherSuite$KeyExchange of sun.security.ssl.CipherSuite
  final ClientHello = sun.security.ssl.HandshakeMessage$ClientHello of sun.security.ssl.HandshakeMessage
  final ServerHello = sun.security.ssl.HandshakeMessage$ServerHello of sun.security.ssl.HandshakeMessage
  final HandshakeState = sun.security.ssl.HandshakeStateManager$HandshakeState of sun.security.ssl.HandshakeStateManager