class JsonValueFieldDefinition extends AbstractJsonFieldDefinition<T> {

    public static <T extends JsonValue> JsonValueFieldDefinition<T> newInstance(final CharSequence pointer,
            final Class<T> valueType,
            final Function<JsonValue, Boolean> checkJavaTypeFunction,
            final Function<JsonValue, T> mappingFunction,
            final JsonFieldMarker ... markers) {

        requireNonNull(mappingFunction, "The mapping function must not be null!");

        return new JsonValueFieldDefinition<>(pointer, valueType, checkJavaTypeFunction, mappingFunction, markers);
    }

    private  JsonValueFieldDefinition(final CharSequence pointer,
            final Class<T> valueType,
            final Function<JsonValue, Boolean> checkJavaTypeFunction,
            final Function<JsonValue, T> mappingFunction,
            final JsonFieldMarker ... markers);

}