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

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

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

  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.MessageConnection 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.MessageConnection this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/xnio/MessageConnection;
            0    2     1  thread  Lorg/xnio/XnioIoThread;
    MethodParameters:
        Name  Flags
      thread  final

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

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

  public org.xnio.ChannelListener$Setter<org.xnio.MessageConnection> getCloseSetter();
    descriptor: ()Lorg/xnio/ChannelListener$Setter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.xnio.MessageConnection 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.MessageConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/MessageConnection;
    Signature: ()Lorg/xnio/ChannelListener$Setter<Lorg/xnio/MessageConnection;>;

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

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

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

  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 74
            aload 0 /* orig */
            ifnonnull 2
         1: .line 75
            getstatic org.xnio._private.Messages.msg:Lorg/xnio/_private/Messages;
            invokeinterface org.xnio._private.Messages.channelNotAvailable:()Ljava/lang/IllegalStateException;
            athrow
         2: .line 77
      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.ConduitReadableMessageChannel getSourceChannel();
    descriptor: ()Lorg/xnio/conduits/ConduitReadableMessageChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.MessageConnection this
         0: .line 86
            aload 0 /* this */
            getfield org.xnio.MessageConnection.sourceChannel:Lorg/xnio/conduits/ConduitReadableMessageChannel;
            invokestatic org.xnio.MessageConnection.notNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.xnio.conduits.ConduitReadableMessageChannel
            areturn
        end local 0 // org.xnio.MessageConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/MessageConnection;

  public org.xnio.conduits.ConduitWritableMessageChannel getSinkChannel();
    descriptor: ()Lorg/xnio/conduits/ConduitWritableMessageChannel;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.xnio.MessageConnection this
         0: .line 95
            aload 0 /* this */
            getfield org.xnio.MessageConnection.sinkChannel:Lorg/xnio/conduits/ConduitWritableMessageChannel;
            invokestatic org.xnio.MessageConnection.notNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.xnio.conduits.ConduitWritableMessageChannel
            areturn
        end local 0 // org.xnio.MessageConnection this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/xnio/MessageConnection;
}
Signature: Lorg/xnio/Connection;Lorg/xnio/channels/CloseListenerSettable<Lorg/xnio/MessageConnection;>;
SourceFile: "MessageConnection.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