private void CheckFirstFrame(IMutableDirectBuffer buffer, int offset)
        {
            int frameType       = HeaderFlyweight.HDR_TYPE_DATA;
            int blockTermOffset = buffer.GetInt(offset + DataHeaderFlyweight.TERM_OFFSET_FIELD_OFFSET,
                                                ByteOrder.LittleEndian);
            int blockSessionId =
                buffer.GetInt(offset + DataHeaderFlyweight.SESSION_ID_FIELD_OFFSET, ByteOrder.LittleEndian);
            int blockStreamId =
                buffer.GetInt(offset + DataHeaderFlyweight.STREAM_ID_FIELD_OFFSET, ByteOrder.LittleEndian);
            int blockTermId    = buffer.GetInt(offset + DataHeaderFlyweight.TERM_ID_FIELD_OFFSET, ByteOrder.LittleEndian);
            int blockFrameType = buffer.GetShort(offset + HeaderFlyweight.TYPE_FIELD_OFFSET, ByteOrder.LittleEndian) &
                                 0xFFFF;

            if (blockTermOffset != _termOffset || blockSessionId != SessionId || blockStreamId != StreamId ||
                blockTermId != _termId || frameType != blockFrameType)
            {
                throw new ArgumentException("improperly formatted block:" + " termOffset=" + blockTermOffset +
                                            " (expected=" + _termOffset + ")," + " sessionId=" + blockSessionId +
                                            " (expected=" + SessionId + ")," + " streamId=" + blockStreamId +
                                            " (expected=" + StreamId + ")," + " termId=" + blockTermId +
                                            " (expected=" + _termId + ")," + " frameType=" + blockFrameType +
                                            " (expected=" + frameType + ")");
            }
        }