docs: MutableNode splitKey(final int prefixLength, final byte nextByte) {
          final byte[] keyBytes = keySequence.getBytesUnsafe();
          final ByteIterable prefixKey;
          if (prefixLength == 0) {
              prefixKey = ByteIterable.EMPTY;
          } else if (prefixLength == 1) {
              prefixKey = SingleByteIterable.getIterable(keyBytes[0]);
          } else {
              prefixKey = new ArrayByteIterable(keyBytes, prefixLength);
          }
          final MutableNode prefix = new MutableNode(prefixKey);
          final int suffixLength = keySequence.getLength() - prefixLength - 1;
          final ByteIterable suffixKey;
          if (suffixLength == 0) {
              suffixKey = ByteIterable.EMPTY;
          } else if (suffixLength == 1) {
              suffixKey = SingleByteIterable.getIterable(keyBytes[prefixLength + 1]);
          } else {
              suffixKey = keySequence.subIterable(prefixLength + 1, suffixLength);
          }
          final MutableNode suffix = new MutableNode(suffixKey, value,
                  // copy children of this node to the suffix one
                  children);
          prefix.setChild(nextByte, suffix);
          return prefix;
      }