public static @Nullable DataNode<?> findFirstRecursively(@NotNull DataNode<?> parentNode,
                                                           @NotNull Predicate<? super DataNode<?>> predicate) {
    Queue<DataNode<?>> queue = new LinkedList<>();
    queue.add(parentNode);
    return findInQueue(queue, predicate);
  }
public static @Nullable DataNode<?> findFirstRecursively(@NotNull DataNode<?> parentNode,
                                                           @NotNull Predicate<? super DataNode<?>> predicate)