@NotNull
  public static <T> DataNode<T> nodeCopy(@NotNull DataNode<T> dataNode) {
    DataNode<T> copy = new DataNode<>();
    copy.key = dataNode.key;
    copy.data = dataNode.data;
    copy.ignored = dataNode.ignored;
    copy.ready = dataNode.ready;

    UserDataHolderBase userData = dataNode.getUserDataHolder();
    if (userData != null) userData.copyCopyableDataTo(copy.getOrCreateUserDataHolder());
    return copy;
  }
@NotNull
  public static <T> DataNode<T> nodeCopy(@NotNull DataNode<T> dataNode)