final class sun.security.ssl.HandshakeMessage$ClientHello extends sun.security.ssl.HandshakeMessage
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.HandshakeMessage$ClientHello
  super_class: sun.security.ssl.HandshakeMessage
{
  sun.security.ssl.ProtocolVersion protocolVersion;
    descriptor: Lsun/security/ssl/ProtocolVersion;
    flags: (0x0000) 

  sun.security.ssl.RandomCookie clnt_random;
    descriptor: Lsun/security/ssl/RandomCookie;
    flags: (0x0000) 

  sun.security.ssl.SessionId sessionId;
    descriptor: Lsun/security/ssl/SessionId;
    flags: (0x0000) 

  byte[] cookie;
    descriptor: [B
    flags: (0x0000) 

  private sun.security.ssl.CipherSuiteList cipherSuites;
    descriptor: Lsun/security/ssl/CipherSuiteList;
    flags: (0x0002) ACC_PRIVATE

  private final boolean isDTLS;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  byte[] compression_methods;
    descriptor: [B
    flags: (0x0000) 

  sun.security.ssl.HelloExtensions extensions;
    descriptor: Lsun/security/ssl/HelloExtensions;
    flags: (0x0000) 

  private static final byte[] NULL_COMPRESSION;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 301
            iconst_1
            newarray 8
            putstatic sun.security.ssl.HandshakeMessage$ClientHello.NULL_COMPRESSION:[B
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.security.SecureRandom, sun.security.ssl.ProtocolVersion, sun.security.ssl.SessionId, sun.security.ssl.CipherSuiteList, boolean);
    descriptor: (Ljava/security/SecureRandom;Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/SessionId;Lsun/security/ssl/CipherSuiteList;Z)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=6
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // java.security.SecureRandom generator
        start local 2 // sun.security.ssl.ProtocolVersion protocolVersion
        start local 3 // sun.security.ssl.SessionId sessionId
        start local 4 // sun.security.ssl.CipherSuiteList cipherSuites
        start local 5 // boolean isDTLS
         0: .line 303
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage.<init>:()V
         1: .line 299
            aload 0 /* this */
            new sun.security.ssl.HelloExtensions
            dup
            invokespecial sun.security.ssl.HelloExtensions.<init>:()V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
         2: .line 307
            aload 0 /* this */
            iload 5 /* isDTLS */
            putfield sun.security.ssl.HandshakeMessage$ClientHello.isDTLS:Z
         3: .line 308
            aload 0 /* this */
            aload 2 /* protocolVersion */
            putfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         4: .line 309
            aload 0 /* this */
            aload 3 /* sessionId */
            putfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
         5: .line 310
            aload 0 /* this */
            aload 4 /* cipherSuites */
            putfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
         6: .line 311
            iload 5 /* isDTLS */
            ifeq 9
         7: .line 312
            aload 0 /* this */
            iconst_0
            newarray 8
            putfield sun.security.ssl.HandshakeMessage$ClientHello.cookie:[B
         8: .line 313
            goto 10
         9: .line 314
      StackMap locals: sun.security.ssl.HandshakeMessage$ClientHello java.security.SecureRandom sun.security.ssl.ProtocolVersion sun.security.ssl.SessionId sun.security.ssl.CipherSuiteList int
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.HandshakeMessage$ClientHello.cookie:[B
        10: .line 317
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new sun.security.ssl.RandomCookie
            dup
            aload 1 /* generator */
            invokespecial sun.security.ssl.RandomCookie.<init>:(Ljava/security/SecureRandom;)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.clnt_random:Lsun/security/ssl/RandomCookie;
        11: .line 318
            aload 0 /* this */
            getstatic sun.security.ssl.HandshakeMessage$ClientHello.NULL_COMPRESSION:[B
            putfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
        12: .line 319
            return
        end local 5 // boolean isDTLS
        end local 4 // sun.security.ssl.CipherSuiteList cipherSuites
        end local 3 // sun.security.ssl.SessionId sessionId
        end local 2 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 1 // java.security.SecureRandom generator
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0             this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0   13     1        generator  Ljava/security/SecureRandom;
            0   13     2  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            0   13     3        sessionId  Lsun/security/ssl/SessionId;
            0   13     4     cipherSuites  Lsun/security/ssl/CipherSuiteList;
            0   13     5           isDTLS  Z
    MethodParameters:
                 Name  Flags
      generator        
      protocolVersion  
      sessionId        
      cipherSuites     
      isDTLS           

  void <init>(sun.security.ssl.HandshakeInStream, int, boolean);
    descriptor: (Lsun/security/ssl/HandshakeInStream;IZ)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // sun.security.ssl.HandshakeInStream s
        start local 2 // int messageLength
        start local 3 // boolean isDTLS
         0: .line 321
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage.<init>:()V
         1: .line 299
            aload 0 /* this */
            new sun.security.ssl.HelloExtensions
            dup
            invokespecial sun.security.ssl.HelloExtensions.<init>:()V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
         2: .line 324
            aload 0 /* this */
            iload 3 /* isDTLS */
            putfield sun.security.ssl.HandshakeMessage$ClientHello.isDTLS:Z
         3: .line 326
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            invokestatic sun.security.ssl.ProtocolVersion.valueOf:(II)Lsun/security/ssl/ProtocolVersion;
            putfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         4: .line 327
            aload 0 /* this */
            new sun.security.ssl.RandomCookie
            dup
            aload 1 /* s */
            invokespecial sun.security.ssl.RandomCookie.<init>:(Lsun/security/ssl/HandshakeInStream;)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.clnt_random:Lsun/security/ssl/RandomCookie;
         5: .line 328
            aload 0 /* this */
            new sun.security.ssl.SessionId
            dup
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes8:()[B
            invokespecial sun.security.ssl.SessionId.<init>:([B)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
         6: .line 329
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            invokevirtual sun.security.ssl.SessionId.checkLength:(Lsun/security/ssl/ProtocolVersion;)V
         7: .line 330
            iload 3 /* isDTLS */
            ifeq 10
         8: .line 331
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes8:()[B
            putfield sun.security.ssl.HandshakeMessage$ClientHello.cookie:[B
         9: .line 332
            goto 11
        10: .line 333
      StackMap locals: sun.security.ssl.HandshakeMessage$ClientHello sun.security.ssl.HandshakeInStream int int
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield sun.security.ssl.HandshakeMessage$ClientHello.cookie:[B
        11: .line 336
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new sun.security.ssl.CipherSuiteList
            dup
            aload 1 /* s */
            invokespecial sun.security.ssl.CipherSuiteList.<init>:(Lsun/security/ssl/HandshakeInStream;)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
        12: .line 337
            aload 0 /* this */
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes8:()[B
            putfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
        13: .line 338
            aload 0 /* this */
            invokevirtual sun.security.ssl.HandshakeMessage$ClientHello.messageLength:()I
            iload 2 /* messageLength */
            if_icmpeq 15
        14: .line 339
            aload 0 /* this */
            new sun.security.ssl.HelloExtensions
            dup
            aload 1 /* s */
            invokespecial sun.security.ssl.HelloExtensions.<init>:(Lsun/security/ssl/HandshakeInStream;)V
            putfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
        15: .line 341
      StackMap locals:
      StackMap stack:
            return
        end local 3 // boolean isDTLS
        end local 2 // int messageLength
        end local 1 // sun.security.ssl.HandshakeInStream s
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   16     0           this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0   16     1              s  Lsun/security/ssl/HandshakeInStream;
            0   16     2  messageLength  I
            0   16     3         isDTLS  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      s              
      messageLength  
      isDTLS         

  sun.security.ssl.CipherSuiteList getCipherSuites();
    descriptor: ()Lsun/security/ssl/CipherSuiteList;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 344
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
            areturn
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;

  void addRenegotiationInfoExtension(byte[]);
    descriptor: ([B)V
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // byte[] clientVerifyData
         0: .line 349
            new sun.security.ssl.RenegotiationInfoExtension
            dup
         1: .line 350
            aload 1 /* clientVerifyData */
            iconst_0
            newarray 8
         2: .line 349
            invokespecial sun.security.ssl.RenegotiationInfoExtension.<init>:([B[B)V
            astore 2 /* renegotiationInfo */
        start local 2 // sun.security.ssl.HelloExtension renegotiationInfo
         3: .line 351
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            aload 2 /* renegotiationInfo */
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         4: .line 352
            return
        end local 2 // sun.security.ssl.HelloExtension renegotiationInfo
        end local 1 // byte[] clientVerifyData
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    5     0               this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    5     1   clientVerifyData  [B
            3    5     2  renegotiationInfo  Lsun/security/ssl/HelloExtension;
    MethodParameters:
                  Name  Flags
      clientVerifyData  

  void addSNIExtension(java.util.List<javax.net.ssl.SNIServerName>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // java.util.List serverNames
         0: .line 357
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            new sun.security.ssl.ServerNameExtension
            dup
            aload 1 /* serverNames */
            invokespecial sun.security.ssl.ServerNameExtension.<init>:(Ljava/util/List;)V
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         1: .line 358
            goto 3
      StackMap locals:
      StackMap stack: java.io.IOException
         2: pop
         3: .line 361
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List serverNames
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    4     1  serverNames  Ljava/util/List<Ljavax/net/ssl/SNIServerName;>;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
    Signature: (Ljava/util/List<Ljavax/net/ssl/SNIServerName;>;)V
    MethodParameters:
             Name  Flags
      serverNames  

  void addSignatureAlgorithmsExtension(java.util.Collection<sun.security.ssl.SignatureAndHashAlgorithm>);
    descriptor: (Ljava/util/Collection;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // java.util.Collection algorithms
         0: .line 367
            new sun.security.ssl.SignatureAlgorithmsExtension
            dup
            aload 1 /* algorithms */
            invokespecial sun.security.ssl.SignatureAlgorithmsExtension.<init>:(Ljava/util/Collection;)V
         1: .line 366
            astore 2 /* signatureAlgorithm */
        start local 2 // sun.security.ssl.HelloExtension signatureAlgorithm
         2: .line 368
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            aload 2 /* signatureAlgorithm */
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         3: .line 369
            return
        end local 2 // sun.security.ssl.HelloExtension signatureAlgorithm
        end local 1 // java.util.Collection algorithms
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    4     0                this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    4     1          algorithms  Ljava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;
            2    4     2  signatureAlgorithm  Lsun/security/ssl/HelloExtension;
    Signature: (Ljava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;)V
    MethodParameters:
            Name  Flags
      algorithms  

  void addExtendedMasterSecretExtension();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 372
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            new sun.security.ssl.ExtendedMasterSecretExtension
            dup
            invokespecial sun.security.ssl.ExtendedMasterSecretExtension.<init>:()V
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         1: .line 373
            return
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;

  void addMFLExtension(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // int maximumPacketSize
         0: .line 377
            new sun.security.ssl.MaxFragmentLengthExtension
            dup
            iload 1 /* maximumPacketSize */
            invokespecial sun.security.ssl.MaxFragmentLengthExtension.<init>:(I)V
         1: .line 376
            astore 2 /* maxFragmentLength */
        start local 2 // sun.security.ssl.HelloExtension maxFragmentLength
         2: .line 378
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            aload 2 /* maxFragmentLength */
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         3: .line 379
            return
        end local 2 // sun.security.ssl.HelloExtension maxFragmentLength
        end local 1 // int maximumPacketSize
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    4     0               this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    4     1  maximumPacketSize  I
            2    4     2  maxFragmentLength  Lsun/security/ssl/HelloExtension;
    MethodParameters:
                   Name  Flags
      maximumPacketSize  

  void updateHelloCookie(java.security.MessageDigest);
    descriptor: (Ljava/security/MessageDigest;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // java.security.MessageDigest cookieDigest
         0: .line 386
            new sun.security.ssl.HandshakeOutStream
            dup
            aconst_null
            invokespecial sun.security.ssl.HandshakeOutStream.<init>:(Lsun/security/ssl/OutputRecord;)V
            astore 2 /* hos */
        start local 2 // sun.security.ssl.HandshakeOutStream hos
         1: .line 389
            aload 0 /* this */
            aload 2 /* hos */
            iconst_0
            invokevirtual sun.security.ssl.HandshakeMessage$ClientHello.send:(Lsun/security/ssl/HandshakeOutStream;Z)V
         2: .line 390
            goto 4
      StackMap locals: sun.security.ssl.HandshakeMessage$ClientHello java.security.MessageDigest sun.security.ssl.HandshakeOutStream
      StackMap stack: java.io.IOException
         3: pop
         4: .line 394
      StackMap locals:
      StackMap stack:
            aload 1 /* cookieDigest */
            aload 2 /* hos */
            invokevirtual sun.security.ssl.HandshakeOutStream.toByteArray:()[B
            invokevirtual java.security.MessageDigest.update:([B)V
         5: .line 395
            return
        end local 2 // sun.security.ssl.HandshakeOutStream hos
        end local 1 // java.security.MessageDigest cookieDigest
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    6     1  cookieDigest  Ljava/security/MessageDigest;
            1    6     2           hos  Lsun/security/ssl/HandshakeOutStream;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
    MethodParameters:
              Name  Flags
      cookieDigest  

  void addCertStatusRequestExtension();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 399
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            new sun.security.ssl.CertStatusReqExtension
            dup
            getstatic sun.security.ssl.StatusRequestType.OCSP:Lsun/security/ssl/StatusRequestType;
         1: .line 400
            new sun.security.ssl.OCSPStatusRequest
            dup
            invokespecial sun.security.ssl.OCSPStatusRequest.<init>:()V
            invokespecial sun.security.ssl.CertStatusReqExtension.<init>:(Lsun/security/ssl/StatusRequestType;Lsun/security/ssl/StatusRequest;)V
         2: .line 399
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         3: .line 401
            return
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;

  void addCertStatusReqListV2Extension();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 407
            new sun.security.ssl.OCSPStatusRequest
            dup
            invokespecial sun.security.ssl.OCSPStatusRequest.<init>:()V
            astore 1 /* osr */
        start local 1 // sun.security.ssl.OCSPStatusRequest osr
         1: .line 408
            new java.util.ArrayList
            dup
            iconst_2
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 2 /* itemList */
        start local 2 // java.util.List itemList
         2: .line 409
            aload 2 /* itemList */
            new sun.security.ssl.CertStatusReqItemV2
            dup
            getstatic sun.security.ssl.StatusRequestType.OCSP_MULTI:Lsun/security/ssl/StatusRequestType;
         3: .line 410
            aload 1 /* osr */
            invokespecial sun.security.ssl.CertStatusReqItemV2.<init>:(Lsun/security/ssl/StatusRequestType;Lsun/security/ssl/StatusRequest;)V
         4: .line 409
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         5: .line 411
            aload 2 /* itemList */
            new sun.security.ssl.CertStatusReqItemV2
            dup
            getstatic sun.security.ssl.StatusRequestType.OCSP:Lsun/security/ssl/StatusRequestType;
            aload 1 /* osr */
            invokespecial sun.security.ssl.CertStatusReqItemV2.<init>:(Lsun/security/ssl/StatusRequestType;Lsun/security/ssl/StatusRequest;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 412
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            new sun.security.ssl.CertStatusReqListV2Extension
            dup
            aload 2 /* itemList */
            invokespecial sun.security.ssl.CertStatusReqListV2Extension.<init>:(Ljava/util/List;)V
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         7: .line 413
            return
        end local 2 // java.util.List itemList
        end local 1 // sun.security.ssl.OCSPStatusRequest osr
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            1    8     1       osr  Lsun/security/ssl/OCSPStatusRequest;
            2    8     2  itemList  Ljava/util/List<Lsun/security/ssl/CertStatusReqItemV2;>;

  void addALPNExtension(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // java.lang.String[] applicationProtocols
         0: .line 417
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            new sun.security.ssl.ALPNExtension
            dup
            aload 1 /* applicationProtocols */
            invokespecial sun.security.ssl.ALPNExtension.<init>:([Ljava/lang/String;)V
            invokevirtual sun.security.ssl.HelloExtensions.add:(Lsun/security/ssl/HelloExtension;)V
         1: .line 418
            return
        end local 1 // java.lang.String[] applicationProtocols
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    2     0                  this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    2     1  applicationProtocols  [Ljava/lang/String;
    Exceptions:
      throws javax.net.ssl.SSLException
    MethodParameters:
                      Name  Flags
      applicationProtocols  

  int messageType();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 421
            iconst_1
            ireturn
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;

  int messageLength();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
         0: .line 429
            bipush 38
         1: .line 430
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
            invokevirtual sun.security.ssl.SessionId.length:()I
         2: .line 429
            iadd
         3: .line 431
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.isDTLS:Z
            ifeq 4
            iconst_1
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cookie:[B
            arraylength
            iadd
            goto 5
      StackMap locals:
      StackMap stack: int
         4: iconst_0
         5: .line 429
      StackMap locals: sun.security.ssl.HandshakeMessage$ClientHello
      StackMap stack: int int
            iadd
         6: .line 432
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
            invokevirtual sun.security.ssl.CipherSuiteList.size:()I
            iconst_2
            imul
         7: .line 429
            iadd
         8: .line 433
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
            arraylength
         9: .line 429
            iadd
        10: .line 434
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            invokevirtual sun.security.ssl.HelloExtensions.length:()I
        11: .line 429
            iadd
            ireturn
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;

  void send(sun.security.ssl.HandshakeOutStream);
    descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // sun.security.ssl.HandshakeOutStream s
         0: .line 439
            aload 0 /* this */
            aload 1 /* s */
            iconst_1
            invokevirtual sun.security.ssl.HandshakeMessage$ClientHello.send:(Lsun/security/ssl/HandshakeOutStream;Z)V
         1: .line 440
            return
        end local 1 // sun.security.ssl.HandshakeOutStream s
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0    2     1     s  Lsun/security/ssl/HandshakeOutStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  void print(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // java.io.PrintStream s
         0: .line 444
            aload 1 /* s */
            new java.lang.StringBuilder
            dup
            ldc "*** ClientHello, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 446
            getstatic sun.security.ssl.HandshakeMessage$ClientHello.debug:Lsun/security/ssl/Debug;
            ifnull 12
            ldc "verbose"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 12
         2: .line 447
            aload 1 /* s */
            ldc "RandomCookie:  "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         3: .line 448
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.clnt_random:Lsun/security/ssl/RandomCookie;
            aload 1 /* s */
            invokevirtual sun.security.ssl.RandomCookie.print:(Ljava/io/PrintStream;)V
         4: .line 450
            aload 1 /* s */
            ldc "Session ID:  "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         5: .line 451
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/Object;)V
         6: .line 453
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.isDTLS:Z
            ifeq 8
         7: .line 454
            aload 1 /* s */
            ldc "cookie"
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cookie:[B
            invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
         8: .line 457
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            new java.lang.StringBuilder
            dup
            ldc "Cipher Suites: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         9: .line 459
            aload 1 /* s */
            ldc "Compression Methods"
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
            invokestatic sun.security.ssl.Debug.println:(Ljava/io/PrintStream;Ljava/lang/String;[B)V
        10: .line 460
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            aload 1 /* s */
            invokevirtual sun.security.ssl.HelloExtensions.print:(Ljava/io/PrintStream;)V
        11: .line 461
            aload 1 /* s */
            ldc "***"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        12: .line 463
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.PrintStream s
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0   13     1     s  Ljava/io/PrintStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  private void send(sun.security.ssl.HandshakeOutStream, boolean);
    descriptor: (Lsun/security/ssl/HandshakeOutStream;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
        start local 1 // sun.security.ssl.HandshakeOutStream s
        start local 2 // boolean computeCookie
         0: .line 467
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.major:B
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
         1: .line 468
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.minor:B
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
         2: .line 469
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.clnt_random:Lsun/security/ssl/RandomCookie;
            aload 1 /* s */
            invokevirtual sun.security.ssl.RandomCookie.send:(Lsun/security/ssl/HandshakeOutStream;)V
         3: .line 470
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.sessionId:Lsun/security/ssl/SessionId;
            invokevirtual sun.security.ssl.SessionId.getId:()[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes8:([B)V
         4: .line 471
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.isDTLS:Z
            ifeq 6
            iload 2 /* computeCookie */
            ifeq 6
         5: .line 472
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cookie:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes8:([B)V
         6: .line 474
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.cipherSuites:Lsun/security/ssl/CipherSuiteList;
            aload 1 /* s */
            invokevirtual sun.security.ssl.CipherSuiteList.send:(Lsun/security/ssl/HandshakeOutStream;)V
         7: .line 475
            aload 1 /* s */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.compression_methods:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes8:([B)V
         8: .line 476
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$ClientHello.extensions:Lsun/security/ssl/HelloExtensions;
            aload 1 /* s */
            invokevirtual sun.security.ssl.HelloExtensions.send:(Lsun/security/ssl/HandshakeOutStream;)V
         9: .line 477
            return
        end local 2 // boolean computeCookie
        end local 1 // sun.security.ssl.HandshakeOutStream s
        end local 0 // sun.security.ssl.HandshakeMessage$ClientHello this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lsun/security/ssl/HandshakeMessage$ClientHello;
            0   10     1              s  Lsun/security/ssl/HandshakeOutStream;
            0   10     2  computeCookie  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      s              
      computeCookie  
}
SourceFile: "HandshakeMessage.java"
NestHost: sun.security.ssl.HandshakeMessage
InnerClasses:
  final ClientHello = sun.security.ssl.HandshakeMessage$ClientHello of sun.security.ssl.HandshakeMessage