public abstract class com.datastax.oss.protocol.internal.SegmentBuilder<B, StateT>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.datastax.oss.protocol.internal.SegmentBuilder
  super_class: java.lang.Object
{
  private final com.datastax.oss.protocol.internal.PrimitiveCodec<B> primitiveCodec;
    descriptor: Lcom/datastax/oss/protocol/internal/PrimitiveCodec;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/datastax/oss/protocol/internal/PrimitiveCodec<TB;>;

  private final com.datastax.oss.protocol.internal.FrameCodec<B> frameCodec;
    descriptor: Lcom/datastax/oss/protocol/internal/FrameCodec;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/datastax/oss/protocol/internal/FrameCodec<TB;>;

  private final int maxPayloadLength;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.util.List<com.datastax.oss.protocol.internal.Frame> currentPayloadFrames;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lcom/datastax/oss/protocol/internal/Frame;>;

  private java.util.List<StateT> currentPayloadStates;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<TStateT;>;

  private int currentPayloadLength;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  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 32
            ldc Lcom/datastax/oss/protocol/internal/SegmentBuilder;
            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 com.datastax.oss.protocol.internal.SegmentBuilder.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>(com.datastax.oss.protocol.internal.PrimitiveCodec<B>, com.datastax.oss.protocol.internal.FrameCodec<B>);
    descriptor: (Lcom/datastax/oss/protocol/internal/PrimitiveCodec;Lcom/datastax/oss/protocol/internal/FrameCodec;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
        start local 1 // com.datastax.oss.protocol.internal.PrimitiveCodec primitiveCodec
        start local 2 // com.datastax.oss.protocol.internal.FrameCodec frameCodec
         0: .line 43
            aload 0 /* this */
            aload 1 /* primitiveCodec */
            aload 2 /* frameCodec */
            getstatic com.datastax.oss.protocol.internal.Segment.MAX_PAYLOAD_LENGTH:I
            invokespecial com.datastax.oss.protocol.internal.SegmentBuilder.<init>:(Lcom/datastax/oss/protocol/internal/PrimitiveCodec;Lcom/datastax/oss/protocol/internal/FrameCodec;I)V
         1: .line 44
            return
        end local 2 // com.datastax.oss.protocol.internal.FrameCodec frameCodec
        end local 1 // com.datastax.oss.protocol.internal.PrimitiveCodec primitiveCodec
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;
            0    2     1  primitiveCodec  Lcom/datastax/oss/protocol/internal/PrimitiveCodec<TB;>;
            0    2     2      frameCodec  Lcom/datastax/oss/protocol/internal/FrameCodec<TB;>;
    Signature: (Lcom/datastax/oss/protocol/internal/PrimitiveCodec<TB;>;Lcom/datastax/oss/protocol/internal/FrameCodec<TB;>;)V
    MethodParameters:
                Name  Flags
      primitiveCodec  
      frameCodec      

  void <init>(com.datastax.oss.protocol.internal.PrimitiveCodec<B>, com.datastax.oss.protocol.internal.FrameCodec<B>, );
    descriptor: (Lcom/datastax/oss/protocol/internal/PrimitiveCodec;Lcom/datastax/oss/protocol/internal/FrameCodec;I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
        start local 1 // com.datastax.oss.protocol.internal.PrimitiveCodec primitiveCodec
        start local 2 // com.datastax.oss.protocol.internal.FrameCodec frameCodec
        start local 3 // int maxPayloadLength
         0: .line 47
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 38
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadFrames:Ljava/util/List;
         2: .line 39
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadStates:Ljava/util/List;
         3: .line 48
            aload 0 /* this */
            aload 1 /* primitiveCodec */
            putfield com.datastax.oss.protocol.internal.SegmentBuilder.primitiveCodec:Lcom/datastax/oss/protocol/internal/PrimitiveCodec;
         4: .line 49
            aload 0 /* this */
            aload 2 /* frameCodec */
            putfield com.datastax.oss.protocol.internal.SegmentBuilder.frameCodec:Lcom/datastax/oss/protocol/internal/FrameCodec;
         5: .line 50
            aload 0 /* this */
            iload 3 /* maxPayloadLength */
            putfield com.datastax.oss.protocol.internal.SegmentBuilder.maxPayloadLength:I
         6: .line 51
            return
        end local 3 // int maxPayloadLength
        end local 2 // com.datastax.oss.protocol.internal.FrameCodec frameCodec
        end local 1 // com.datastax.oss.protocol.internal.PrimitiveCodec primitiveCodec
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    7     0              this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;
            0    7     1    primitiveCodec  Lcom/datastax/oss/protocol/internal/PrimitiveCodec<TB;>;
            0    7     2        frameCodec  Lcom/datastax/oss/protocol/internal/FrameCodec<TB;>;
            0    7     3  maxPayloadLength  I
    Signature: (Lcom/datastax/oss/protocol/internal/PrimitiveCodec<TB;>;Lcom/datastax/oss/protocol/internal/FrameCodec<TB;>;I)V
    MethodParameters:
                  Name  Flags
      primitiveCodec    
      frameCodec        
      maxPayloadLength  

  protected abstract StateT mergeStates(java.util.List<StateT>);
    descriptor: (Ljava/util/List;)Ljava/lang/Object;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (Ljava/util/List<TStateT;>;)TStateT;
    MethodParameters:
             Name  Flags
      frameStates  

  protected abstract java.util.List<StateT> splitState(StateT, int);
    descriptor: (Ljava/lang/Object;I)Ljava/util/List;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (TStateT;I)Ljava/util/List<TStateT;>;
    MethodParameters:
            Name  Flags
      frameState  
      sliceCount  

  protected abstract void processSegment(com.datastax.oss.protocol.internal.Segment<B>, );
    descriptor: (Lcom/datastax/oss/protocol/internal/Segment;Ljava/lang/Object;)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (Lcom/datastax/oss/protocol/internal/Segment<TB;>;TStateT;)V
    MethodParameters:
              Name  Flags
      segment       
      segmentState  

  public void addFrame(com.datastax.oss.protocol.internal.Frame, );
    descriptor: (Lcom/datastax/oss/protocol/internal/Frame;Ljava/lang/Object;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=3
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
        start local 1 // com.datastax.oss.protocol.internal.Frame frame
        start local 2 // java.lang.Object frameState
         0: .line 75
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.frameCodec:Lcom/datastax/oss/protocol/internal/FrameCodec;
            aload 1 /* frame */
            invokevirtual com.datastax.oss.protocol.internal.FrameCodec.encodedBodySize:(Lcom/datastax/oss/protocol/internal/Frame;)I
            istore 3 /* frameBodyLength */
        start local 3 // int frameBodyLength
         1: .line 76
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.frameCodec:Lcom/datastax/oss/protocol/internal/FrameCodec;
            aload 1 /* frame */
            invokevirtual com.datastax.oss.protocol.internal.FrameCodec.encodedHeaderSize:(Lcom/datastax/oss/protocol/internal/Frame;)I
            iload 3 /* frameBodyLength */
            iadd
            istore 4 /* frameLength */
        start local 4 // int frameLength
         2: .line 78
            iload 4 /* frameLength */
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.maxPayloadLength:I
            if_icmple 25
         3: .line 80
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.primitiveCodec:Lcom/datastax/oss/protocol/internal/PrimitiveCodec;
            iload 4 /* frameLength */
            invokeinterface com.datastax.oss.protocol.internal.PrimitiveCodec.allocate:(I)Ljava/lang/Object;
            astore 5 /* frameBuffer */
        start local 5 // java.lang.Object frameBuffer
         4: .line 81
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.frameCodec:Lcom/datastax/oss/protocol/internal/FrameCodec;
            aload 1 /* frame */
            iload 3 /* frameBodyLength */
            aload 5 /* frameBuffer */
            invokevirtual com.datastax.oss.protocol.internal.FrameCodec.encodeInto:(Lcom/datastax/oss/protocol/internal/Frame;ILjava/lang/Object;)V
         5: .line 82
            iload 4 /* frameLength */
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.maxPayloadLength:I
            irem
            ifne 6
            iconst_1
            goto 7
      StackMap locals: int int java.lang.Object
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: istore 6 /* isExactMultiple */
        start local 6 // boolean isExactMultiple
         8: .line 83
            iload 4 /* frameLength */
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.maxPayloadLength:I
            idiv
            iload 6 /* isExactMultiple */
            ifeq 9
            iconst_0
            goto 10
      StackMap locals: com.datastax.oss.protocol.internal.SegmentBuilder com.datastax.oss.protocol.internal.Frame java.lang.Object int int java.lang.Object int
      StackMap stack: int
         9: iconst_1
      StackMap locals: com.datastax.oss.protocol.internal.SegmentBuilder com.datastax.oss.protocol.internal.Frame java.lang.Object int int java.lang.Object int
      StackMap stack: int int
        10: iadd
            istore 7 /* sliceCount */
        start local 7 // int sliceCount
        11: .line 84
            aload 0 /* this */
            aload 1 /* frame */
            iload 4 /* frameLength */
            iload 7 /* sliceCount */
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.onLargeFrameSplit:(Lcom/datastax/oss/protocol/internal/Frame;II)V
        12: .line 85
            aload 0 /* this */
            aload 2 /* frameState */
            iload 7 /* sliceCount */
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.splitState:(Ljava/lang/Object;I)Ljava/util/List;
            astore 8 /* sliceStates */
        start local 8 // java.util.List sliceStates
        13: .line 86
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        14: goto 22
        15: .line 88
      StackMap locals: int java.util.List int
      StackMap stack:
            iload 9 /* i */
            iload 7 /* sliceCount */
            iconst_1
            isub
            if_icmplt 16
            iload 6 /* isExactMultiple */
            ifeq 17
        16: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.maxPayloadLength:I
            goto 18
        17: .line 90
      StackMap locals:
      StackMap stack:
            iload 4 /* frameLength */
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.maxPayloadLength:I
            irem
        18: .line 87
      StackMap locals:
      StackMap stack: int
            istore 10 /* sliceLength */
        start local 10 // int sliceLength
        19: .line 91
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.primitiveCodec:Lcom/datastax/oss/protocol/internal/PrimitiveCodec;
            aload 5 /* frameBuffer */
            iload 10 /* sliceLength */
            invokeinterface com.datastax.oss.protocol.internal.PrimitiveCodec.readRetainedSlice:(Ljava/lang/Object;I)Ljava/lang/Object;
            astore 11 /* slicePayload */
        start local 11 // java.lang.Object slicePayload
        20: .line 92
            aload 0 /* this */
            new com.datastax.oss.protocol.internal.Segment
            dup
            aload 11 /* slicePayload */
            iconst_0
            invokespecial com.datastax.oss.protocol.internal.Segment.<init>:(Ljava/lang/Object;Z)V
            aload 8 /* sliceStates */
            iload 9 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.processSegment:(Lcom/datastax/oss/protocol/internal/Segment;Ljava/lang/Object;)V
        end local 11 // java.lang.Object slicePayload
        end local 10 // int sliceLength
        21: .line 86
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: iload 9 /* i */
            iload 7 /* sliceCount */
            if_icmplt 15
        end local 9 // int i
        23: .line 95
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.primitiveCodec:Lcom/datastax/oss/protocol/internal/PrimitiveCodec;
            aload 5 /* frameBuffer */
            invokeinterface com.datastax.oss.protocol.internal.PrimitiveCodec.release:(Ljava/lang/Object;)V
        end local 8 // java.util.List sliceStates
        end local 7 // int sliceCount
        end local 6 // boolean isExactMultiple
        end local 5 // java.lang.Object frameBuffer
        24: .line 96
            goto 33
        25: .line 98
      StackMap locals: com.datastax.oss.protocol.internal.SegmentBuilder com.datastax.oss.protocol.internal.Frame java.lang.Object int int
      StackMap stack:
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
            iload 4 /* frameLength */
            iadd
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.maxPayloadLength:I
            if_icmple 29
        26: .line 100
            aload 0 /* this */
            aload 1 /* frame */
            iload 4 /* frameLength */
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadFrames:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.onSegmentFull:(Lcom/datastax/oss/protocol/internal/Frame;III)V
        27: .line 101
            aload 0 /* this */
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.processCurrentPayload:()V
        28: .line 102
            aload 0 /* this */
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.resetCurrentPayload:()V
        29: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadFrames:Ljava/util/List;
            aload 1 /* frame */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        30: .line 105
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadStates:Ljava/util/List;
            aload 2 /* frameState */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        31: .line 106
            aload 0 /* this */
            dup
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
            iload 4 /* frameLength */
            iadd
            putfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
        32: .line 107
            aload 0 /* this */
            aload 1 /* frame */
            iload 4 /* frameLength */
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadFrames:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.onSmallFrameAdded:(Lcom/datastax/oss/protocol/internal/Frame;III)V
        33: .line 109
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int frameLength
        end local 3 // int frameBodyLength
        end local 2 // java.lang.Object frameState
        end local 1 // com.datastax.oss.protocol.internal.Frame frame
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   34     0             this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;
            0   34     1            frame  Lcom/datastax/oss/protocol/internal/Frame;
            0   34     2       frameState  TStateT;
            1   34     3  frameBodyLength  I
            2   34     4      frameLength  I
            4   24     5      frameBuffer  TB;
            8   24     6  isExactMultiple  Z
           11   24     7       sliceCount  I
           13   24     8      sliceStates  Ljava/util/List<TStateT;>;
           14   23     9                i  I
           19   21    10      sliceLength  I
           20   21    11     slicePayload  TB;
    Signature: (Lcom/datastax/oss/protocol/internal/Frame;TStateT;)V
    MethodParameters:
            Name  Flags
      frame       
      frameState  

  public void flush();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
         0: .line 118
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadFrames:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifne 4
         1: .line 119
            aload 0 /* this */
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadFrames:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.onLastSegmentFlushed:(II)V
         2: .line 120
            aload 0 /* this */
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.processCurrentPayload:()V
         3: .line 121
            aload 0 /* this */
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.resetCurrentPayload:()V
         4: .line 123
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;

  protected void onLargeFrameSplit(com.datastax.oss.protocol.internal.Frame, int, int);
    descriptor: (Lcom/datastax/oss/protocol/internal/Frame;II)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=4, args_size=4
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
        start local 1 // com.datastax.oss.protocol.internal.Frame frame
        start local 2 // int frameLength
        start local 3 // int sliceCount
         0: .line 136
            return
        end local 3 // int sliceCount
        end local 2 // int frameLength
        end local 1 // com.datastax.oss.protocol.internal.Frame frame
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;
            0    1     1        frame  Lcom/datastax/oss/protocol/internal/Frame;
            0    1     2  frameLength  I
            0    1     3   sliceCount  I
    MethodParameters:
             Name  Flags
      frame        
      frameLength  
      sliceCount   

  protected void onSegmentFull(com.datastax.oss.protocol.internal.Frame, int, int, int);
    descriptor: (Lcom/datastax/oss/protocol/internal/Frame;III)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=5, args_size=5
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
        start local 1 // com.datastax.oss.protocol.internal.Frame frame
        start local 2 // int frameLength
        start local 3 // int currentPayloadLength
        start local 4 // int currentFrameCount
         0: .line 154
            return
        end local 4 // int currentFrameCount
        end local 3 // int currentPayloadLength
        end local 2 // int frameLength
        end local 1 // com.datastax.oss.protocol.internal.Frame frame
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;
            0    1     1                 frame  Lcom/datastax/oss/protocol/internal/Frame;
            0    1     2           frameLength  I
            0    1     3  currentPayloadLength  I
            0    1     4     currentFrameCount  I
    MethodParameters:
                      Name  Flags
      frame                 
      frameLength           
      currentPayloadLength  
      currentFrameCount     

  protected void onSmallFrameAdded(com.datastax.oss.protocol.internal.Frame, int, int, int);
    descriptor: (Lcom/datastax/oss/protocol/internal/Frame;III)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=5, args_size=5
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
        start local 1 // com.datastax.oss.protocol.internal.Frame frame
        start local 2 // int frameLength
        start local 3 // int currentPayloadLength
        start local 4 // int currentFrameCount
         0: .line 171
            return
        end local 4 // int currentFrameCount
        end local 3 // int currentPayloadLength
        end local 2 // int frameLength
        end local 1 // com.datastax.oss.protocol.internal.Frame frame
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;
            0    1     1                 frame  Lcom/datastax/oss/protocol/internal/Frame;
            0    1     2           frameLength  I
            0    1     3  currentPayloadLength  I
            0    1     4     currentFrameCount  I
    MethodParameters:
                      Name  Flags
      frame                 
      frameLength           
      currentPayloadLength  
      currentFrameCount     

  protected void onLastSegmentFlushed(int, int);
    descriptor: (II)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=3, args_size=3
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
        start local 1 // int currentPayloadLength
        start local 2 // int currentFrameCount
         0: .line 183
            return
        end local 2 // int currentFrameCount
        end local 1 // int currentPayloadLength
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;
            0    1     1  currentPayloadLength  I
            0    1     2     currentFrameCount  I
    MethodParameters:
                      Name  Flags
      currentPayloadLength  
      currentFrameCount     

  private void processCurrentPayload();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
         0: .line 186
            getstatic com.datastax.oss.protocol.internal.SegmentBuilder.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.maxPayloadLength:I
            if_icmple 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.primitiveCodec:Lcom/datastax/oss/protocol/internal/PrimitiveCodec;
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
            invokeinterface com.datastax.oss.protocol.internal.PrimitiveCodec.allocate:(I)Ljava/lang/Object;
            astore 1 /* payload */
        start local 1 // java.lang.Object payload
         2: .line 188
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadFrames:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: com.datastax.oss.protocol.internal.SegmentBuilder java.lang.Object top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.datastax.oss.protocol.internal.Frame
            astore 2 /* frame */
        start local 2 // com.datastax.oss.protocol.internal.Frame frame
         4: .line 192
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.frameCodec:Lcom/datastax/oss/protocol/internal/FrameCodec;
            aload 2 /* frame */
            iconst_m1
            aload 1 /* payload */
            invokevirtual com.datastax.oss.protocol.internal.FrameCodec.encodeInto:(Lcom/datastax/oss/protocol/internal/Frame;ILjava/lang/Object;)V
        end local 2 // com.datastax.oss.protocol.internal.Frame frame
         5: .line 188
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 194
            getstatic com.datastax.oss.protocol.internal.SegmentBuilder.$assertionsDisabled:Z
            ifne 7
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.primitiveCodec:Lcom/datastax/oss/protocol/internal/PrimitiveCodec;
            aload 1 /* payload */
            invokeinterface com.datastax.oss.protocol.internal.PrimitiveCodec.sizeOf:(Ljava/lang/Object;)I
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
            if_icmpeq 7
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         7: .line 195
      StackMap locals: com.datastax.oss.protocol.internal.SegmentBuilder java.lang.Object
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadStates:Ljava/util/List;
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.mergeStates:(Ljava/util/List;)Ljava/lang/Object;
            astore 2 /* state */
        start local 2 // java.lang.Object state
         8: .line 196
            aload 0 /* this */
            new com.datastax.oss.protocol.internal.Segment
            dup
            aload 1 /* payload */
            iconst_1
            invokespecial com.datastax.oss.protocol.internal.Segment.<init>:(Ljava/lang/Object;Z)V
            aload 2 /* state */
            invokevirtual com.datastax.oss.protocol.internal.SegmentBuilder.processSegment:(Lcom/datastax/oss/protocol/internal/Segment;Ljava/lang/Object;)V
         9: .line 197
            return
        end local 2 // java.lang.Object state
        end local 1 // java.lang.Object payload
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;
            2   10     1  payload  TB;
            4    5     2    frame  Lcom/datastax/oss/protocol/internal/Frame;
            8   10     2    state  TStateT;

  private void resetCurrentPayload();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
         0: .line 200
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadFrames:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         1: .line 201
            aload 0 /* this */
            getfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadStates:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         2: .line 202
            aload 0 /* this */
            iconst_0
            putfield com.datastax.oss.protocol.internal.SegmentBuilder.currentPayloadLength:I
         3: .line 203
            return
        end local 0 // com.datastax.oss.protocol.internal.SegmentBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/datastax/oss/protocol/internal/SegmentBuilder<TB;TStateT;>;
}
Signature: <B:Ljava/lang/Object;StateT:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "SegmentBuilder.java"