public class io.netty.handler.codec.compression.SnappyFrameEncoder extends io.netty.handler.codec.MessageToByteEncoder<io.netty.buffer.ByteBuf>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.netty.handler.codec.compression.SnappyFrameEncoder
  super_class: io.netty.handler.codec.MessageToByteEncoder
{
  private static final int MIN_COMPRESSIBLE_LENGTH;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 18

  private static final byte[] STREAM_START;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final io.netty.handler.codec.compression.Snappy snappy;
    descriptor: Lio/netty/handler/codec/compression/Snappy;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 41
            bipush 10
            newarray 8
            dup
            iconst_0
         1: .line 42
            iconst_m1
            bastore
            dup
            iconst_1
            bipush 6
            bastore
            dup
            iconst_4
            bipush 115
            bastore
            dup
            iconst_5
            bipush 78
            bastore
            dup
            bipush 6
            bipush 97
            bastore
            dup
            bipush 7
            bipush 80
            bastore
            dup
            bipush 8
            bipush 112
            bastore
            dup
            bipush 9
            bipush 89
            bastore
         2: .line 41
            putstatic io.netty.handler.codec.compression.SnappyFrameEncoder.STREAM_START:[B
         3: .line 43
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.netty.handler.codec.compression.SnappyFrameEncoder this
         0: .line 29
            aload 0 /* this */
            invokespecial io.netty.handler.codec.MessageToByteEncoder.<init>:()V
         1: .line 45
            aload 0 /* this */
            new io.netty.handler.codec.compression.Snappy
            dup
            invokespecial io.netty.handler.codec.compression.Snappy.<init>:()V
            putfield io.netty.handler.codec.compression.SnappyFrameEncoder.snappy:Lio/netty/handler/codec/compression/Snappy;
         2: .line 29
            return
        end local 0 // io.netty.handler.codec.compression.SnappyFrameEncoder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/handler/codec/compression/SnappyFrameEncoder;

  protected void encode(io.netty.channel.ChannelHandlerContext, io.netty.buffer.ByteBuf, io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // io.netty.handler.codec.compression.SnappyFrameEncoder this
        start local 1 // io.netty.channel.ChannelHandlerContext ctx
        start local 2 // io.netty.buffer.ByteBuf in
        start local 3 // io.netty.buffer.ByteBuf out
         0: .line 50
            aload 2 /* in */
            invokevirtual io.netty.buffer.ByteBuf.isReadable:()Z
            ifne 2
         1: .line 51
            return
         2: .line 54
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.handler.codec.compression.SnappyFrameEncoder.started:Z
            ifne 5
         3: .line 55
            aload 0 /* this */
            iconst_1
            putfield io.netty.handler.codec.compression.SnappyFrameEncoder.started:Z
         4: .line 56
            aload 3 /* out */
            getstatic io.netty.handler.codec.compression.SnappyFrameEncoder.STREAM_START:[B
            invokevirtual io.netty.buffer.ByteBuf.writeBytes:([B)Lio/netty/buffer/ByteBuf;
            pop
         5: .line 59
      StackMap locals:
      StackMap stack:
            aload 2 /* in */
            invokevirtual io.netty.buffer.ByteBuf.readableBytes:()I
            istore 4 /* dataLength */
        start local 4 // int dataLength
         6: .line 60
            iload 4 /* dataLength */
            bipush 18
            if_icmple 25
         7: .line 62
      StackMap locals: int
      StackMap stack:
            aload 3 /* out */
            invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
            iconst_1
            iadd
            istore 5 /* lengthIdx */
        start local 5 // int lengthIdx
         8: .line 63
            iload 4 /* dataLength */
            bipush 18
            if_icmpge 12
         9: .line 64
            aload 2 /* in */
            iload 4 /* dataLength */
            invokevirtual io.netty.buffer.ByteBuf.readSlice:(I)Lio/netty/buffer/ByteBuf;
            astore 6 /* slice */
        start local 6 // io.netty.buffer.ByteBuf slice
        10: .line 65
            aload 6 /* slice */
            aload 3 /* out */
            iload 4 /* dataLength */
            invokestatic io.netty.handler.codec.compression.SnappyFrameEncoder.writeUnencodedChunk:(Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;I)V
        11: .line 66
            goto 26
        end local 6 // io.netty.buffer.ByteBuf slice
        12: .line 69
      StackMap locals: int
      StackMap stack:
            aload 3 /* out */
            iconst_0
            invokevirtual io.netty.buffer.ByteBuf.writeInt:(I)Lio/netty/buffer/ByteBuf;
            pop
        13: .line 70
            iload 4 /* dataLength */
            sipush 32767
            if_icmple 20
        14: .line 71
            aload 2 /* in */
            sipush 32767
            invokevirtual io.netty.buffer.ByteBuf.readSlice:(I)Lio/netty/buffer/ByteBuf;
            astore 6 /* slice */
        start local 6 // io.netty.buffer.ByteBuf slice
        15: .line 72
            aload 6 /* slice */
            aload 3 /* out */
            invokestatic io.netty.handler.codec.compression.SnappyFrameEncoder.calculateAndWriteChecksum:(Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V
        16: .line 73
            aload 0 /* this */
            getfield io.netty.handler.codec.compression.SnappyFrameEncoder.snappy:Lio/netty/handler/codec/compression/Snappy;
            aload 6 /* slice */
            aload 3 /* out */
            sipush 32767
            invokevirtual io.netty.handler.codec.compression.Snappy.encode:(Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;I)V
        17: .line 74
            aload 3 /* out */
            iload 5 /* lengthIdx */
            invokestatic io.netty.handler.codec.compression.SnappyFrameEncoder.setChunkLength:(Lio/netty/buffer/ByteBuf;I)V
        18: .line 75
            iinc 4 /* dataLength */ -32767
        end local 6 // io.netty.buffer.ByteBuf slice
        19: .line 76
            goto 7
        20: .line 77
      StackMap locals:
      StackMap stack:
            aload 2 /* in */
            iload 4 /* dataLength */
            invokevirtual io.netty.buffer.ByteBuf.readSlice:(I)Lio/netty/buffer/ByteBuf;
            astore 6 /* slice */
        start local 6 // io.netty.buffer.ByteBuf slice
        21: .line 78
            aload 6 /* slice */
            aload 3 /* out */
            invokestatic io.netty.handler.codec.compression.SnappyFrameEncoder.calculateAndWriteChecksum:(Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V
        22: .line 79
            aload 0 /* this */
            getfield io.netty.handler.codec.compression.SnappyFrameEncoder.snappy:Lio/netty/handler/codec/compression/Snappy;
            aload 6 /* slice */
            aload 3 /* out */
            iload 4 /* dataLength */
            invokevirtual io.netty.handler.codec.compression.Snappy.encode:(Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;I)V
        23: .line 80
            aload 3 /* out */
            iload 5 /* lengthIdx */
            invokestatic io.netty.handler.codec.compression.SnappyFrameEncoder.setChunkLength:(Lio/netty/buffer/ByteBuf;I)V
        end local 6 // io.netty.buffer.ByteBuf slice
        end local 5 // int lengthIdx
        24: .line 84
            goto 26
        25: .line 85
      StackMap locals:
      StackMap stack:
            aload 2 /* in */
            aload 3 /* out */
            iload 4 /* dataLength */
            invokestatic io.netty.handler.codec.compression.SnappyFrameEncoder.writeUnencodedChunk:(Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;I)V
        26: .line 87
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int dataLength
        end local 3 // io.netty.buffer.ByteBuf out
        end local 2 // io.netty.buffer.ByteBuf in
        end local 1 // io.netty.channel.ChannelHandlerContext ctx
        end local 0 // io.netty.handler.codec.compression.SnappyFrameEncoder this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   27     0        this  Lio/netty/handler/codec/compression/SnappyFrameEncoder;
            0   27     1         ctx  Lio/netty/channel/ChannelHandlerContext;
            0   27     2          in  Lio/netty/buffer/ByteBuf;
            0   27     3         out  Lio/netty/buffer/ByteBuf;
            6   27     4  dataLength  I
            8   24     5   lengthIdx  I
           10   12     6       slice  Lio/netty/buffer/ByteBuf;
           15   19     6       slice  Lio/netty/buffer/ByteBuf;
           21   24     6       slice  Lio/netty/buffer/ByteBuf;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
      Name  Flags
      ctx   
      in    
      out   

  private static void writeUnencodedChunk(io.netty.buffer.ByteBuf, io.netty.buffer.ByteBuf, int);
    descriptor: (Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // io.netty.buffer.ByteBuf in
        start local 1 // io.netty.buffer.ByteBuf out
        start local 2 // int dataLength
         0: .line 90
            aload 1 /* out */
            iconst_1
            invokevirtual io.netty.buffer.ByteBuf.writeByte:(I)Lio/netty/buffer/ByteBuf;
            pop
         1: .line 91
            aload 1 /* out */
            iload 2 /* dataLength */
            iconst_4
            iadd
            invokestatic io.netty.handler.codec.compression.SnappyFrameEncoder.writeChunkLength:(Lio/netty/buffer/ByteBuf;I)V
         2: .line 92
            aload 0 /* in */
            aload 1 /* out */
            invokestatic io.netty.handler.codec.compression.SnappyFrameEncoder.calculateAndWriteChecksum:(Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V
         3: .line 93
            aload 1 /* out */
            aload 0 /* in */
            iload 2 /* dataLength */
            invokevirtual io.netty.buffer.ByteBuf.writeBytes:(Lio/netty/buffer/ByteBuf;I)Lio/netty/buffer/ByteBuf;
            pop
         4: .line 94
            return
        end local 2 // int dataLength
        end local 1 // io.netty.buffer.ByteBuf out
        end local 0 // io.netty.buffer.ByteBuf in
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0          in  Lio/netty/buffer/ByteBuf;
            0    5     1         out  Lio/netty/buffer/ByteBuf;
            0    5     2  dataLength  I
    MethodParameters:
            Name  Flags
      in          
      out         
      dataLength  

  private static void setChunkLength(io.netty.buffer.ByteBuf, int);
    descriptor: (Lio/netty/buffer/ByteBuf;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // io.netty.buffer.ByteBuf out
        start local 1 // int lengthIdx
         0: .line 97
            aload 0 /* out */
            invokevirtual io.netty.buffer.ByteBuf.writerIndex:()I
            iload 1 /* lengthIdx */
            isub
            iconst_3
            isub
            istore 2 /* chunkLength */
        start local 2 // int chunkLength
         1: .line 98
            iload 2 /* chunkLength */
            bipush 24
            iushr
            ifeq 3
         2: .line 99
            new io.netty.handler.codec.compression.CompressionException
            dup
            new java.lang.StringBuilder
            dup
            ldc "compressed data too large: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* chunkLength */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial io.netty.handler.codec.compression.CompressionException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 101
      StackMap locals: int
      StackMap stack:
            aload 0 /* out */
            iload 1 /* lengthIdx */
            iload 2 /* chunkLength */
            invokevirtual io.netty.buffer.ByteBuf.setMediumLE:(II)Lio/netty/buffer/ByteBuf;
            pop
         4: .line 102
            return
        end local 2 // int chunkLength
        end local 1 // int lengthIdx
        end local 0 // io.netty.buffer.ByteBuf out
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0          out  Lio/netty/buffer/ByteBuf;
            0    5     1    lengthIdx  I
            1    5     2  chunkLength  I
    MethodParameters:
           Name  Flags
      out        
      lengthIdx  

  private static void writeChunkLength(io.netty.buffer.ByteBuf, int);
    descriptor: (Lio/netty/buffer/ByteBuf;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.buffer.ByteBuf out
        start local 1 // int chunkLength
         0: .line 111
            aload 0 /* out */
            iload 1 /* chunkLength */
            invokevirtual io.netty.buffer.ByteBuf.writeMediumLE:(I)Lio/netty/buffer/ByteBuf;
            pop
         1: .line 112
            return
        end local 1 // int chunkLength
        end local 0 // io.netty.buffer.ByteBuf out
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0          out  Lio/netty/buffer/ByteBuf;
            0    2     1  chunkLength  I
    MethodParameters:
             Name  Flags
      out          
      chunkLength  

  private static void calculateAndWriteChecksum(io.netty.buffer.ByteBuf, io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.netty.buffer.ByteBuf slice
        start local 1 // io.netty.buffer.ByteBuf out
         0: .line 121
            aload 1 /* out */
            aload 0 /* slice */
            invokestatic io.netty.handler.codec.compression.Snappy.calculateChecksum:(Lio/netty/buffer/ByteBuf;)I
            invokevirtual io.netty.buffer.ByteBuf.writeIntLE:(I)Lio/netty/buffer/ByteBuf;
            pop
         1: .line 122
            return
        end local 1 // io.netty.buffer.ByteBuf out
        end local 0 // io.netty.buffer.ByteBuf slice
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  slice  Lio/netty/buffer/ByteBuf;
            0    2     1    out  Lio/netty/buffer/ByteBuf;
    MethodParameters:
       Name  Flags
      slice  
      out    

  protected void encode(io.netty.channel.ChannelHandlerContext, java.lang.Object, io.netty.buffer.ByteBuf);
    descriptor: (Lio/netty/channel/ChannelHandlerContext;Ljava/lang/Object;Lio/netty/buffer/ByteBuf;)V
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=4, locals=4, args_size=4
         0: .line 1
            aload 0
            aload 1
            aload 2
            checkcast io.netty.buffer.ByteBuf
            aload 3
            invokevirtual io.netty.handler.codec.compression.SnappyFrameEncoder.encode:(Lio/netty/channel/ChannelHandlerContext;Lio/netty/buffer/ByteBuf;Lio/netty/buffer/ByteBuf;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception
}
Signature: Lio/netty/handler/codec/MessageToByteEncoder<Lio/netty/buffer/ByteBuf;>;
SourceFile: "SnappyFrameEncoder.java"