public class org.apache.cassandra.transport.Message$ProtocolEncoder extends io.netty.handler.codec.MessageToMessageEncoder<org.apache.cassandra.transport.Message>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.transport.Message$ProtocolEncoder
  super_class: io.netty.handler.codec.MessageToMessageEncoder
{
  private final org.apache.cassandra.transport.ProtocolVersionLimit versionCap;
    descriptor: Lorg/apache/cassandra/transport/ProtocolVersionLimit;
    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 323
            ldc Lorg/apache/cassandra/transport/Message;
            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.apache.cassandra.transport.Message$ProtocolEncoder.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.apache.cassandra.transport.ProtocolVersionLimit);
    descriptor: (Lorg/apache/cassandra/transport/ProtocolVersionLimit;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.transport.Message$ProtocolEncoder this
        start local 1 // org.apache.cassandra.transport.ProtocolVersionLimit versionCap
         0: .line 327
            aload 0 /* this */
            invokespecial io.netty.handler.codec.MessageToMessageEncoder.<init>:()V
         1: .line 329
            aload 0 /* this */
            aload 1 /* versionCap */
            putfield org.apache.cassandra.transport.Message$ProtocolEncoder.versionCap:Lorg/apache/cassandra/transport/ProtocolVersionLimit;
         2: .line 330
            return
        end local 1 // org.apache.cassandra.transport.ProtocolVersionLimit versionCap
        end local 0 // org.apache.cassandra.transport.Message$ProtocolEncoder this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lorg/apache/cassandra/transport/Message$ProtocolEncoder;
            0    3     1  versionCap  Lorg/apache/cassandra/transport/ProtocolVersionLimit;
    MethodParameters:
            Name  Flags
      versionCap  

  public void encode(io.netty.channel.ChannelHandlerContext, org.apache.cassandra.transport.Message, java.util.List);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lorg/apache/cassandra/transport/Message;Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=13, args_size=4
        start local 0 // org.apache.cassandra.transport.Message$ProtocolEncoder this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // org.apache.cassandra.transport.Message message
        start local 3 // java.util.List results
         0: .line 334
            aload 1 /* ctx */
            invokeinterface io.netty.channel.ChannelHandlerContext.channel:()Lio/netty/channel/Channel;
            getstatic org.apache.cassandra.transport.Connection.attributeKey:Lio/netty/util/AttributeKey;
            invokeinterface io.netty.channel.Channel.attr:(Lio/netty/util/AttributeKey;)Lio/netty/util/Attribute;
            invokeinterface io.netty.util.Attribute.get:()Ljava/lang/Object;
            checkcast org.apache.cassandra.transport.Connection
            astore 4 /* connection */
        start local 4 // org.apache.cassandra.transport.Connection connection
         1: .line 336
            aload 4 /* connection */
            ifnonnull 2
            aload 0 /* this */
            getfield org.apache.cassandra.transport.Message$ProtocolEncoder.versionCap:Lorg/apache/cassandra/transport/ProtocolVersionLimit;
            invokeinterface org.apache.cassandra.transport.ProtocolVersionLimit.getMaxVersion:()Lorg/apache/cassandra/transport/ProtocolVersion;
            goto 3
      StackMap locals: org.apache.cassandra.transport.Connection
      StackMap stack:
         2: aload 4 /* connection */
            invokevirtual org.apache.cassandra.transport.Connection.getVersion:()Lorg/apache/cassandra/transport/ProtocolVersion;
      StackMap locals:
      StackMap stack: org.apache.cassandra.transport.ProtocolVersion
         3: astore 5 /* version */
        start local 5 // org.apache.cassandra.transport.ProtocolVersion version
         4: .line 338
            ldc Lorg/apache/cassandra/transport/Frame$Header$Flag;
            invokestatic java.util.EnumSet.noneOf:(Ljava/lang/Class;)Ljava/util/EnumSet;
            astore 6 /* flags */
        start local 6 // java.util.EnumSet flags
         5: .line 340
            aload 2 /* message */
            getfield org.apache.cassandra.transport.Message.type:Lorg/apache/cassandra/transport/Message$Type;
            getfield org.apache.cassandra.transport.Message$Type.codec:Lorg/apache/cassandra/transport/Message$Codec;
            astore 7 /* codec */
        start local 7 // org.apache.cassandra.transport.Message$Codec codec
         6: .line 343
            aload 7 /* codec */
            aload 2 /* message */
            aload 5 /* version */
            invokeinterface org.apache.cassandra.transport.Message$Codec.encodedSize:(Ljava/lang/Object;Lorg/apache/cassandra/transport/ProtocolVersion;)I
            istore 8 /* messageSize */
        start local 8 // int messageSize
         7: .line 345
            aload 2 /* message */
            instanceof org.apache.cassandra.transport.Message$Response
            ifeq 32
         8: .line 347
            aload 2 /* message */
            checkcast org.apache.cassandra.transport.Message$Response
            invokevirtual org.apache.cassandra.transport.Message$Response.getTracingId:()Ljava/util/UUID;
            astore 10 /* tracingId */
        start local 10 // java.util.UUID tracingId
         9: .line 348
            aload 2 /* message */
            invokevirtual org.apache.cassandra.transport.Message.getCustomPayload:()Ljava/util/Map;
            astore 11 /* customPayload */
        start local 11 // java.util.Map customPayload
        10: .line 349
            aload 10 /* tracingId */
            ifnull 12
        11: .line 350
            iload 8 /* messageSize */
            aload 10 /* tracingId */
            invokestatic org.apache.cassandra.transport.CBUtil.sizeOfUUID:(Ljava/util/UUID;)I
            iadd
            istore 8 /* messageSize */
        12: .line 351
      StackMap locals: org.apache.cassandra.transport.Message$ProtocolEncoder io.netty.channel.ChannelHandlerContext org.apache.cassandra.transport.Message java.util.List org.apache.cassandra.transport.Connection org.apache.cassandra.transport.ProtocolVersion java.util.EnumSet org.apache.cassandra.transport.Message$Codec int top java.util.UUID java.util.Map
      StackMap stack:
            aload 2 /* message */
            checkcast org.apache.cassandra.transport.Message$Response
            invokevirtual org.apache.cassandra.transport.Message$Response.getWarnings:()Ljava/util/List;
            astore 12 /* warnings */
        start local 12 // java.util.List warnings
        13: .line 352
            aload 12 /* warnings */
            ifnull 17
        14: .line 354
            aload 5 /* version */
            getstatic org.apache.cassandra.transport.ProtocolVersion.V4:Lorg/apache/cassandra/transport/ProtocolVersion;
            invokevirtual org.apache.cassandra.transport.ProtocolVersion.isSmallerThan:(Lorg/apache/cassandra/transport/ProtocolVersion;)Z
            ifeq 16
        15: .line 355
            new org.apache.cassandra.transport.ProtocolException
            dup
            ldc "Must not send frame with WARNING flag for native protocol version < 4"
            invokespecial org.apache.cassandra.transport.ProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 356
      StackMap locals: java.util.List
      StackMap stack:
            iload 8 /* messageSize */
            aload 12 /* warnings */
            invokestatic org.apache.cassandra.transport.CBUtil.sizeOfStringList:(Ljava/util/List;)I
            iadd
            istore 8 /* messageSize */
        17: .line 358
      StackMap locals:
      StackMap stack:
            aload 11 /* customPayload */
            ifnull 21
        18: .line 360
            aload 5 /* version */
            getstatic org.apache.cassandra.transport.ProtocolVersion.V4:Lorg/apache/cassandra/transport/ProtocolVersion;
            invokevirtual org.apache.cassandra.transport.ProtocolVersion.isSmallerThan:(Lorg/apache/cassandra/transport/ProtocolVersion;)Z
            ifeq 20
        19: .line 361
            new org.apache.cassandra.transport.ProtocolException
            dup
            ldc "Must not send frame with CUSTOM_PAYLOAD flag for native protocol version < 4"
            invokespecial org.apache.cassandra.transport.ProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 362
      StackMap locals:
      StackMap stack:
            iload 8 /* messageSize */
            aload 11 /* customPayload */
            invokestatic org.apache.cassandra.transport.CBUtil.sizeOfBytesMap:(Ljava/util/Map;)I
            iadd
            istore 8 /* messageSize */
        21: .line 364
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.transport.CBUtil.allocator:Lio/netty/buffer/ByteBufAllocator;
            iload 8 /* messageSize */
            invokeinterface io.netty.buffer.ByteBufAllocator.buffer:(I)Lio/netty/buffer/ByteBuf;
            astore 9 /* body */
        start local 9 // io.netty.buffer.ByteBuf body
        22: .line 365
            aload 10 /* tracingId */
            ifnull 25
        23: .line 367
            aload 10 /* tracingId */
            aload 9 /* body */
            invokestatic org.apache.cassandra.transport.CBUtil.writeUUID:(Ljava/util/UUID;Lio/netty/buffer/ByteBuf;)V
        24: .line 368
            aload 6 /* flags */
            getstatic org.apache.cassandra.transport.Frame$Header$Flag.TRACING:Lorg/apache/cassandra/transport/Frame$Header$Flag;
            invokevirtual java.util.EnumSet.add:(Ljava/lang/Object;)Z
            pop
        25: .line 370
      StackMap locals: org.apache.cassandra.transport.Message$ProtocolEncoder io.netty.channel.ChannelHandlerContext org.apache.cassandra.transport.Message java.util.List org.apache.cassandra.transport.Connection org.apache.cassandra.transport.ProtocolVersion java.util.EnumSet org.apache.cassandra.transport.Message$Codec int io.netty.buffer.ByteBuf java.util.UUID java.util.Map java.util.List
      StackMap stack:
            aload 12 /* warnings */
            ifnull 28
        26: .line 372
            aload 12 /* warnings */
            aload 9 /* body */
            invokestatic org.apache.cassandra.transport.CBUtil.writeStringList:(Ljava/util/List;Lio/netty/buffer/ByteBuf;)V
        27: .line 373
            aload 6 /* flags */
            getstatic org.apache.cassandra.transport.Frame$Header$Flag.WARNING:Lorg/apache/cassandra/transport/Frame$Header$Flag;
            invokevirtual java.util.EnumSet.add:(Ljava/lang/Object;)Z
            pop
        28: .line 375
      StackMap locals:
      StackMap stack:
            aload 11 /* customPayload */
            ifnull 42
        29: .line 377
            aload 11 /* customPayload */
            aload 9 /* body */
            invokestatic org.apache.cassandra.transport.CBUtil.writeBytesMap:(Ljava/util/Map;Lio/netty/buffer/ByteBuf;)V
        30: .line 378
            aload 6 /* flags */
            getstatic org.apache.cassandra.transport.Frame$Header$Flag.CUSTOM_PAYLOAD:Lorg/apache/cassandra/transport/Frame$Header$Flag;
            invokevirtual java.util.EnumSet.add:(Ljava/lang/Object;)Z
            pop
        end local 12 // java.util.List warnings
        end local 11 // java.util.Map customPayload
        end local 10 // java.util.UUID tracingId
        31: .line 380
            goto 42
        end local 9 // io.netty.buffer.ByteBuf body
        32: .line 383
      StackMap locals: org.apache.cassandra.transport.Message$ProtocolEncoder io.netty.channel.ChannelHandlerContext org.apache.cassandra.transport.Message java.util.List org.apache.cassandra.transport.Connection org.apache.cassandra.transport.ProtocolVersion java.util.EnumSet org.apache.cassandra.transport.Message$Codec int
      StackMap stack:
            getstatic org.apache.cassandra.transport.Message$ProtocolEncoder.$assertionsDisabled:Z
            ifne 33
            aload 2 /* message */
            instanceof org.apache.cassandra.transport.Message$Request
            ifne 33
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        33: .line 384
      StackMap locals:
      StackMap stack:
            aload 2 /* message */
            checkcast org.apache.cassandra.transport.Message$Request
            invokevirtual org.apache.cassandra.transport.Message$Request.isTracingRequested:()Z
            ifeq 35
        34: .line 385
            aload 6 /* flags */
            getstatic org.apache.cassandra.transport.Frame$Header$Flag.TRACING:Lorg/apache/cassandra/transport/Frame$Header$Flag;
            invokevirtual java.util.EnumSet.add:(Ljava/lang/Object;)Z
            pop
        35: .line 386
      StackMap locals:
      StackMap stack:
            aload 2 /* message */
            invokevirtual org.apache.cassandra.transport.Message.getCustomPayload:()Ljava/util/Map;
            astore 10 /* payload */
        start local 10 // java.util.Map payload
        36: .line 387
            aload 10 /* payload */
            ifnull 38
        37: .line 388
            iload 8 /* messageSize */
            aload 10 /* payload */
            invokestatic org.apache.cassandra.transport.CBUtil.sizeOfBytesMap:(Ljava/util/Map;)I
            iadd
            istore 8 /* messageSize */
        38: .line 389
      StackMap locals: org.apache.cassandra.transport.Message$ProtocolEncoder io.netty.channel.ChannelHandlerContext org.apache.cassandra.transport.Message java.util.List org.apache.cassandra.transport.Connection org.apache.cassandra.transport.ProtocolVersion java.util.EnumSet org.apache.cassandra.transport.Message$Codec int top java.util.Map
      StackMap stack:
            getstatic org.apache.cassandra.transport.CBUtil.allocator:Lio/netty/buffer/ByteBufAllocator;
            iload 8 /* messageSize */
            invokeinterface io.netty.buffer.ByteBufAllocator.buffer:(I)Lio/netty/buffer/ByteBuf;
            astore 9 /* body */
        start local 9 // io.netty.buffer.ByteBuf body
        39: .line 390
            aload 10 /* payload */
            ifnull 42
        40: .line 392
            aload 10 /* payload */
            aload 9 /* body */
            invokestatic org.apache.cassandra.transport.CBUtil.writeBytesMap:(Ljava/util/Map;Lio/netty/buffer/ByteBuf;)V
        41: .line 393
            aload 6 /* flags */
            getstatic org.apache.cassandra.transport.Frame$Header$Flag.CUSTOM_PAYLOAD:Lorg/apache/cassandra/transport/Frame$Header$Flag;
            invokevirtual java.util.EnumSet.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // java.util.Map payload
        42: .line 399
      StackMap locals: org.apache.cassandra.transport.Message$ProtocolEncoder io.netty.channel.ChannelHandlerContext org.apache.cassandra.transport.Message java.util.List org.apache.cassandra.transport.Connection org.apache.cassandra.transport.ProtocolVersion java.util.EnumSet org.apache.cassandra.transport.Message$Codec int io.netty.buffer.ByteBuf
      StackMap stack:
            aload 7 /* codec */
            aload 2 /* message */
            aload 9 /* body */
            aload 5 /* version */
            invokeinterface org.apache.cassandra.transport.Message$Codec.encode:(Ljava/lang/Object;Lio/netty/buffer/ByteBuf;Lorg/apache/cassandra/transport/ProtocolVersion;)V
        43: .line 400
            goto 47
        44: .line 401
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 10 /* e */
        start local 10 // java.lang.Throwable e
        45: .line 403
            aload 9 /* body */
            invokevirtual io.netty.buffer.ByteBuf.release:()Z
            pop
        46: .line 404
            aload 10 /* e */
            athrow
        end local 10 // java.lang.Throwable e
        47: .line 409
      StackMap locals:
      StackMap stack:
            aload 2 /* message */
            getfield org.apache.cassandra.transport.Message.forcedProtocolVersion:Lorg/apache/cassandra/transport/ProtocolVersion;
            ifnonnull 49
        48: .line 410
            aload 5 /* version */
            goto 50
        49: .line 411
      StackMap locals:
      StackMap stack:
            aload 2 /* message */
            getfield org.apache.cassandra.transport.Message.forcedProtocolVersion:Lorg/apache/cassandra/transport/ProtocolVersion;
        50: .line 409
      StackMap locals:
      StackMap stack: org.apache.cassandra.transport.ProtocolVersion
            astore 10 /* responseVersion */
        start local 10 // org.apache.cassandra.transport.ProtocolVersion responseVersion
        51: .line 413
            aload 10 /* responseVersion */
            invokevirtual org.apache.cassandra.transport.ProtocolVersion.isBeta:()Z
            ifeq 53
        52: .line 414
            aload 6 /* flags */
            getstatic org.apache.cassandra.transport.Frame$Header$Flag.USE_BETA:Lorg/apache/cassandra/transport/Frame$Header$Flag;
            invokevirtual java.util.EnumSet.add:(Ljava/lang/Object;)Z
            pop
        53: .line 416
      StackMap locals: org.apache.cassandra.transport.ProtocolVersion
      StackMap stack:
            aload 3 /* results */
            aload 2 /* message */
            getfield org.apache.cassandra.transport.Message.type:Lorg/apache/cassandra/transport/Message$Type;
            aload 2 /* message */
            invokevirtual org.apache.cassandra.transport.Message.getStreamId:()I
            aload 10 /* responseVersion */
            aload 6 /* flags */
            aload 9 /* body */
            invokestatic org.apache.cassandra.transport.Frame.create:(Lorg/apache/cassandra/transport/Message$Type;ILorg/apache/cassandra/transport/ProtocolVersion;Ljava/util/EnumSet;Lio/netty/buffer/ByteBuf;)Lorg/apache/cassandra/transport/Frame;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // org.apache.cassandra.transport.ProtocolVersion responseVersion
        end local 9 // io.netty.buffer.ByteBuf body
        end local 8 // int messageSize
        54: .line 417
            goto 57
        55: .line 418
      StackMap locals: org.apache.cassandra.transport.Message$ProtocolEncoder io.netty.channel.ChannelHandlerContext org.apache.cassandra.transport.Message java.util.List org.apache.cassandra.transport.Connection org.apache.cassandra.transport.ProtocolVersion java.util.EnumSet org.apache.cassandra.transport.Message$Codec
      StackMap stack: java.lang.Throwable
            astore 8 /* e */
        start local 8 // java.lang.Throwable e
        56: .line 420
            aload 8 /* e */
            aload 2 /* message */
            invokevirtual org.apache.cassandra.transport.Message.getStreamId:()I
            invokestatic org.apache.cassandra.transport.messages.ErrorMessage.wrap:(Ljava/lang/Throwable;I)Ljava/lang/RuntimeException;
            athrow
        end local 8 // java.lang.Throwable e
        57: .line 422
      StackMap locals:
      StackMap stack:
            return
        end local 7 // org.apache.cassandra.transport.Message$Codec codec
        end local 6 // java.util.EnumSet flags
        end local 5 // org.apache.cassandra.transport.ProtocolVersion version
        end local 4 // org.apache.cassandra.transport.Connection connection
        end local 3 // java.util.List results
        end local 2 // org.apache.cassandra.transport.Message message
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // org.apache.cassandra.transport.Message$ProtocolEncoder this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   58     0             this  Lorg/apache/cassandra/transport/Message$ProtocolEncoder;
            0   58     1              ctx  Lio/netty/channel/ChannelHandlerContext;
            0   58     2          message  Lorg/apache/cassandra/transport/Message;
            0   58     3          results  Ljava/util/List;
            1   58     4       connection  Lorg/apache/cassandra/transport/Connection;
            4   58     5          version  Lorg/apache/cassandra/transport/ProtocolVersion;
            5   58     6            flags  Ljava/util/EnumSet<Lorg/apache/cassandra/transport/Frame$Header$Flag;>;
            6   58     7            codec  Lorg/apache/cassandra/transport/Message$Codec<Lorg/apache/cassandra/transport/Message;>;
            7   54     8      messageSize  I
           22   32     9             body  Lio/netty/buffer/ByteBuf;
           39   54     9             body  Lio/netty/buffer/ByteBuf;
            9   31    10        tracingId  Ljava/util/UUID;
           10   31    11    customPayload  Ljava/util/Map<Ljava/lang/String;Ljava/nio/ByteBuffer;>;
           13   31    12         warnings  Ljava/util/List<Ljava/lang/String;>;
           36   42    10          payload  Ljava/util/Map<Ljava/lang/String;Ljava/nio/ByteBuffer;>;
           45   47    10                e  Ljava/lang/Throwable;
           51   54    10  responseVersion  Lorg/apache/cassandra/transport/ProtocolVersion;
           56   57     8                e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          42    43      44  Class java.lang.Throwable
           6    54      55  Class java.lang.Throwable
    MethodParameters:
         Name  Flags
      ctx      
      message  
      results  

  public void encode(io.netty.channel.ChannelHandlerContext, java.lang.Object, java.util.List);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Ljava/util/List;)V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
         0: .line 1
            aload 0
            aload 1
            aload 2
            checkcast org.apache.cassandra.transport.Message
            aload 3
            checkcast java.util.List
            invokevirtual org.apache.cassandra.transport.Message$ProtocolEncoder.encode:(Lio/netty/channel/ChannelHandlerContext;Lorg/apache/cassandra/transport/Message;Ljava/util/List;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception
}
Signature: Lio/netty/handler/codec/MessageToMessageEncoder<Lorg/apache/cassandra/transport/Message;>;
SourceFile: "Message.java"
NestHost: org.apache.cassandra.transport.Message
InnerClasses:
  public abstract Sharable = io.netty.channel.ChannelHandler$Sharable of io.netty.channel.ChannelHandler
  public Header = org.apache.cassandra.transport.Frame$Header of org.apache.cassandra.transport.Frame
  public final Flag = org.apache.cassandra.transport.Frame$Header$Flag of org.apache.cassandra.transport.Frame$Header
  public abstract Codec = org.apache.cassandra.transport.Message$Codec of org.apache.cassandra.transport.Message
  public ProtocolEncoder = org.apache.cassandra.transport.Message$ProtocolEncoder of org.apache.cassandra.transport.Message
  public abstract Request = org.apache.cassandra.transport.Message$Request of org.apache.cassandra.transport.Message
  public abstract Response = org.apache.cassandra.transport.Message$Response of org.apache.cassandra.transport.Message
  public final Type = org.apache.cassandra.transport.Message$Type of org.apache.cassandra.transport.Message
    RuntimeVisibleAnnotations: 
      io.netty.channel.ChannelHandler$Sharable()