/**
    * Stores the provided {@code value} to the provided byte {@code buffer} at the specified {@code
    * index} using the provided {@code wordSize} in bytes. Note that only integer and short sizes are
    * supported.
    *
    * @param buffer  the byte buffer to which the value is stored
    * @param wordSize  the number of bytes used to store the provided value
    * @param index  the index to which the value is stored
    * @param value  the value that is stored assuming it does not require more than the specified
    *    number of bytes.
    */
 private static void storeWordInBuffer(ByteBuffer buffer, int wordSize, int index, int value)
 {
     int wordIndex = index * wordSize;
     if (wordSize == SHORT_NUM_BYTES) {
       buffer.putShort(wordIndex, (short) value);
     } else {
       buffer.putInt(wordIndex, value);
     }
 }
   /**
      * Stores a value which is read from the provided {@code objectInput} to the provided byte {@code
      * buffer} at the specified {@code index}.
      *
      * @param objectInput  the object input stream from which the value is read
      * @param wordSize  the number of bytes used to store the value read from the stream
      * @param outputBuffer  the byte buffer to which the value is stored
      * @param index  the index where the value is stored in the buffer
      * @throws IOException  if an error occurred reading from the object input stream
      */
   private static void readExternalWord(ObjectInput objectInput, int wordSize,
 ByteBuffer outputBuffer, int index)
   {
       int wordIndex = index * wordSize;
       if (wordSize == SHORT_NUM_BYTES) {
         outputBuffer.putShort(wordIndex, objectInput.readShort());
       } else {
         outputBuffer.putInt(wordIndex, objectInput.readInt());
       }
   }