public abstract class org.glassfish.grizzly.websockets.HandShake
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.glassfish.grizzly.websockets.HandShake
  super_class: java.lang.Object
{
  private org.glassfish.grizzly.http.HttpRequestPacket$Builder builder;
    descriptor: Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
    flags: (0x0002) ACC_PRIVATE

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

  private java.lang.String origin;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String serverHostName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

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

  private java.lang.String resourcePath;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String location;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.util.List<java.lang.String> subProtocol;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Ljava/lang/String;>;

  private java.util.List<org.glassfish.grizzly.websockets.Extension> extensions;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 44
            ldc Lorg/glassfish/grizzly/websockets/HandShake;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.glassfish.grizzly.websockets.HandShake.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.net.URI);
    descriptor: (Ljava/net/URI;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.net.URI url
         0: .line 56
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 49
            aload 0 /* this */
            bipush 80
            putfield org.glassfish.grizzly.websockets.HandShake.port:I
         2: .line 53
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.glassfish.grizzly.websockets.HandShake.subProtocol:Ljava/util/List;
         3: .line 54
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.glassfish.grizzly.websockets.HandShake.extensions:Ljava/util/List;
         4: .line 57
            aload 0 /* this */
            invokestatic org.glassfish.grizzly.http.HttpRequestPacket.builder:()Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
            getstatic org.glassfish.grizzly.http.Protocol.HTTP_1_1:Lorg/glassfish/grizzly/http/Protocol;
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.protocol:(Lorg/glassfish/grizzly/http/Protocol;)Lorg/glassfish/grizzly/http/HttpHeader$Builder;
            checkcast org.glassfish.grizzly.http.HttpRequestPacket$Builder
            getstatic org.glassfish.grizzly.http.Method.GET:Lorg/glassfish/grizzly/http/Method;
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.method:(Lorg/glassfish/grizzly/http/Method;)Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
            getstatic org.glassfish.grizzly.http.util.Header.Connection:Lorg/glassfish/grizzly/http/util/Header;
            ldc "Upgrade"
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.header:(Lorg/glassfish/grizzly/http/util/Header;Ljava/lang/String;)Lorg/glassfish/grizzly/http/HttpHeader$Builder;
            checkcast org.glassfish.grizzly.http.HttpRequestPacket$Builder
            ldc "WebSocket"
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.upgrade:(Ljava/lang/String;)Lorg/glassfish/grizzly/http/HttpHeader$Builder;
            checkcast org.glassfish.grizzly.http.HttpRequestPacket$Builder
            putfield org.glassfish.grizzly.websockets.HandShake.builder:Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
         5: .line 59
            aload 0 /* this */
            aload 1 /* url */
            invokevirtual java.net.URI.getPath:()Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
         6: .line 60
            ldc ""
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 61
            aload 0 /* this */
            ldc "/"
            putfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
         8: .line 63
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.net.URI
      StackMap stack:
            aload 1 /* url */
            invokevirtual java.net.URI.getQuery:()Ljava/lang/String;
            ifnull 10
         9: .line 64
            aload 0 /* this */
            dup
            getfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
            new java.lang.StringBuilder
            dup_x1
            swap
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "?"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* url */
            invokevirtual java.net.URI.getQuery:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
        10: .line 66
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* url */
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.serverHostName:Ljava/lang/String;
        11: .line 67
            aload 0 /* this */
            ldc "wss://"
            aload 1 /* url */
            invokevirtual java.net.URI.getScheme:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            putfield org.glassfish.grizzly.websockets.HandShake.secure:Z
        12: .line 68
            aload 0 /* this */
            aload 1 /* url */
            invokevirtual java.net.URI.getPort:()I
            putfield org.glassfish.grizzly.websockets.HandShake.port:I
        13: .line 70
            new java.lang.StringBuilder
            dup
            bipush 32
            invokespecial java.lang.StringBuilder.<init>:(I)V
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getScheme:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "://"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* url */
            invokevirtual java.net.URI.getHost:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
        14: .line 71
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* sb */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.appendPort:(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.origin:Ljava/lang/String;
        15: .line 73
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.buildLocation:()V
        16: .line 74
            return
        end local 2 // java.lang.StringBuilder sb
        end local 1 // java.net.URI url
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Lorg/glassfish/grizzly/websockets/HandShake;
            0   17     1   url  Ljava/net/URI;
           14   17     2    sb  Ljava/lang/StringBuilder;
    MethodParameters:
      Name  Flags
      url   

  public void <init>(org.glassfish.grizzly.http.HttpRequestPacket);
    descriptor: (Lorg/glassfish/grizzly/http/HttpRequestPacket;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // org.glassfish.grizzly.http.HttpRequestPacket request
         0: .line 76
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 49
            aload 0 /* this */
            bipush 80
            putfield org.glassfish.grizzly.websockets.HandShake.port:I
         2: .line 53
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.glassfish.grizzly.websockets.HandShake.subProtocol:Ljava/util/List;
         3: .line 54
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.glassfish.grizzly.websockets.HandShake.extensions:Ljava/util/List;
         4: .line 77
            aload 1 /* request */
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket.getHeaders:()Lorg/glassfish/grizzly/http/util/MimeHeaders;
            astore 2 /* mimeHeaders */
        start local 2 // org.glassfish.grizzly.http.util.MimeHeaders mimeHeaders
         5: .line 78
            aload 0 /* this */
            aload 1 /* request */
            ldc "Upgrade"
            ldc "WebSocket"
            invokevirtual org.glassfish.grizzly.websockets.HandShake.checkForHeader:(Lorg/glassfish/grizzly/http/HttpHeader;Ljava/lang/String;Ljava/lang/String;)V
         6: .line 79
            aload 0 /* this */
            aload 1 /* request */
            ldc "Connection"
            ldc "Upgrade"
            invokevirtual org.glassfish.grizzly.websockets.HandShake.checkForHeader:(Lorg/glassfish/grizzly/http/HttpHeader;Ljava/lang/String;Ljava/lang/String;)V
         7: .line 80
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* mimeHeaders */
            ldc "Sec-WebSocket-Origin"
            invokevirtual org.glassfish.grizzly.websockets.HandShake.readHeader:(Lorg/glassfish/grizzly/http/util/MimeHeaders;Ljava/lang/String;)Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.origin:Ljava/lang/String;
         8: .line 81
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.origin:Ljava/lang/String;
            ifnonnull 10
         9: .line 82
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* mimeHeaders */
            ldc "Origin"
            invokevirtual org.glassfish.grizzly.websockets.HandShake.readHeader:(Lorg/glassfish/grizzly/http/util/MimeHeaders;Ljava/lang/String;)Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.origin:Ljava/lang/String;
        10: .line 84
      StackMap locals: org.glassfish.grizzly.websockets.HandShake org.glassfish.grizzly.http.HttpRequestPacket org.glassfish.grizzly.http.util.MimeHeaders
      StackMap stack:
            aload 0 /* this */
            aload 2 /* mimeHeaders */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.determineHostAndPort:(Lorg/glassfish/grizzly/http/util/MimeHeaders;)V
        11: .line 85
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* mimeHeaders */
            ldc "Sec-WebSocket-Protocol"
            invokevirtual org.glassfish.grizzly.http.util.MimeHeaders.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.glassfish.grizzly.websockets.HandShake.split:(Ljava/lang/String;)Ljava/util/List;
            putfield org.glassfish.grizzly.websockets.HandShake.subProtocol:Ljava/util/List;
        12: .line 86
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.serverHostName:Ljava/lang/String;
            ifnonnull 14
        13: .line 87
            new org.glassfish.grizzly.websockets.HandshakeException
            dup
            ldc "Missing required headers for WebSocket negotiation"
            invokespecial org.glassfish.grizzly.websockets.HandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* request */
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket.getRequestURI:()Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
        15: .line 90
            aload 1 /* request */
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket.getQueryString:()Ljava/lang/String;
            astore 3 /* queryString */
        start local 3 // java.lang.String queryString
        16: .line 91
            aload 3 /* queryString */
            ifnull 19
        17: .line 92
            aload 3 /* queryString */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 19
        18: .line 93
            aload 0 /* this */
            dup
            getfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
            new java.lang.StringBuilder
            dup_x1
            swap
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "?"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* queryString */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
        19: .line 102
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.buildLocation:()V
        20: .line 103
            return
        end local 3 // java.lang.String queryString
        end local 2 // org.glassfish.grizzly.http.util.MimeHeaders mimeHeaders
        end local 1 // org.glassfish.grizzly.http.HttpRequestPacket request
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   21     0         this  Lorg/glassfish/grizzly/websockets/HandShake;
            0   21     1      request  Lorg/glassfish/grizzly/http/HttpRequestPacket;
            5   21     2  mimeHeaders  Lorg/glassfish/grizzly/http/util/MimeHeaders;
           16   21     3  queryString  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      request  

  protected abstract int getVersion();
    descriptor: ()I
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  protected final void buildLocation();
    descriptor: ()V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 108
            new java.lang.StringBuilder
            dup
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getScheme:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "://"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.serverHostName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 109
            aload 0 /* this */
            aload 1 /* sb */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.appendPort:(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
            pop
         2: .line 110
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
            ifnull 3
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
            ldc "/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 4
            ldc ""
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 111
      StackMap locals: java.lang.StringBuilder
      StackMap stack:
            aload 1 /* sb */
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 113
      StackMap locals:
      StackMap stack:
            aload 1 /* sb */
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 114
            aload 0 /* this */
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.location:Ljava/lang/String;
         6: .line 115
            return
        end local 1 // java.lang.StringBuilder sb
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/glassfish/grizzly/websockets/HandShake;
            1    7     1    sb  Ljava/lang/StringBuilder;

  public java.lang.String getLocation();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 118
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.location:Ljava/lang/String;
            areturn
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/websockets/HandShake;

  public java.lang.String getOrigin();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 122
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.origin:Ljava/lang/String;
            areturn
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/websockets/HandShake;

  public int getPort();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 126
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            ireturn
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/websockets/HandShake;

  public java.lang.String getResourcePath();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 130
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.resourcePath:Ljava/lang/String;
            areturn
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/websockets/HandShake;

  public boolean isSecure();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 134
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.secure:Z
            ireturn
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/websockets/HandShake;

  public java.lang.String getServerHostName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 138
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.serverHostName:Ljava/lang/String;
            areturn
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/websockets/HandShake;

  public java.util.List<java.lang.String> getSubProtocol();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 142
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.subProtocol:Ljava/util/List;
            areturn
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/websockets/HandShake;
    Signature: ()Ljava/util/List<Ljava/lang/String;>;

  public void setSubProtocol(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.util.List subProtocol
         0: .line 146
            aload 0 /* this */
            aload 1 /* subProtocol */
            putfield org.glassfish.grizzly.websockets.HandShake.subProtocol:Ljava/util/List;
         1: .line 147
            return
        end local 1 // java.util.List subProtocol
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    2     1  subProtocol  Ljava/util/List<Ljava/lang/String;>;
    Signature: (Ljava/util/List<Ljava/lang/String;>;)V
    MethodParameters:
             Name  Flags
      subProtocol  

  private void sanitize(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.util.List strings
         0: .line 150
            aload 1 /* strings */
            ifnull 8
         1: .line 151
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 7
         3: .line 152
      StackMap locals: int
      StackMap stack:
            aload 1 /* strings */
            iload 2 /* i */
            aload 1 /* strings */
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            ifnonnull 4
            aconst_null
            goto 5
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List int
      StackMap stack: java.util.List int
         4: aload 1 /* strings */
            iload 2 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List int
      StackMap stack: java.util.List int java.lang.String
         5: invokeinterface java.util.List.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 151
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 2 /* i */
            aload 1 /* strings */
            invokeinterface java.util.List.size:()I
            if_icmplt 3
        end local 2 // int i
         8: .line 155
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.List strings
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    9     1  strings  Ljava/util/List<Ljava/lang/String;>;
            2    8     2        i  I
    Signature: (Ljava/util/List<Ljava/lang/String;>;)V
    MethodParameters:
         Name  Flags
      strings  

  public java.util.List<org.glassfish.grizzly.websockets.Extension> getExtensions();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 158
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.extensions:Ljava/util/List;
            areturn
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/websockets/HandShake;
    Signature: ()Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;

  public void setExtensions(java.util.List<org.glassfish.grizzly.websockets.Extension>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.util.List extensions
         0: .line 162
            aload 0 /* this */
            aload 1 /* extensions */
            putfield org.glassfish.grizzly.websockets.HandShake.extensions:Ljava/util/List;
         1: .line 163
            return
        end local 1 // java.util.List extensions
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    2     1  extensions  Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;
    Signature: (Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;)V
    MethodParameters:
            Name  Flags
      extensions  

  protected final java.lang.String joinExtensions(java.util.List<org.glassfish.grizzly.websockets.Extension>);
    descriptor: (Ljava/util/List;)Ljava/lang/String;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.util.List extensions
         0: .line 166
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         1: .line 167
            aload 1 /* extensions */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.glassfish.grizzly.websockets.Extension
            astore 3 /* e */
        start local 3 // org.glassfish.grizzly.websockets.Extension e
         3: .line 168
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.length:()I
            ifeq 5
         4: .line 169
            aload 2 /* sb */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 171
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List java.lang.StringBuilder org.glassfish.grizzly.websockets.Extension java.util.Iterator
      StackMap stack:
            aload 2 /* sb */
            aload 3 /* e */
            invokevirtual org.glassfish.grizzly.websockets.Extension.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 3 // org.glassfish.grizzly.websockets.Extension e
         6: .line 167
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 173
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder sb
        end local 1 // java.util.List extensions
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    8     0        this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    8     1  extensions  Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;
            1    8     2          sb  Ljava/lang/StringBuilder;
            3    6     3           e  Lorg/glassfish/grizzly/websockets/Extension;
    Signature: (Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;)Ljava/lang/String;
    MethodParameters:
            Name  Flags
      extensions  

  protected java.lang.String join(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.util.List values
         0: .line 177
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 2 /* builder */
        start local 2 // java.lang.StringBuilder builder
         1: .line 178
            aload 1 /* values */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* s */
        start local 3 // java.lang.String s
         3: .line 179
            aload 2 /* builder */
            invokevirtual java.lang.StringBuilder.length:()I
            ifeq 5
         4: .line 180
            aload 2 /* builder */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 182
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List java.lang.StringBuilder java.lang.String java.util.Iterator
      StackMap stack:
            aload 2 /* builder */
            aload 3 /* s */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 3 // java.lang.String s
         6: .line 178
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 184
            aload 2 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder builder
        end local 1 // java.util.List values
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    8     1   values  Ljava/util/List<Ljava/lang/String;>;
            1    8     2  builder  Ljava/lang/StringBuilder;
            3    6     3        s  Ljava/lang/String;
    Signature: (Ljava/util/List<Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
        Name  Flags
      values  

  private void checkForHeader(org.glassfish.grizzly.http.HttpHeader, java.lang.String, java.lang.String);
    descriptor: (Lorg/glassfish/grizzly/http/HttpHeader;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // org.glassfish.grizzly.http.HttpHeader headers
        start local 2 // java.lang.String header
        start local 3 // java.lang.String validValue
         0: .line 188
            aload 0 /* this */
            aload 2 /* header */
            aload 3 /* validValue */
            aload 1 /* headers */
            aload 2 /* header */
            invokevirtual org.glassfish.grizzly.http.HttpHeader.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual org.glassfish.grizzly.websockets.HandShake.validate:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
         1: .line 189
            return
        end local 3 // java.lang.String validValue
        end local 2 // java.lang.String header
        end local 1 // org.glassfish.grizzly.http.HttpHeader headers
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    2     1     headers  Lorg/glassfish/grizzly/http/HttpHeader;
            0    2     2      header  Ljava/lang/String;
            0    2     3  validValue  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      headers     
      header      
      validValue  

  private void checkForSubProtocol(org.glassfish.grizzly.http.HttpResponsePacket);
    descriptor: (Lorg/glassfish/grizzly/http/HttpResponsePacket;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=11, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // org.glassfish.grizzly.http.HttpResponsePacket headers
         0: .line 192
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getSubProtocol:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 23
         1: .line 193
            aload 1 /* headers */
            ldc "Sec-WebSocket-Protocol"
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.getHeader:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* value */
        start local 2 // java.lang.String value
         2: .line 194
            iconst_0
            istore 3 /* found */
        start local 3 // boolean found
         3: .line 195
            aload 2 /* value */
            ifnull 21
         4: .line 196
            new java.util.TreeSet
            dup
            getstatic java.lang.String.CASE_INSENSITIVE_ORDER:Ljava/util/Comparator;
            invokespecial java.util.TreeSet.<init>:(Ljava/util/Comparator;)V
            astore 4 /* validValues */
        start local 4 // java.util.Set validValues
         5: .line 197
            new java.util.ArrayList
            dup
            aload 4 /* validValues */
            invokeinterface java.util.Set.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* acceptedSubProtocol */
        start local 5 // java.util.List acceptedSubProtocol
         6: .line 199
            aload 4 /* validValues */
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getSubProtocol:()Ljava/util/List;
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
         7: .line 201
            aload 2 /* value */
            ldc ","
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 16
         8: .line 202
            aload 2 /* value */
            ldc ","
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 14
      StackMap locals: org.glassfish.grizzly.websockets.HandShake org.glassfish.grizzly.http.HttpResponsePacket java.lang.String int java.util.Set java.util.List top int int java.lang.String[]
      StackMap stack:
         9: aload 9
            iload 7
            aaload
            astore 6 /* part */
        start local 6 // java.lang.String part
        10: .line 203
            aload 6 /* part */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 10 /* protocol */
        start local 10 // java.lang.String protocol
        11: .line 204
            aload 4 /* validValues */
            aload 10 /* protocol */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 13
        12: .line 205
            aload 5 /* acceptedSubProtocol */
            aload 10 /* protocol */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // java.lang.String protocol
        end local 6 // java.lang.String part
        13: .line 202
      StackMap locals:
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        14: iload 7
            iload 8
            if_icmplt 9
        15: .line 208
            goto 18
      StackMap locals: org.glassfish.grizzly.websockets.HandShake org.glassfish.grizzly.http.HttpResponsePacket java.lang.String int java.util.Set java.util.List
      StackMap stack:
        16: aload 4 /* validValues */
            aload 2 /* value */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 18
        17: .line 209
            aload 5 /* acceptedSubProtocol */
            aload 2 /* value */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        18: .line 212
      StackMap locals:
      StackMap stack:
            aload 5 /* acceptedSubProtocol */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 21
        19: .line 213
            iconst_1
            istore 3 /* found */
        20: .line 214
            aload 0 /* this */
            aload 5 /* acceptedSubProtocol */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.setSubProtocol:(Ljava/util/List;)V
        end local 5 // java.util.List acceptedSubProtocol
        end local 4 // java.util.Set validValues
        21: .line 217
      StackMap locals:
      StackMap stack:
            iload 3 /* found */
            ifne 23
        22: .line 218
            new org.glassfish.grizzly.websockets.HandshakeException
            dup
            ldc "Invalid Sec-WebSocket-Protocol header returned: '%s'"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* value */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.glassfish.grizzly.websockets.HandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // boolean found
        end local 2 // java.lang.String value
        23: .line 221
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.glassfish.grizzly.http.HttpResponsePacket headers
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   24     0                 this  Lorg/glassfish/grizzly/websockets/HandShake;
            0   24     1              headers  Lorg/glassfish/grizzly/http/HttpResponsePacket;
            2   23     2                value  Ljava/lang/String;
            3   23     3                found  Z
            5   21     4          validValues  Ljava/util/Set<Ljava/lang/String;>;
            6   21     5  acceptedSubProtocol  Ljava/util/List<Ljava/lang/String;>;
           10   13     6                 part  Ljava/lang/String;
           11   13    10             protocol  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      headers  final

  private void validate(java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=9, args_size=4
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.lang.String header
        start local 2 // java.lang.String validValue
        start local 3 // java.lang.String value
         0: .line 224
            iconst_0
            istore 4 /* found */
        start local 4 // boolean found
         1: .line 226
            aload 3 /* value */
            ifnull 12
         2: .line 227
            aload 3 /* value */
            ldc ","
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 11
         3: .line 228
            aload 3 /* value */
            ldc ","
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 9
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.lang.String java.lang.String java.lang.String int top int int java.lang.String[]
      StackMap stack:
         4: aload 8
            iload 6
            aaload
            astore 5 /* part */
        start local 5 // java.lang.String part
         5: .line 229
            aload 5 /* part */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            aload 2 /* validValue */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 8
         6: .line 230
            iconst_1
            istore 4 /* found */
         7: .line 231
            goto 12
        end local 5 // java.lang.String part
         8: .line 228
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
         9: iload 6
            iload 7
            if_icmplt 4
        10: .line 234
            goto 12
        11: .line 235
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.lang.String java.lang.String java.lang.String int
      StackMap stack:
            aload 3 /* value */
            aload 2 /* validValue */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            istore 4 /* found */
        12: .line 239
      StackMap locals:
      StackMap stack:
            iload 4 /* found */
            ifne 14
        13: .line 240
            new org.glassfish.grizzly.websockets.HandshakeException
            dup
            ldc "Invalid %s header returned: '%s'"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* header */
            aastore
            dup
            iconst_1
            aload 3 /* value */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.glassfish.grizzly.websockets.HandshakeException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 242
      StackMap locals:
      StackMap stack:
            return
        end local 4 // boolean found
        end local 3 // java.lang.String value
        end local 2 // java.lang.String validValue
        end local 1 // java.lang.String header
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   15     0        this  Lorg/glassfish/grizzly/websockets/HandShake;
            0   15     1      header  Ljava/lang/String;
            0   15     2  validValue  Ljava/lang/String;
            0   15     3       value  Ljava/lang/String;
            1   15     4       found  Z
            5    8     5        part  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      header      final
      validValue  final
      value       final

  private java.lang.String readHeader(org.glassfish.grizzly.http.util.MimeHeaders, java.lang.String);
    descriptor: (Lorg/glassfish/grizzly/http/util/MimeHeaders;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // org.glassfish.grizzly.http.util.MimeHeaders headers
        start local 2 // java.lang.String name
         0: .line 248
            aload 1 /* headers */
            aload 2 /* name */
            invokevirtual org.glassfish.grizzly.http.util.MimeHeaders.getValue:(Ljava/lang/String;)Lorg/glassfish/grizzly/http/util/DataChunk;
            astore 3 /* value */
        start local 3 // org.glassfish.grizzly.http.util.DataChunk value
         1: .line 249
            aload 3 /* value */
            ifnull 2
            aload 3 /* value */
            invokevirtual org.glassfish.grizzly.http.util.DataChunk.isNull:()Z
            ifeq 3
      StackMap locals: org.glassfish.grizzly.http.util.DataChunk
      StackMap stack:
         2: aconst_null
            goto 4
      StackMap locals:
      StackMap stack:
         3: aload 3 /* value */
            invokevirtual org.glassfish.grizzly.http.util.DataChunk.toString:()Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         4: areturn
        end local 3 // org.glassfish.grizzly.http.util.DataChunk value
        end local 2 // java.lang.String name
        end local 1 // org.glassfish.grizzly.http.util.MimeHeaders headers
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    5     1  headers  Lorg/glassfish/grizzly/http/util/MimeHeaders;
            0    5     2     name  Ljava/lang/String;
            1    5     3    value  Lorg/glassfish/grizzly/http/util/DataChunk;
    MethodParameters:
         Name  Flags
      headers  
      name     final

  private void determineHostAndPort(org.glassfish.grizzly.http.util.MimeHeaders);
    descriptor: (Lorg/glassfish/grizzly/http/util/MimeHeaders;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // org.glassfish.grizzly.http.util.MimeHeaders headers
         0: .line 254
            aload 0 /* this */
            aload 1 /* headers */
            ldc "host"
            invokevirtual org.glassfish.grizzly.websockets.HandShake.readHeader:(Lorg/glassfish/grizzly/http/util/MimeHeaders;Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* header */
        start local 2 // java.lang.String header
         1: .line 255
            aload 2 /* header */
            ifnonnull 2
            iconst_m1
            goto 3
      StackMap locals: java.lang.String
      StackMap stack:
         2: aload 2 /* header */
            ldc ":"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
      StackMap locals:
      StackMap stack: int
         3: istore 3 /* i */
        start local 3 // int i
         4: .line 256
            iload 3 /* i */
            iconst_m1
            if_icmpne 8
         5: .line 257
            aload 0 /* this */
            aload 2 /* header */
            putfield org.glassfish.grizzly.websockets.HandShake.serverHostName:Ljava/lang/String;
         6: .line 258
            aload 0 /* this */
            bipush 80
            putfield org.glassfish.grizzly.websockets.HandShake.port:I
         7: .line 259
            goto 11
         8: .line 260
      StackMap locals: int
      StackMap stack:
            getstatic org.glassfish.grizzly.websockets.HandShake.$assertionsDisabled:Z
            ifne 9
            aload 2 /* header */
            ifnonnull 9
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         9: .line 262
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 2 /* header */
            iconst_0
            iload 3 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            putfield org.glassfish.grizzly.websockets.HandShake.serverHostName:Ljava/lang/String;
        10: .line 263
            aload 0 /* this */
            aload 2 /* header */
            iload 3 /* i */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            putfield org.glassfish.grizzly.websockets.HandShake.port:I
        11: .line 265
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int i
        end local 2 // java.lang.String header
        end local 1 // org.glassfish.grizzly.http.util.MimeHeaders headers
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lorg/glassfish/grizzly/websockets/HandShake;
            0   12     1  headers  Lorg/glassfish/grizzly/http/util/MimeHeaders;
            1   12     2   header  Ljava/lang/String;
            4   12     3        i  I
    MethodParameters:
         Name  Flags
      headers  

  public org.glassfish.grizzly.http.HttpContent composeHeaders();
    descriptor: ()Lorg/glassfish/grizzly/http/HttpContent;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 268
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getServerHostName:()Ljava/lang/String;
            astore 1 /* host */
        start local 1 // java.lang.String host
         1: .line 269
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            iconst_m1
            if_icmpeq 3
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            bipush 80
            if_icmpeq 3
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            sipush 443
            if_icmpeq 3
         2: .line 270
            new java.lang.StringBuilder
            dup
            aload 1 /* host */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getPort:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* host */
         3: .line 272
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.builder:Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getResourcePath:()Ljava/lang/String;
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.uri:(Ljava/lang/String;)Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
            getstatic org.glassfish.grizzly.http.util.Header.Host:Lorg/glassfish/grizzly/http/util/Header;
            aload 1 /* host */
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.header:(Lorg/glassfish/grizzly/http/util/Header;Ljava/lang/String;)Lorg/glassfish/grizzly/http/HttpHeader$Builder;
            pop
         4: .line 273
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getSubProtocol:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 7
         5: .line 274
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.builder:Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
            ldc "Sec-WebSocket-Protocol"
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getSubProtocol:()Ljava/util/List;
            invokevirtual org.glassfish.grizzly.websockets.HandShake.join:(Ljava/util/List;)Ljava/lang/String;
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.header:(Ljava/lang/String;Ljava/lang/String;)Lorg/glassfish/grizzly/http/HttpHeader$Builder;
            pop
         6: .line 275
            goto 8
         7: .line 276
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.builder:Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
            ldc "Sec-WebSocket-Extensions"
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.removeHeader:(Ljava/lang/String;)Lorg/glassfish/grizzly/http/HttpHeader$Builder;
            pop
         8: .line 279
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getSubProtocol:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 10
         9: .line 280
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.builder:Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
            ldc "Sec-WebSocket-Protocol"
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getSubProtocol:()Ljava/util/List;
            invokevirtual org.glassfish.grizzly.websockets.HandShake.join:(Ljava/util/List;)Ljava/lang/String;
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.header:(Ljava/lang/String;Ljava/lang/String;)Lorg/glassfish/grizzly/http/HttpHeader$Builder;
            pop
        10: .line 282
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.builder:Lorg/glassfish/grizzly/http/HttpRequestPacket$Builder;
            invokevirtual org.glassfish.grizzly.http.HttpRequestPacket$Builder.build:()Lorg/glassfish/grizzly/http/HttpRequestPacket;
            invokestatic org.glassfish.grizzly.http.HttpContent.builder:(Lorg/glassfish/grizzly/http/HttpHeader;)Lorg/glassfish/grizzly/http/HttpContent$Builder;
            invokevirtual org.glassfish.grizzly.http.HttpContent$Builder.build:()Lorg/glassfish/grizzly/http/HttpContent;
            areturn
        end local 1 // java.lang.String host
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/glassfish/grizzly/websockets/HandShake;
            1   11     1  host  Ljava/lang/String;

  public void validateServerResponse(org.glassfish.grizzly.http.HttpResponsePacket);
    descriptor: (Lorg/glassfish/grizzly/http/HttpResponsePacket;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // org.glassfish.grizzly.http.HttpResponsePacket headers
         0: .line 286
            bipush 101
            aload 1 /* headers */
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.getStatus:()I
            if_icmpeq 4
         1: .line 287
            new org.glassfish.grizzly.websockets.HandshakeException
            dup
         2: .line 288
            ldc "Response code was not %s: %s %s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            bipush 101
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 1 /* headers */
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.getStatus:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 1 /* headers */
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.getReasonPhrase:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         3: .line 287
            invokespecial org.glassfish.grizzly.websockets.HandshakeException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 290
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* headers */
            ldc "upgrade"
            ldc "websocket"
            invokevirtual org.glassfish.grizzly.websockets.HandShake.checkForHeader:(Lorg/glassfish/grizzly/http/HttpHeader;Ljava/lang/String;Ljava/lang/String;)V
         5: .line 291
            aload 0 /* this */
            aload 1 /* headers */
            ldc "connection"
            ldc "upgrade"
            invokevirtual org.glassfish.grizzly.websockets.HandShake.checkForHeader:(Lorg/glassfish/grizzly/http/HttpHeader;Ljava/lang/String;Ljava/lang/String;)V
         6: .line 292
            aload 0 /* this */
            aload 1 /* headers */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.checkForSubProtocol:(Lorg/glassfish/grizzly/http/HttpResponsePacket;)V
         7: .line 293
            return
        end local 1 // org.glassfish.grizzly.http.HttpResponsePacket headers
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    8     1  headers  Lorg/glassfish/grizzly/http/HttpResponsePacket;
    MethodParameters:
         Name  Flags
      headers  

  public void respond(org.glassfish.grizzly.filterchain.FilterChainContext, org.glassfish.grizzly.websockets.WebSocketApplication, org.glassfish.grizzly.http.HttpResponsePacket);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;Lorg/glassfish/grizzly/websockets/WebSocketApplication;Lorg/glassfish/grizzly/http/HttpResponsePacket;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        start local 2 // org.glassfish.grizzly.websockets.WebSocketApplication application
        start local 3 // org.glassfish.grizzly.http.HttpResponsePacket response
         0: .line 297
            aload 3 /* response */
            getstatic org.glassfish.grizzly.http.Protocol.HTTP_1_1:Lorg/glassfish/grizzly/http/Protocol;
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.setProtocol:(Lorg/glassfish/grizzly/http/Protocol;)V
         1: .line 298
            aload 3 /* response */
            getstatic org.glassfish.grizzly.http.util.HttpStatus.SWITCHING_PROTOCOLS_101:Lorg/glassfish/grizzly/http/util/HttpStatus;
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.setStatus:(Lorg/glassfish/grizzly/http/util/HttpStatus;)V
         2: .line 299
            aload 3 /* response */
            ldc "Upgrade"
            ldc "websocket"
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
         3: .line 300
            aload 3 /* response */
            ldc "Connection"
            ldc "Upgrade"
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
         4: .line 301
            aload 0 /* this */
            aload 3 /* response */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.setHeaders:(Lorg/glassfish/grizzly/http/HttpResponsePacket;)V
         5: .line 302
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getSubProtocol:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 7
         6: .line 303
            aload 3 /* response */
            ldc "Sec-WebSocket-Protocol"
            aload 0 /* this */
            aload 2 /* application */
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getSubProtocol:()Ljava/util/List;
            invokevirtual org.glassfish.grizzly.websockets.WebSocketApplication.getSupportedProtocols:(Ljava/util/List;)Ljava/util/List;
            invokevirtual org.glassfish.grizzly.websockets.HandShake.join:(Ljava/util/List;)Ljava/lang/String;
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
         7: .line 305
      StackMap locals:
      StackMap stack:
            aload 2 /* application */
            invokevirtual org.glassfish.grizzly.websockets.WebSocketApplication.getSupportedExtensions:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 12
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getExtensions:()Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 12
         8: .line 306
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.getExtensions:()Ljava/util/List;
            aload 2 /* application */
            invokevirtual org.glassfish.grizzly.websockets.WebSocketApplication.getSupportedExtensions:()Ljava/util/List;
            invokevirtual org.glassfish.grizzly.websockets.HandShake.intersection:(Ljava/util/List;Ljava/util/List;)Ljava/util/List;
            astore 4 /* intersection */
        start local 4 // java.util.List intersection
         9: .line 307
            aload 4 /* intersection */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 12
        10: .line 308
            aload 2 /* application */
            aload 4 /* intersection */
            invokevirtual org.glassfish.grizzly.websockets.WebSocketApplication.onExtensionNegotiation:(Ljava/util/List;)V
        11: .line 309
            aload 3 /* response */
            ldc "Sec-WebSocket-Extensions"
            aload 0 /* this */
            aload 4 /* intersection */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.joinExtensions:(Ljava/util/List;)Ljava/lang/String;
            invokevirtual org.glassfish.grizzly.http.HttpResponsePacket.setHeader:(Ljava/lang/String;Ljava/lang/String;)V
        end local 4 // java.util.List intersection
        12: .line 313
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            aload 3 /* response */
            invokestatic org.glassfish.grizzly.http.HttpContent.builder:(Lorg/glassfish/grizzly/http/HttpHeader;)Lorg/glassfish/grizzly/http/HttpContent$Builder;
            invokevirtual org.glassfish.grizzly.http.HttpContent$Builder.build:()Lorg/glassfish/grizzly/http/HttpContent;
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.write:(Ljava/lang/Object;)V
        13: .line 314
            return
        end local 3 // org.glassfish.grizzly.http.HttpResponsePacket response
        end local 2 // org.glassfish.grizzly.websockets.WebSocketApplication application
        end local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   14     0          this  Lorg/glassfish/grizzly/websockets/HandShake;
            0   14     1           ctx  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            0   14     2   application  Lorg/glassfish/grizzly/websockets/WebSocketApplication;
            0   14     3      response  Lorg/glassfish/grizzly/http/HttpResponsePacket;
            9   12     4  intersection  Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;
    MethodParameters:
             Name  Flags
      ctx          final
      application  final
      response     final

  protected abstract void setHeaders(org.glassfish.grizzly.http.HttpResponsePacket);
    descriptor: (Lorg/glassfish/grizzly/http/HttpResponsePacket;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
          Name  Flags
      response  

  protected final java.util.List<java.lang.String> split(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.lang.String header
         0: .line 319
            aload 1 /* header */
            ifnonnull 2
         1: .line 320
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
         2: .line 322
      StackMap locals:
      StackMap stack:
            aload 1 /* header */
            ldc ","
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            astore 2 /* list */
        start local 2 // java.util.List list
         3: .line 323
            aload 0 /* this */
            aload 2 /* list */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.sanitize:(Ljava/util/List;)V
         4: .line 324
            aload 2 /* list */
            areturn
        end local 2 // java.util.List list
        end local 1 // java.lang.String header
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    5     1  header  Ljava/lang/String;
            3    5     2    list  Ljava/util/List<Ljava/lang/String;>;
    Signature: (Ljava/lang/String;)Ljava/util/List<Ljava/lang/String;>;
    MethodParameters:
        Name  Flags
      header  final

  protected java.util.List<org.glassfish.grizzly.websockets.Extension> intersection(java.util.List<org.glassfish.grizzly.websockets.Extension>, java.util.List<org.glassfish.grizzly.websockets.Extension>);
    descriptor: (Ljava/util/List;Ljava/util/List;)Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.util.List requested
        start local 2 // java.util.List supported
         0: .line 329
            new java.util.ArrayList
            dup
            aload 2 /* supported */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 3 /* intersection */
        start local 3 // java.util.List intersection
         1: .line 330
            aload 1 /* requested */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 9
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List java.util.List java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.glassfish.grizzly.websockets.Extension
            astore 4 /* e */
        start local 4 // org.glassfish.grizzly.websockets.Extension e
         3: .line 331
            aload 2 /* supported */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 8
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List java.util.List java.util.List org.glassfish.grizzly.websockets.Extension java.util.Iterator top java.util.Iterator
      StackMap stack:
         4: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.glassfish.grizzly.websockets.Extension
            astore 6 /* s */
        start local 6 // org.glassfish.grizzly.websockets.Extension s
         5: .line 332
            aload 4 /* e */
            invokevirtual org.glassfish.grizzly.websockets.Extension.getName:()Ljava/lang/String;
            aload 6 /* s */
            invokevirtual org.glassfish.grizzly.websockets.Extension.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 8
         6: .line 333
            aload 3 /* intersection */
            aload 4 /* e */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 334
            goto 9
        end local 6 // org.glassfish.grizzly.websockets.Extension s
         8: .line 331
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 4 // org.glassfish.grizzly.websockets.Extension e
         9: .line 330
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.util.List java.util.List java.util.List top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        10: .line 338
            aload 3 /* intersection */
            areturn
        end local 3 // java.util.List intersection
        end local 2 // java.util.List supported
        end local 1 // java.util.List requested
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0          this  Lorg/glassfish/grizzly/websockets/HandShake;
            0   11     1     requested  Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;
            0   11     2     supported  Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;
            1   11     3  intersection  Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;
            3    9     4             e  Lorg/glassfish/grizzly/websockets/Extension;
            5    8     6             s  Lorg/glassfish/grizzly/websockets/Extension;
    Signature: (Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;)Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;
    MethodParameters:
           Name  Flags
      requested  
      supported  

  protected final java.util.List<org.glassfish.grizzly.websockets.Extension> parseExtensionsHeader(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/List;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=11, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.lang.String headerValue
         0: .line 342
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* resolved */
        start local 2 // java.util.List resolved
         1: .line 343
            aload 1 /* headerValue */
            ldc ","
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* parts */
        start local 3 // java.lang.String[] parts
         2: .line 344
            aload 3 /* parts */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 13
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.lang.String java.util.List java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* part */
        start local 4 // java.lang.String part
         4: .line 345
            aload 4 /* part */
            bipush 59
            invokevirtual java.lang.String.indexOf:(I)I
            istore 8 /* idx */
        start local 8 // int idx
         5: .line 346
            iload 8 /* idx */
            ifge 8
         6: .line 347
            aload 2 /* resolved */
            new org.glassfish.grizzly.websockets.Extension
            dup
            aload 4 /* part */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokespecial org.glassfish.grizzly.websockets.Extension.<init>:(Ljava/lang/String;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         7: .line 348
            goto 12
         8: .line 349
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.lang.String java.util.List java.lang.String[] java.lang.String int int java.lang.String[] int
      StackMap stack:
            aload 4 /* part */
            iconst_0
            iload 8 /* idx */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 9 /* name */
        start local 9 // java.lang.String name
         9: .line 350
            new org.glassfish.grizzly.websockets.Extension
            dup
            aload 9 /* name */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokespecial org.glassfish.grizzly.websockets.Extension.<init>:(Ljava/lang/String;)V
            astore 10 /* e */
        start local 10 // org.glassfish.grizzly.websockets.Extension e
        10: .line 351
            aload 2 /* resolved */
            aload 10 /* e */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        11: .line 352
            aload 0 /* this */
            aload 4 /* part */
            iload 8 /* idx */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            aload 10 /* e */
            invokevirtual org.glassfish.grizzly.websockets.Extension.getParameters:()Ljava/util/List;
            invokevirtual org.glassfish.grizzly.websockets.HandShake.parseParameters:(Ljava/lang/String;Ljava/util/List;)V
        end local 10 // org.glassfish.grizzly.websockets.Extension e
        end local 9 // java.lang.String name
        end local 8 // int idx
        end local 4 // java.lang.String part
        12: .line 344
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.lang.String java.util.List java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
        13: iload 5
            iload 6
            if_icmplt 3
        14: .line 355
            aload 2 /* resolved */
            areturn
        end local 3 // java.lang.String[] parts
        end local 2 // java.util.List resolved
        end local 1 // java.lang.String headerValue
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   15     0         this  Lorg/glassfish/grizzly/websockets/HandShake;
            0   15     1  headerValue  Ljava/lang/String;
            1   15     2     resolved  Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;
            2   15     3        parts  [Ljava/lang/String;
            4   12     4         part  Ljava/lang/String;
            5   12     8          idx  I
            9   12     9         name  Ljava/lang/String;
           10   12    10            e  Lorg/glassfish/grizzly/websockets/Extension;
    Signature: (Ljava/lang/String;)Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension;>;
    MethodParameters:
             Name  Flags
      headerValue  final

  protected final void parseParameters(java.lang.String, java.util.List<org.glassfish.grizzly.websockets.Extension$Parameter>);
    descriptor: (Ljava/lang/String;Ljava/util/List;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=7, locals=9, args_size=3
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.lang.String parameterString
        start local 2 // java.util.List parameters
         0: .line 359
            aload 1 /* parameterString */
            ldc ";"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* parts */
        start local 3 // java.lang.String[] parts
         1: .line 360
            aload 3 /* parts */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 9
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.lang.String java.util.List java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         2: aload 7
            iload 5
            aaload
            astore 4 /* part */
        start local 4 // java.lang.String part
         3: .line 361
            aload 4 /* part */
            bipush 61
            invokevirtual java.lang.String.indexOf:(I)I
            istore 8 /* idx */
        start local 8 // int idx
         4: .line 362
            iload 8 /* idx */
            ifge 7
         5: .line 363
            aload 2 /* parameters */
            new org.glassfish.grizzly.websockets.Extension$Parameter
            dup
            aload 4 /* part */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            aconst_null
            invokespecial org.glassfish.grizzly.websockets.Extension$Parameter.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         6: .line 364
            goto 8
         7: .line 365
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.lang.String java.util.List java.lang.String[] java.lang.String int int java.lang.String[] int
      StackMap stack:
            aload 2 /* parameters */
            new org.glassfish.grizzly.websockets.Extension$Parameter
            dup
            aload 4 /* part */
            iconst_0
            iload 8 /* idx */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            aload 4 /* part */
            iload 8 /* idx */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokespecial org.glassfish.grizzly.websockets.Extension$Parameter.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // int idx
        end local 4 // java.lang.String part
         8: .line 360
      StackMap locals: org.glassfish.grizzly.websockets.HandShake java.lang.String java.util.List java.lang.String[] top int int java.lang.String[]
      StackMap stack:
            iinc 5 1
      StackMap locals:
      StackMap stack:
         9: iload 5
            iload 6
            if_icmplt 2
        10: .line 368
            return
        end local 3 // java.lang.String[] parts
        end local 2 // java.util.List parameters
        end local 1 // java.lang.String parameterString
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Lorg/glassfish/grizzly/websockets/HandShake;
            0   11     1  parameterString  Ljava/lang/String;
            0   11     2       parameters  Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension$Parameter;>;
            1   11     3            parts  [Ljava/lang/String;
            3    8     4             part  Ljava/lang/String;
            4    8     8              idx  I
    Signature: (Ljava/lang/String;Ljava/util/List<Lorg/glassfish/grizzly/websockets/Extension$Parameter;>;)V
    MethodParameters:
                 Name  Flags
      parameterString  
      parameters       

  public void initiate(org.glassfish.grizzly.filterchain.FilterChainContext);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
         0: .line 371
            aload 1 /* ctx */
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.composeHeaders:()Lorg/glassfish/grizzly/http/HttpContent;
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.write:(Ljava/lang/Object;)V
         1: .line 372
            return
        end local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    2     1   ctx  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      ctx   

  private java.lang.StringBuilder appendPort(java.lang.StringBuilder);
    descriptor: (Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
        start local 1 // java.lang.StringBuilder builder
         0: .line 375
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.isSecure:()Z
            ifeq 4
         1: .line 376
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            sipush 443
            if_icmpeq 6
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            iconst_m1
            if_icmpeq 6
         2: .line 377
            aload 1 /* builder */
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            pop
         3: .line 379
            goto 6
         4: .line 380
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            bipush 80
            if_icmpeq 6
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            iconst_m1
            if_icmpeq 6
         5: .line 381
            aload 1 /* builder */
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.glassfish.grizzly.websockets.HandShake.port:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            pop
         6: .line 384
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            areturn
        end local 1 // java.lang.StringBuilder builder
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/glassfish/grizzly/websockets/HandShake;
            0    7     1  builder  Ljava/lang/StringBuilder;
    MethodParameters:
         Name  Flags
      builder  

  private java.lang.String getScheme();
    descriptor: ()Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.websockets.HandShake this
         0: .line 388
            aload 0 /* this */
            invokevirtual org.glassfish.grizzly.websockets.HandShake.isSecure:()Z
            ifeq 1
            ldc "ws"
            goto 2
      StackMap locals:
      StackMap stack:
         1: ldc "wss"
      StackMap locals:
      StackMap stack: java.lang.String
         2: areturn
        end local 0 // org.glassfish.grizzly.websockets.HandShake this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/glassfish/grizzly/websockets/HandShake;
}
SourceFile: "HandShake.java"
InnerClasses:
  public Builder = org.glassfish.grizzly.http.HttpContent$Builder of org.glassfish.grizzly.http.HttpContent
  public abstract Builder = org.glassfish.grizzly.http.HttpHeader$Builder of org.glassfish.grizzly.http.HttpHeader
  public Builder = org.glassfish.grizzly.http.HttpRequestPacket$Builder of org.glassfish.grizzly.http.HttpRequestPacket
  public final Parameter = org.glassfish.grizzly.websockets.Extension$Parameter of org.glassfish.grizzly.websockets.Extension