### Question:
CrudUtils { @NonNull public static String[] splitCamelCase(@NonNull final String camelCaseString) { Objects.requireNonNull(camelCaseString, "The parameter 'camelCaseString' must not be null!"); return camelCaseString.split("(?<!(^|[A-Z]))(?=[A-Z])|(?<!^)(?=[A-Z][a-z])"); }  @NonNull static T copyNonNullProperties(@NonNull final S source, @NonNull final T target, String... ignoredProperties); @NonNull static String firstWordOf(@NonNull final String camelCaseString); @NonNull static String toSnakeCase(@NonNull final String camelCaseString); @NonNull static String[] splitCamelCase(@NonNull final String camelCaseString);  }### Answer:
@Test public void splitCamelCase() { assertThat(CrudUtils.splitCamelCase("SplitCamelCase")) .containsExactly("Split", "Camel", "Case"); assertThat(CrudUtils.splitCamelCase("10SplitCamelCase")) .containsExactly("10", "Split", "Camel", "Case"); assertThat(CrudUtils.splitCamelCase("Split10CamelCase")) .containsExactly("Split10", "Camel", "Case"); assertThat(CrudUtils.splitCamelCase("SplitCamelCase10")) .containsExactly("Split", "Camel", "Case10"); }