public static String getUniqueName(@Nullable String preferredName,
                                     @Nullable Scheme parentScheme,
                                     @NotNull Predicate<? super String> nameExistsPredicate) {
    assert preferredName != null || parentScheme != null : "Either preferredName or parentScheme must be non-null";
    String baseName = preferredName != null ? preferredName : parentScheme.getName();
    return getUniqueName(baseName, nameExistsPredicate);
  }
public static String getUniqueName(@Nullable String preferredName,
                                     @Nullable Scheme parentScheme,
                                     @NotNull Predicate<? super String> nameExistsPredicate)