protected void decodeTags() {
   current.tagsLength = ByteBuff.readCompressedInt(currentBuffer);
   if (tagCompressionContext != null) {
     if (current.uncompressTags) {
       // Tag compression is been used. uncompress it into tagsBuffer
       current.ensureSpaceForTags();
       try {
         current.tagsCompressedLength =
             tagCompressionContext.uncompressTags(
                 currentBuffer, current.tagsBuffer, 0, current.tagsLength);
       } catch (IOException e) {
         throw new RuntimeException("Exception while uncompressing tags", e);
       }
     } else {
       currentBuffer.skip(current.tagsCompressedLength);
       current.uncompressTags = true; // Reset this.
     }
     current.tagsOffset = -1;
   } else {
     // When tag compress is not used, let us not do copying of tags bytes into tagsBuffer.
     // Just mark the tags Offset so as to create the KV buffer later in getKeyValueBuffer()
     current.tagsOffset = currentBuffer.position();
     currentBuffer.skip(current.tagsLength);
   }
 }