public static ModelType of(String name, String version) {
        validate(name, version);
        return Builder.create().name(name).version(version).build();
    }
@Test
    public void ensureTypeIsNotBlank() {
        assertThatThrownBy(() -> ModelType.of(null, "1"))
                .isInstanceOf(IllegalArgumentException.class)
                .hasMessage("Type name must not be blank");
        assertThatThrownBy(() -> ModelType.of("", "1"))
                .isInstanceOf(IllegalArgumentException.class)
                .hasMessage("Type name must not be blank");
        assertThatThrownBy(() -> ModelType.of("    \n\r\t", "1"))
                .isInstanceOf(IllegalArgumentException.class)
                .hasMessage("Type name must not be blank");

        assertThatThrownBy(() -> ModelType.of("foo", null))
                .isInstanceOf(IllegalArgumentException.class)
                .hasMessage("Type version must not be blank");
        assertThatThrownBy(() -> ModelType.of("foo", ""))
                .isInstanceOf(IllegalArgumentException.class)
                .hasMessage("Type version must not be blank");
        assertThatThrownBy(() -> ModelType.of("foo", "    \n\r\t"))
                .isInstanceOf(IllegalArgumentException.class)
                .hasMessage("Type version must not be blank");
    }