public class org.glassfish.grizzly.portunif.BackChannelFilter extends org.glassfish.grizzly.filterchain.BaseFilter
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.grizzly.portunif.BackChannelFilter
  super_class: org.glassfish.grizzly.filterchain.BaseFilter
{
  private final org.glassfish.grizzly.portunif.PUFilter puFilter;
    descriptor: Lorg/glassfish/grizzly/portunif/PUFilter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  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 35
            ldc Lorg/glassfish/grizzly/portunif/BackChannelFilter;
            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.portunif.BackChannelFilter.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.glassfish.grizzly.portunif.PUFilter);
    descriptor: (Lorg/glassfish/grizzly/portunif/PUFilter;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
        start local 1 // org.glassfish.grizzly.portunif.PUFilter puFilter
         0: .line 38
            aload 0 /* this */
            invokespecial org.glassfish.grizzly.filterchain.BaseFilter.<init>:()V
         1: .line 39
            aload 0 /* this */
            aload 1 /* puFilter */
            putfield org.glassfish.grizzly.portunif.BackChannelFilter.puFilter:Lorg/glassfish/grizzly/portunif/PUFilter;
         2: .line 40
            return
        end local 1 // org.glassfish.grizzly.portunif.PUFilter puFilter
        end local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/glassfish/grizzly/portunif/BackChannelFilter;
            0    3     1  puFilter  Lorg/glassfish/grizzly/portunif/PUFilter;
    MethodParameters:
          Name  Flags
      puFilter  final

  public org.glassfish.grizzly.filterchain.NextAction handleRead(org.glassfish.grizzly.filterchain.FilterChainContext);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;)Lorg/glassfish/grizzly/filterchain/NextAction;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
        start local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
         0: .line 46
            aload 0 /* this */
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.portunif.BackChannelFilter.isFilterChainRead:(Lorg/glassfish/grizzly/filterchain/FilterChainContext;)Z
            ifne 2
         1: .line 47
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getInvokeAction:()Lorg/glassfish/grizzly/filterchain/NextAction;
            areturn
         2: .line 52
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.grizzly.portunif.BackChannelFilter.puFilter:Lorg/glassfish/grizzly/portunif/PUFilter;
            getfield org.glassfish.grizzly.portunif.PUFilter.suspendedContextAttribute:Lorg/glassfish/grizzly/attributes/Attribute;
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.attributes.Attribute.get:(Lorg/glassfish/grizzly/attributes/AttributeStorage;)Ljava/lang/Object;
            checkcast org.glassfish.grizzly.filterchain.FilterChainContext
         3: .line 51
            astore 2 /* suspendedParentContext */
        start local 2 // org.glassfish.grizzly.filterchain.FilterChainContext suspendedParentContext
         4: .line 54
            getstatic org.glassfish.grizzly.portunif.BackChannelFilter.$assertionsDisabled:Z
            ifne 5
            aload 2 /* suspendedParentContext */
            ifnonnull 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 56
      StackMap locals: org.glassfish.grizzly.filterchain.FilterChainContext
      StackMap stack:
            aload 2 /* suspendedParentContext */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.read:()Lorg/glassfish/grizzly/ReadResult;
            astore 3 /* readResult */
        start local 3 // org.glassfish.grizzly.ReadResult readResult
         6: .line 58
            aload 1 /* ctx */
            aload 3 /* readResult */
            invokevirtual org.glassfish.grizzly.ReadResult.getMessage:()Ljava/lang/Object;
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.setMessage:(Ljava/lang/Object;)V
         7: .line 59
            aload 1 /* ctx */
            aload 3 /* readResult */
            invokevirtual org.glassfish.grizzly.ReadResult.getSrcAddressHolder:()Lorg/glassfish/grizzly/utils/Holder;
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.setAddressHolder:(Lorg/glassfish/grizzly/utils/Holder;)V
         8: .line 61
            aload 3 /* readResult */
            invokevirtual org.glassfish.grizzly.ReadResult.recycle:()V
         9: .line 63
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getInvokeAction:()Lorg/glassfish/grizzly/filterchain/NextAction;
            areturn
        end local 3 // org.glassfish.grizzly.ReadResult readResult
        end local 2 // org.glassfish.grizzly.filterchain.FilterChainContext suspendedParentContext
        end local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        end local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   10     0                    this  Lorg/glassfish/grizzly/portunif/BackChannelFilter;
            0   10     1                     ctx  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            4   10     2  suspendedParentContext  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            6   10     3              readResult  Lorg/glassfish/grizzly/ReadResult;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      ctx   final

  private boolean isFilterChainRead(org.glassfish.grizzly.filterchain.FilterChainContext);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
        start local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
         0: .line 73
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getMessage:()Ljava/lang/Object;
            ifnonnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        end local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/grizzly/portunif/BackChannelFilter;
            0    2     1   ctx  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
    MethodParameters:
      Name  Flags
      ctx   final

  public org.glassfish.grizzly.filterchain.NextAction handleWrite(org.glassfish.grizzly.filterchain.FilterChainContext);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;)Lorg/glassfish/grizzly/filterchain/NextAction;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=4, args_size=2
        start local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
        start local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
         0: .line 81
            aload 0 /* this */
            getfield org.glassfish.grizzly.portunif.BackChannelFilter.puFilter:Lorg/glassfish/grizzly/portunif/PUFilter;
            getfield org.glassfish.grizzly.portunif.PUFilter.suspendedContextAttribute:Lorg/glassfish/grizzly/attributes/Attribute;
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.attributes.Attribute.get:(Lorg/glassfish/grizzly/attributes/AttributeStorage;)Ljava/lang/Object;
            checkcast org.glassfish.grizzly.filterchain.FilterChainContext
         1: .line 80
            astore 2 /* suspendedParentContext */
        start local 2 // org.glassfish.grizzly.filterchain.FilterChainContext suspendedParentContext
         2: .line 83
            getstatic org.glassfish.grizzly.portunif.BackChannelFilter.$assertionsDisabled:Z
            ifne 3
            aload 2 /* suspendedParentContext */
            ifnonnull 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 85
      StackMap locals: org.glassfish.grizzly.filterchain.FilterChainContext
      StackMap stack:
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getTransportContext:()Lorg/glassfish/grizzly/filterchain/FilterChainContext$TransportContext;
            astore 3 /* transportContext */
        start local 3 // org.glassfish.grizzly.filterchain.FilterChainContext$TransportContext transportContext
         4: .line 87
            aload 2 /* suspendedParentContext */
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getAddress:()Ljava/lang/Object;
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getMessage:()Ljava/lang/Object;
         5: .line 88
            aload 3 /* transportContext */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext$TransportContext.getCompletionHandler:()Lorg/glassfish/grizzly/CompletionHandler;
         6: .line 89
            aload 3 /* transportContext */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext$TransportContext.getPushBackHandler:()Lorg/glassfish/grizzly/asyncqueue/PushBackHandler;
         7: .line 90
            aload 3 /* transportContext */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext$TransportContext.getMessageCloner:()Lorg/glassfish/grizzly/asyncqueue/MessageCloner;
         8: .line 91
            aload 3 /* transportContext */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext$TransportContext.isBlocking:()Z
         9: .line 87
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.write:(Ljava/lang/Object;Ljava/lang/Object;Lorg/glassfish/grizzly/CompletionHandler;Lorg/glassfish/grizzly/asyncqueue/PushBackHandler;Lorg/glassfish/grizzly/asyncqueue/MessageCloner;Z)V
        10: .line 93
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getStopAction:()Lorg/glassfish/grizzly/filterchain/NextAction;
            areturn
        end local 3 // org.glassfish.grizzly.filterchain.FilterChainContext$TransportContext transportContext
        end local 2 // org.glassfish.grizzly.filterchain.FilterChainContext suspendedParentContext
        end local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        end local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   11     0                    this  Lorg/glassfish/grizzly/portunif/BackChannelFilter;
            0   11     1                     ctx  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            2   11     2  suspendedParentContext  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            4   11     3        transportContext  Lorg/glassfish/grizzly/filterchain/FilterChainContext$TransportContext;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      ctx   final

  public org.glassfish.grizzly.filterchain.NextAction handleEvent(org.glassfish.grizzly.filterchain.FilterChainContext, org.glassfish.grizzly.filterchain.FilterChainEvent);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;Lorg/glassfish/grizzly/filterchain/FilterChainEvent;)Lorg/glassfish/grizzly/filterchain/NextAction;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
        start local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        start local 2 // org.glassfish.grizzly.filterchain.FilterChainEvent event
         0: .line 101
            aload 1 /* ctx */
            invokestatic org.glassfish.grizzly.portunif.BackChannelFilter.isDownstream:(Lorg/glassfish/grizzly/filterchain/FilterChainContext;)Z
            ifeq 5
         1: .line 103
            aload 0 /* this */
            getfield org.glassfish.grizzly.portunif.BackChannelFilter.puFilter:Lorg/glassfish/grizzly/portunif/PUFilter;
            getfield org.glassfish.grizzly.portunif.PUFilter.suspendedContextAttribute:Lorg/glassfish/grizzly/attributes/Attribute;
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.attributes.Attribute.get:(Lorg/glassfish/grizzly/attributes/AttributeStorage;)Ljava/lang/Object;
            checkcast org.glassfish.grizzly.filterchain.FilterChainContext
         2: .line 102
            astore 3 /* suspendedParentContext */
        start local 3 // org.glassfish.grizzly.filterchain.FilterChainContext suspendedParentContext
         3: .line 105
            getstatic org.glassfish.grizzly.portunif.BackChannelFilter.$assertionsDisabled:Z
            ifne 4
            aload 3 /* suspendedParentContext */
            ifnonnull 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 107
      StackMap locals: org.glassfish.grizzly.filterchain.FilterChainContext
      StackMap stack:
            aload 3 /* suspendedParentContext */
            aload 2 /* event */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.notifyDownstream:(Lorg/glassfish/grizzly/filterchain/FilterChainEvent;)V
        end local 3 // org.glassfish.grizzly.filterchain.FilterChainContext suspendedParentContext
         5: .line 110
      StackMap locals:
      StackMap stack:
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getInvokeAction:()Lorg/glassfish/grizzly/filterchain/NextAction;
            areturn
        end local 2 // org.glassfish.grizzly.filterchain.FilterChainEvent event
        end local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        end local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    6     0                    this  Lorg/glassfish/grizzly/portunif/BackChannelFilter;
            0    6     1                     ctx  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            0    6     2                   event  Lorg/glassfish/grizzly/filterchain/FilterChainEvent;
            3    5     3  suspendedParentContext  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      ctx    final
      event  final

  public void exceptionOccurred(org.glassfish.grizzly.filterchain.FilterChainContext, java.lang.Throwable);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;Ljava/lang/Throwable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
        start local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        start local 2 // java.lang.Throwable error
         0: .line 118
            aload 1 /* ctx */
            invokestatic org.glassfish.grizzly.portunif.BackChannelFilter.isDownstream:(Lorg/glassfish/grizzly/filterchain/FilterChainContext;)Z
            ifeq 5
         1: .line 120
            aload 0 /* this */
            getfield org.glassfish.grizzly.portunif.BackChannelFilter.puFilter:Lorg/glassfish/grizzly/portunif/PUFilter;
            getfield org.glassfish.grizzly.portunif.PUFilter.suspendedContextAttribute:Lorg/glassfish/grizzly/attributes/Attribute;
            aload 1 /* ctx */
            invokevirtual org.glassfish.grizzly.attributes.Attribute.get:(Lorg/glassfish/grizzly/attributes/AttributeStorage;)Ljava/lang/Object;
            checkcast org.glassfish.grizzly.filterchain.FilterChainContext
         2: .line 119
            astore 3 /* suspendedParentContext */
        start local 3 // org.glassfish.grizzly.filterchain.FilterChainContext suspendedParentContext
         3: .line 122
            getstatic org.glassfish.grizzly.portunif.BackChannelFilter.$assertionsDisabled:Z
            ifne 4
            aload 3 /* suspendedParentContext */
            ifnonnull 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 124
      StackMap locals: org.glassfish.grizzly.filterchain.FilterChainContext
      StackMap stack:
            aload 3 /* suspendedParentContext */
            aload 2 /* error */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.fail:(Ljava/lang/Throwable;)V
        end local 3 // org.glassfish.grizzly.filterchain.FilterChainContext suspendedParentContext
         5: .line 126
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Throwable error
        end local 1 // org.glassfish.grizzly.filterchain.FilterChainContext ctx
        end local 0 // org.glassfish.grizzly.portunif.BackChannelFilter this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    6     0                    this  Lorg/glassfish/grizzly/portunif/BackChannelFilter;
            0    6     1                     ctx  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
            0    6     2                   error  Ljava/lang/Throwable;
            3    5     3  suspendedParentContext  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
    MethodParameters:
       Name  Flags
      ctx    final
      error  final

  private static boolean isDownstream(org.glassfish.grizzly.filterchain.FilterChainContext);
    descriptor: (Lorg/glassfish/grizzly/filterchain/FilterChainContext;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.filterchain.FilterChainContext context
         0: .line 129
            aload 0 /* context */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getStartIdx:()I
            aload 0 /* context */
            invokevirtual org.glassfish.grizzly.filterchain.FilterChainContext.getEndIdx:()I
            if_icmple 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.glassfish.grizzly.filterchain.FilterChainContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Lorg/glassfish/grizzly/filterchain/FilterChainContext;
    MethodParameters:
         Name  Flags
      context  final
}
SourceFile: "BackChannelFilter.java"
InnerClasses:
  public final TransportContext = org.glassfish.grizzly.filterchain.FilterChainContext$TransportContext of org.glassfish.grizzly.filterchain.FilterChainContext