code: protected void unsigned16(final int size, final int value) throws IOException {
          requireValidSizeUnsigned16(size);
          final int quotient = size / Byte.SIZE;
          final int remainder = size % Byte.SIZE;
          if (remainder > 0) {
              unsigned8(remainder, value >> (quotient * Byte.SIZE));
          }
          for (int i = quotient - 1; i >= 0; i--) {
              unsigned8(Byte.SIZE, value >> (Byte.SIZE * i));
          }
      }
docs: Writes an unsigned value whose size is {@value Short#SIZE} in maximum.
  
  @param size  the number of lower bits to write; between {@code 1} and {@value Short#SIZE}, both inclusive.
  @param value the value to write
  @throws IOException if an I/O error occurs