+
+ @Override
+ final GeneratedType runtimeJavaType() {
+ return generatedType().orElse(null);
+ }
+
+ @Override
+ final @NonNull R createExternalRuntimeType(final Type type) {
+ verify(type instanceof GeneratedType, "Unexpected type %s", type);
+ return createExternalRuntimeType((GeneratedType) type);
+ }
+
+ abstract @NonNull R createExternalRuntimeType(@NonNull GeneratedType type);
+
+ @Override
+ final R createInternalRuntimeType(final ChildLookup lookup, final S statement, final Type type) {
+ verify(type instanceof GeneratedType, "Unexpected type %s", type);
+ return createInternalRuntimeType(statement, (GeneratedType) type);
+ }
+
+ abstract @NonNull R createInternalRuntimeType(@NonNull S statement, @NonNull GeneratedType type);