String (@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); }