@NotNull
    N apply(@NotNull Node parent, @NotNull V value, @Nullable Icon icon) {
      N node = map.isEmpty() ? null : map.get(value);
      if (node == null) node = creator.apply(parent, value);
      node.setIcon(icon);
      node.childrenValid = false;
      return node;
    }
@NotNull
    N apply(@NotNull Node parent, @NotNull V value, @Nullable Icon icon)