code: private int serializeRemoval(@NonNull TableKey tableKey, byte[] target, int targetOffset) {
          val key = tableKey.getKey();
          Preconditions.checkArgument(key.getLength() <= MAX_KEY_LENGTH, "Key too large.");
          int serializationLength = getRemovalLength(tableKey);
          Preconditions.checkElementIndex(targetOffset + serializationLength - 1, target.length, "serialization does not fit in target buffer");
  
          // Serialize Header. Not caring about explicit versions since we do not reinsert removals upon compaction.
          targetOffset = writeHeader(target, targetOffset, key.getLength(), NO_VALUE, TableKey.NO_VERSION);
  
          // Key
          System.arraycopy(key.array(), key.arrayOffset(), target, targetOffset, key.getLength());
          return targetOffset + key.getLength();
      }
docs: Serializes the given {@link TableKey} for removal into the given array.
  
  @param tableKey     The {@link TableKey} to serialize.
  @param target       The byte array to serialize to.
  @param targetOffset The first offset within the byte array to serialize at.
  @return The first offset in the given byte array after the serialization.