public abstract class org.xnio.StreamConnection extends org.xnio.Connection implements org.xnio.channels.CloseListenerSettable<org.xnio.StreamConnection>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.xnio.StreamConnection
  super_class: org.xnio.Connection
{
  private org.xnio.conduits.ConduitStreamSourceChannel sourceChannel;
    descriptor: Lorg/xnio/conduits/ConduitStreamSourceChannel;
    flags: (0x0002) ACC_PRIVATE

  private org.xnio.conduits.ConduitStreamSinkChannel sinkChannel;
    descriptor: Lorg/xnio/conduits/ConduitStreamSinkChannel;
    flags: (0x0002) ACC_PRIVATE

  private org.xnio.ChannelListener<? super org.xnio.StreamConnection> closeListener;
    descriptor: Lorg/xnio/ChannelListener;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;

  protected void <init>(org.xnio.XnioIoThread);
    descriptor: (Lorg/xnio/XnioIoThread;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.xnio.StreamConnection this
        start local 1 // org.xnio.XnioIoThread thread
         0: .line 46
            aload 0 /* this */
            aload 1 /* thread */
            invokespecial org.xnio.Connection.<init>:(Lorg/xnio/XnioIoThread;)V
         1: .line 47
            return
        end local 1 // org.xnio.XnioIoThread thread
        end local 0 // org.xnio.StreamConnection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/xnio/StreamConnection;
            0    2     1  thread  Lorg/xnio/XnioIoThread;
    MethodParameters:
        Name  Flags
      thread  final

  public void setCloseListener(org.xnio.ChannelListener<? super org.xnio.StreamConnection>);
    descriptor: (Lorg/xnio/ChannelListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.xnio.StreamConnection this
        start local 1 // org.xnio.ChannelListener listener
         0: .line 50
            aload 0 /* this */
            aload 1 /* listener */
            putfield org.xnio.StreamConnection.closeListener:Lorg/xnio/ChannelListener;
         1: .line 51
            return
        end local 1 // org.xnio.ChannelListener listener
        end local 0 // org.xnio.StreamConnection this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/xnio/StreamConnection;
            0    2     1  listener  Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;
    Signature: (Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;)V
    MethodParameters:
          Name  Flags
      listener  final

  public org.xnio.ChannelListener<? super org.xnio.StreamConnection> getCloseListener();
    descriptor: ()Lorg/xnio/ChannelListener;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.StreamConnection this
         0: .line 54
            aload 0 /* this */
            getfield org.xnio.StreamConnection.closeListener:Lorg/xnio/ChannelListener;
            areturn
        end local 0 // org.xnio.StreamConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/StreamConnection;
    Signature: ()Lorg/xnio/ChannelListener<-Lorg/xnio/StreamConnection;>;

  public org.xnio.ChannelListener$Setter<? extends org.xnio.StreamConnection> getCloseSetter();
    descriptor: ()Lorg/xnio/ChannelListener$Setter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.xnio.StreamConnection this
         0: .line 58
            new org.xnio.channels.CloseListenerSettable$Setter
            dup
            aload 0 /* this */
            invokespecial org.xnio.channels.CloseListenerSettable$Setter.<init>:(Lorg/xnio/channels/CloseListenerSettable;)V
            areturn
        end local 0 // org.xnio.StreamConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/StreamConnection;
    Signature: ()Lorg/xnio/ChannelListener$Setter<+Lorg/xnio/StreamConnection;>;

  protected void setSourceConduit(org.xnio.conduits.StreamSourceConduit);
    descriptor: (Lorg/xnio/conduits/StreamSourceConduit;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.xnio.StreamConnection this
        start local 1 // org.xnio.conduits.StreamSourceConduit conduit
         0: .line 67
            aload 0 /* this */
            aload 1 /* conduit */
            ifnonnull 1
            aconst_null
            goto 2
      StackMap locals:
      StackMap stack: org.xnio.StreamConnection
         1: new org.xnio.conduits.ConduitStreamSourceChannel
            dup
            aload 0 /* this */
            aload 1 /* conduit */
            invokespecial org.xnio.conduits.ConduitStreamSourceChannel.<init>:(Lorg/xnio/channels/Configurable;Lorg/xnio/conduits/StreamSourceConduit;)V
      StackMap locals: org.xnio.StreamConnection org.xnio.conduits.StreamSourceConduit
      StackMap stack: org.xnio.StreamConnection org.xnio.conduits.ConduitStreamSourceChannel
         2: putfield org.xnio.StreamConnection.sourceChannel:Lorg/xnio/conduits/ConduitStreamSourceChannel;
         3: .line 68
            return
        end local 1 // org.xnio.conduits.StreamSourceConduit conduit
        end local 0 // org.xnio.StreamConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/xnio/StreamConnection;
            0    4     1  conduit  Lorg/xnio/conduits/StreamSourceConduit;
    MethodParameters:
         Name  Flags
      conduit  

  protected void setSinkConduit(org.xnio.conduits.StreamSinkConduit);
    descriptor: (Lorg/xnio/conduits/StreamSinkConduit;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.xnio.StreamConnection this
        start local 1 // org.xnio.conduits.StreamSinkConduit conduit
         0: .line 76
            aload 0 /* this */
            aload 1 /* conduit */
            ifnonnull 1
            aconst_null
            goto 2
      StackMap locals:
      StackMap stack: org.xnio.StreamConnection
         1: new org.xnio.conduits.ConduitStreamSinkChannel
            dup
            aload 0 /* this */
            aload 1 /* conduit */
            invokespecial org.xnio.conduits.ConduitStreamSinkChannel.<init>:(Lorg/xnio/channels/Configurable;Lorg/xnio/conduits/StreamSinkConduit;)V
      StackMap locals: org.xnio.StreamConnection org.xnio.conduits.StreamSinkConduit
      StackMap stack: org.xnio.StreamConnection org.xnio.conduits.ConduitStreamSinkChannel
         2: putfield org.xnio.StreamConnection.sinkChannel:Lorg/xnio/conduits/ConduitStreamSinkChannel;
         3: .line 77
            return
        end local 1 // org.xnio.conduits.StreamSinkConduit conduit
        end local 0 // org.xnio.StreamConnection this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/xnio/StreamConnection;
            0    4     1  conduit  Lorg/xnio/conduits/StreamSinkConduit;
    MethodParameters:
         Name  Flags
      conduit  

  void invokeCloseListener();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.xnio.StreamConnection this
         0: .line 80
            aload 0 /* this */
            aload 0 /* this */
            getfield org.xnio.StreamConnection.closeListener:Lorg/xnio/ChannelListener;
            invokestatic org.xnio.ChannelListeners.invokeChannelListener:(Ljava/nio/channels/Channel;Lorg/xnio/ChannelListener;)Z
            pop
         1: .line 81
            return
        end local 0 // org.xnio.StreamConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/xnio/StreamConnection;

  private static <T> T notNull();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object orig
         0: .line 84
            aload 0 /* orig */
            ifnonnull 2
         1: .line 85
            getstatic org.xnio._private.Messages.msg:Lorg/xnio/_private/Messages;
            invokeinterface org.xnio._private.Messages.channelNotAvailable:()Ljava/lang/IllegalStateException;
            athrow
         2: .line 87
      StackMap locals:
      StackMap stack:
            aload 0 /* orig */
            areturn
        end local 0 // java.lang.Object orig
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  orig  TT;
    Exceptions:
      throws java.lang.IllegalStateException
    Signature: <T:Ljava/lang/Object;>(TT;)TT;
    MethodParameters:
      Name  Flags
      orig  

  public org.xnio.conduits.ConduitStreamSourceChannel getSourceChannel();
    descriptor: ()Lorg/xnio/conduits/ConduitStreamSourceChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.StreamConnection this
         0: .line 96
            aload 0 /* this */
            getfield org.xnio.StreamConnection.sourceChannel:Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokestatic org.xnio.StreamConnection.notNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.xnio.conduits.ConduitStreamSourceChannel
            areturn
        end local 0 // org.xnio.StreamConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/StreamConnection;

  public org.xnio.conduits.ConduitStreamSinkChannel getSinkChannel();
    descriptor: ()Lorg/xnio/conduits/ConduitStreamSinkChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.StreamConnection this
         0: .line 105
            aload 0 /* this */
            getfield org.xnio.StreamConnection.sinkChannel:Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokestatic org.xnio.StreamConnection.notNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.xnio.conduits.ConduitStreamSinkChannel
            areturn
        end local 0 // org.xnio.StreamConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/StreamConnection;
}
Signature: Lorg/xnio/Connection;Lorg/xnio/channels/CloseListenerSettable<Lorg/xnio/StreamConnection;>;
SourceFile: "StreamConnection.java"
InnerClasses:
  public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener
  public Setter = org.xnio.channels.CloseListenerSettable$Setter of org.xnio.channels.CloseListenerSettable