code: private static <K, V> HamtPMap<K, V>[] insertChild(
        HamtPMap<K, V>[] children, int index, HamtPMap<K, V> child) {
      @SuppressWarnings("unchecked") // only used internally.
      HamtPMap<K, V>[] newChildren = (HamtPMap<K, V>[]) new HamtPMap<?, ?>[children.length + 1];
      newChildren[index] = child;
      System.arraycopy(children, 0, newChildren, 0, index);
      System.arraycopy(children, index, newChildren, index + 1, children.length - index);
      return newChildren;
    }
docs: Returns a new array of children with an additional child inserted at the given index.