You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2024/01/30 16:46:18 UTC

(causeway) 05/08: CAUSEWAY-3676: adds mutation support for actions

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch CAUSEWAY-3676
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 9cfbd49bcf31b038483de07ddd517deb26acaa87
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Jan 30 15:15:40 2024 +0000

    CAUSEWAY-3676: adds mutation support for actions
---
 .../core/config/CausewayConfiguration.java         |    9 +
 .../viewer/graphql/applib/types/TypeMapper.java    |    2 +-
 .../viewer/graphql/model/context/Context.java      |    2 +
 .../viewer/graphql/model/domain/GqlvAction.java    |   11 +-
 ...ActionInvokeMutating.java => GqlvMutation.java} |   51 +-
 .../graphql/model/types/TypeMapperDefault.java     |    2 +-
 viewers/graphql/test/pom.xml                       |   33 +
 .../viewer/test/e2e/Abstract_IntegTest.java        |   16 +-
 ...g_IntegTest.find_depthead_and_change_name._.gql |    7 -
 ...est.find_depthead_and_change_name.approved.json |    0
 ...dmin_IntegTest.action_with_disabled_param._.gql |    0
 ...egTest.action_with_disabled_param.approved.json |    0
 .../Admin_IntegTest.action_with_hidden_param._.gql |    0
 ...ntegTest.action_with_hidden_param.approved.json |    0
 .../{ => query}/Admin_IntegTest.admin_action._.gql |    0
 .../Admin_IntegTest.admin_action.approved.json     |    0
 .../test/e2e/{ => query}/Admin_IntegTest.java      |    4 +-
 .../Admin_IntegTest.other_admin_action._.gql       |    0
 ...dmin_IntegTest.other_admin_action.approved.json |    0
 .../Calculator_IntegTest.add_big_decimals._.gql    |    0
 ...ulator_IntegTest.add_big_decimals.approved.json |    0
 .../Calculator_IntegTest.add_big_integers._.gql    |    0
 ...ulator_IntegTest.add_big_integers.approved.json |    0
 .../Calculator_IntegTest.add_double_wrappers._.gql |    0
 ...tor_IntegTest.add_double_wrappers.approved.json |    0
 .../Calculator_IntegTest.add_doubles._.gql         |    0
 .../Calculator_IntegTest.add_doubles.approved.json |    0
 .../Calculator_IntegTest.add_float_wrappers._.gql  |    0
 ...ator_IntegTest.add_float_wrappers.approved.json |    0
 .../Calculator_IntegTest.add_floats._.gql          |    0
 .../Calculator_IntegTest.add_floats.approved.json  |    0
 ...Calculator_IntegTest.add_integer_wrappers._.gql |    0
 ...or_IntegTest.add_integer_wrappers.approved.json |    0
 .../Calculator_IntegTest.add_integers._.gql        |    0
 ...Calculator_IntegTest.add_integers.approved.json |    0
 .../Calculator_IntegTest.boolean_and_1._.gql       |    0
 ...alculator_IntegTest.boolean_and_1.approved.json |    0
 .../Calculator_IntegTest.boolean_and_2._.gql       |    0
 ...alculator_IntegTest.boolean_and_2.approved.json |    0
 .../Calculator_IntegTest.boolean_not._.gql         |    0
 .../Calculator_IntegTest.boolean_not.approved.json |    0
 .../Calculator_IntegTest.boolean_or_1._.gql        |    0
 ...Calculator_IntegTest.boolean_or_1.approved.json |    0
 .../Calculator_IntegTest.boolean_or_2._.gql        |    0
 ...Calculator_IntegTest.boolean_or_2.approved.json |    0
 .../{ => query}/Calculator_IntegTest.concat._.gql  |    0
 .../Calculator_IntegTest.concat.approved.json      |    0
 .../test/e2e/{ => query}/Calculator_IntegTest.java |    4 +-
 .../Calculator_IntegTest.next_month._.gql          |    0
 .../Calculator_IntegTest.next_month.approved.json  |    0
 .../Calculator_IntegTest.plus_days._.gql           |    0
 .../Calculator_IntegTest.plus_days.approved.json   |    0
 .../Calculator_IntegTest.plus_joda_days._.gql      |    0
 ...lculator_IntegTest.plus_joda_days.approved.json |    0
 .../Department_IntegTest.create_department._.gql   |    0
 ...tment_IntegTest.create_department.approved.json |    0
 ...est.create_department_name_param_disabled._.gql |    0
 ...te_department_name_param_disabled.approved.json |    0
 ...Department_IntegTest.find_all_departments._.gql |    0
 ...nt_IntegTest.find_all_departments.approved.json |    0
 ..._department_and_add_staff_members._.choices.gql |    0
 ...d_department_and_add_staff_members._.invoke.gql |    0
 ..._department_and_add_staff_members.approved.json |    0
 ...d_department_and_change_head_autocomplete._.gql |    0
 ...ment_and_change_head_autocomplete.approved.json |    0
 ...t.find_department_and_change_head_default._.gql |    0
 ...epartment_and_change_head_default.approved.json |    0
 ...t.find_department_and_change_name_invalid._.gql |    0
 ...epartment_and_change_name_invalid.approved.json |    0
 ...ind_department_and_edit_head_autocomplete._.gql |    0
 ...rtment_and_edit_head_autocomplete.approved.json |    0
 ..._and_edit_head_autocomplete_none_matching._.gql |    0
 ...t_head_autocomplete_none_matching.approved.json |    0
 ...epartment_and_remove_staff_member_choices._.gql |    0
 ...t_and_remove_staff_member_choices.approved.json |    0
 ...artment_IntegTest.find_department_by_name._.gql |    0
 ...IntegTest.find_department_by_name.approved.json |    0
 .../test/e2e/{ => query}/Department_IntegTest.java |    4 +-
 ...d_IntegTest.find_depthead_and_change_name._.gql |    0
 ...est.find_depthead_and_change_name.approved.json |    0
 ...est.find_depthead_and_change_name_invalid._.gql |    0
 ..._depthead_and_change_name_invalid.approved.json |    0
 ...d_depthead_and_change_name_invoke_invalid._.gql |    0
 ...ad_and_change_name_invoke_invalid.approved.json |    0
 .../DeptHead_IntegTest.find_depthead_by_name._.gql |    0
 ...d_IntegTest.find_depthead_by_name.approved.json |    0
 .../test/e2e/{ => query}/DeptHead_IntegTest.java   |    4 +-
 ...gTest.create_staff_member_with_department._.gql |    0
 ...eate_staff_member_with_department.approved.json |    0
 ...egTest.find_staff_member_by_name_and_edit._.gql |    0
 ...ind_staff_member_by_name_and_edit.approved.json |    0
 ...aff_member_by_name_and_edit_grade_choices._.gql |    0
 ...er_by_name_and_edit_grade_choices.approved.json |    0
 .../test/e2e/{ => query}/Staff_IntegTest.java      |    4 +-
 .../Staff_IntegTest.list_all_staff_members._.gql   |    0
 ..._IntegTest.list_all_staff_members.approved.json |    0
 ..._IntegTest.staff_member_name_edit_invalid._.gql |    0
 ...st.staff_member_name_edit_invalid.approved.json |    0
 ...taff_IntegTest.staff_member_name_validate._.gql |    0
 ...egTest.staff_member_name_validate.approved.json |    0
 ...Mutating_IntegTest.change_department_name._.gql |    7 +
 ..._IntegTest.change_department_name.approved.json |    9 +
 ...tHeadMutating_IntegTest.create_department._.gql |    7 +
 ...ating_IntegTest.create_department.approved.json |    9 +
 .../DeptHeadMutating_IntegTest.java                |   36 +-
 ...java => AbstractGqlSchema_print_IntegTest.java} |   12 +-
 .../GqlSchemaQuery_print_IntegTest.java}           |   46 +-
 ...qlSchemaQueryAndMutations_print_IntegTest.java} |   51 +-
 .../src/test/resources/application-test.properties |   25 +
 viewers/graphql/test/src/test/resources/schema.gql | 1658 +++-----------------
 .../integration/GraphQlSourceForCauseway.java      |    6 +-
 .../viewer/toplevel/GqlvTopLevelMutation.java      |   69 +-
 112 files changed, 486 insertions(+), 1602 deletions(-)

diff --git a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
index ed0964ce86..f10e28c091 100644
--- a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
+++ b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
@@ -2399,6 +2399,15 @@ public class CausewayConfiguration {
                 private String fieldName = "_gqlv_meta";
             }
 
+            private final Mutation mutation = new Mutation();
+            @Data
+            public static class Mutation {
+                /**
+                 * The name of the synthetic argument of mutators representing the target domain object.
+                 */
+                private String targetArgName = "_gqlv_target";
+            }
+
             private final TypeMapper typeMapper = new TypeMapper();
             @Data
             public static class TypeMapper {
diff --git a/viewers/graphql/applib/src/main/java/org/apache/causeway/viewer/graphql/applib/types/TypeMapper.java b/viewers/graphql/applib/src/main/java/org/apache/causeway/viewer/graphql/applib/types/TypeMapper.java
index 7cd932cd6e..895e2edd19 100644
--- a/viewers/graphql/applib/src/main/java/org/apache/causeway/viewer/graphql/applib/types/TypeMapper.java
+++ b/viewers/graphql/applib/src/main/java/org/apache/causeway/viewer/graphql/applib/types/TypeMapper.java
@@ -64,7 +64,7 @@ public interface TypeMapper {
             final OneToOneFeature oneToOneFeature,
             final InputContext inputContext);
 
-    GraphQLList inputTypeFor(final OneToManyActionParameter oneToManyActionParameter, final InputContext inputContextUnused);
+    GraphQLList inputTypeFor(final OneToManyActionParameter oneToManyActionParameter);
 
     GraphQLInputType inputTypeFor(final ObjectSpecification elementType);
 
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java
index 14c4c1089d..785f245984 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/context/Context.java
@@ -21,6 +21,7 @@ package org.apache.causeway.viewer.graphql.model.context;
 import graphql.schema.GraphQLCodeRegistry;
 
 import org.apache.causeway.applib.services.bookmark.BookmarkService;
+import org.apache.causeway.applib.services.registry.ServiceRegistry;
 import org.apache.causeway.commons.collections.ImmutableEnumSet;
 import org.apache.causeway.core.config.CausewayConfiguration;
 import org.apache.causeway.core.config.environment.CausewaySystemEnvironment;
@@ -36,6 +37,7 @@ public class Context {
     public final BookmarkService bookmarkService;
     public final SpecificationLoader specificationLoader;
     public final TypeMapper typeMapper;
+    public final ServiceRegistry serviceRegistry;
     public final CausewayConfiguration causewayConfiguration;
     public final CausewaySystemEnvironment causewaySystemEnvironment;
 
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
index 42b026c4cc..8308b47c55 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvAction.java
@@ -100,6 +100,13 @@ public class GqlvAction
         return argumentManagedObjectsFor(dataFetchingEnvironment, objectAction, context);
     }
 
+    /**
+     *
+     * @param dataFetchingEnvironment
+     * @param objectAction
+     * @param context
+     * @return
+     */
     public static Can<ManagedObject> argumentManagedObjectsFor(
             final DataFetchingEnvironment dataFetchingEnvironment,
             final ObjectAction objectAction,
@@ -162,7 +169,7 @@ public class GqlvAction
     }
 
 
-    private static Optional<Object> asPojo(
+    static Optional<Object> asPojo(
             final ObjectSpecification elementType,
             final Object argumentValueObj,
             final BookmarkService bookmarkService) {
@@ -215,7 +222,7 @@ public class GqlvAction
             final TypeMapper.InputContext inputContext) {
         return GraphQLArgument.newArgument()
                 .name(oneToManyActionParameter.getId())
-                .type(context.typeMapper.inputTypeFor(oneToManyActionParameter, inputContext))
+                .type(context.typeMapper.inputTypeFor(oneToManyActionParameter))
                 .build();
     }
 
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeMutating.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutation.java
similarity index 80%
rename from viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeMutating.java
rename to viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutation.java
index bac4dc7b77..d6f5298cef 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvActionInvokeMutating.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvMutation.java
@@ -35,7 +35,6 @@ import org.apache.causeway.viewer.graphql.applib.types.TypeMapper;
 import org.apache.causeway.viewer.graphql.model.context.Context;
 import org.apache.causeway.viewer.graphql.model.exceptions.DisabledException;
 import org.apache.causeway.viewer.graphql.model.exceptions.HiddenException;
-import org.apache.causeway.viewer.graphql.model.fetcher.BookmarkedPojo;
 import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectActionProvider;
 import org.apache.causeway.viewer.graphql.model.mmproviders.ObjectSpecificationProvider;
 
@@ -44,24 +43,28 @@ import org.springframework.lang.Nullable;
 import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
 
 @Log4j2
-public class GqlvActionInvokeMutating {
+public class GqlvMutation {
 
     private final Holder holder;
     private final Context context;
     private final GraphQLFieldDefinition field;
+    private String argumentName;
 
-    public GqlvActionInvokeMutating(
+    public GqlvMutation(
             final Holder holder,
             final Context context) {
         this.holder = holder;
         this.context = context;
 
+        this.argumentName = context.causewayConfiguration.getViewer().getGraphql().getMutation().getTargetArgName();
+
+        val objectSpec = holder.getObjectSpecification();
         val objectAction = holder.getObjectAction();
 
         GraphQLOutputType type = typeFor(objectAction);
         if (type != null) {
             val fieldBuilder = newFieldDefinition()
-                    .name(fieldNameForSemanticsOf(objectAction))
+                    .name(fieldName(objectSpec, objectAction))
                     .type(type);
             holder.addGqlArguments(fieldBuilder, TypeMapper.InputContext.INVOKE);
             this.field = holder.addField(fieldBuilder.build());
@@ -70,20 +73,8 @@ public class GqlvActionInvokeMutating {
         }
     }
 
-    private static String fieldNameForSemanticsOf(ObjectAction objectAction) {
-        switch (objectAction.getSemantics()) {
-            case SAFE_AND_REQUEST_CACHEABLE:
-            case SAFE:
-                return "invoke";
-            case IDEMPOTENT:
-            case IDEMPOTENT_ARE_YOU_SURE:
-                return "invokeIdempotent";
-            case NON_IDEMPOTENT:
-            case NON_IDEMPOTENT_ARE_YOU_SURE:
-            case NOT_SPECIFIED:
-            default:
-                return "invokeNonIdempotent";
-        }
+    private static String fieldName(ObjectSpecification objectSpecification, ObjectAction objectAction) {
+        return TypeNames.objectTypeNameFor(objectSpecification) + "__" + objectAction.getId();
     }
 
     @Nullable
@@ -126,15 +117,21 @@ public class GqlvActionInvokeMutating {
 
     private Object invoke(final DataFetchingEnvironment dataFetchingEnvironment) {
 
-        val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
+        val objectSpecification = holder.getObjectSpecification();
+        val objectAction = holder.getObjectAction();
 
-        val objectSpecification = context.specificationLoader.loadSpecification(sourcePojo.getClass());
-        if (objectSpecification == null) {
-            return null;
+        val isService = objectSpecification.getBeanSort().isManagedBeanContributing();
+
+        Object sourcePojo;
+        if (isService) {
+            sourcePojo = context.serviceRegistry.lookupServiceElseFail(objectSpecification.getCorrespondingClass());
+        } else {
+            Object target = dataFetchingEnvironment.getArgument(argumentName);
+            sourcePojo = GqlvAction.asPojo(objectSpecification, target, context.bookmarkService)
+                    .orElseThrow(); // TODO: better error handling if no such object found.
         }
 
-        val objectAction = holder.getObjectAction();
-        val managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo);
+        ManagedObject managedObject = ManagedObject.adaptSingular(objectSpecification, sourcePojo);
 
         val visibleConsent = objectAction.isVisible(managedObject, InteractionInitiatedBy.USER, Where.ANYWHERE);
         if (visibleConsent.isVetoed()) {
@@ -168,8 +165,8 @@ public class GqlvActionInvokeMutating {
                 final TypeMapper.InputContext inputContext);
 
         Can<ManagedObject> argumentManagedObjectsFor(
-                DataFetchingEnvironment dataFetchingEnvironment,
-                ObjectAction objectAction,
-                BookmarkService bookmarkService);
+                final DataFetchingEnvironment dataFetchingEnvironment,
+                final ObjectAction objectAction,
+                final BookmarkService bookmarkService);
     }
 }
diff --git a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapperDefault.java b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapperDefault.java
index c102b1cb51..c4339f3047 100644
--- a/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapperDefault.java
+++ b/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapperDefault.java
@@ -199,7 +199,7 @@ public class TypeMapperDefault implements TypeMapper {
     }
 
     @Override
-    public GraphQLList inputTypeFor(final OneToManyActionParameter oneToManyActionParameter, final InputContext inputContextUnused){
+    public GraphQLList inputTypeFor(final OneToManyActionParameter oneToManyActionParameter){
         ObjectSpecification elementType = oneToManyActionParameter.getElementType();
         return GraphQLList.list(inputTypeFor(elementType));
     }
diff --git a/viewers/graphql/test/pom.xml b/viewers/graphql/test/pom.xml
index 5aa6099832..7efc32f6da 100644
--- a/viewers/graphql/test/pom.xml
+++ b/viewers/graphql/test/pom.xml
@@ -39,8 +39,28 @@
         <maven.deploy.skip>true</maven.deploy.skip>
 
         <java.version>17</java.version>
+
+        <datasource-proxy-spring-boot-starter.version>1.8.1</datasource-proxy-spring-boot-starter.version>
+        <sql-formatter.version>2.0.4</sql-formatter.version>
+
     </properties>
 
+    <dependencyManagement>
+        <dependencies>
+
+            <dependency>
+                <groupId>com.github.gavlyukovskiy</groupId>
+                <artifactId>datasource-proxy-spring-boot-starter</artifactId>
+                <version>${datasource-proxy-spring-boot-starter.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.github.vertical-blank</groupId>
+                <artifactId>sql-formatter</artifactId>
+                <version>${sql-formatter.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
     <build>
 		<testResources>
 			<testResource>
@@ -133,6 +153,7 @@
         </dependency>
 
 
+
         <dependency>
             <groupId>org.springframework.graphql</groupId>
             <artifactId>spring-graphql-test</artifactId>
@@ -140,6 +161,18 @@
             <scope>test</scope>
         </dependency>
 
+        <dependency>
+            <groupId>com.github.gavlyukovskiy</groupId>
+            <artifactId>datasource-proxy-spring-boot-starter</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.github.vertical-blank</groupId>
+            <artifactId>sql-formatter</artifactId>
+            <scope>test</scope>
+        </dependency>
+
     </dependencies>
 
 
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java
index ec9c934083..a6e2548cdf 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Abstract_IntegTest.java
@@ -43,13 +43,13 @@ import lombok.val;
 
 public abstract class Abstract_IntegTest extends CausewayViewerGraphqlTestModuleIntegTestAbstract {
 
-    @Inject DepartmentRepository departmentRepository;
-    @Inject DeptHeadRepository deptHeadRepository;
-    @Inject StaffMemberRepository staffMemberRepository;
-    @Inject BookmarkService bookmarkService;
+    @Inject protected DepartmentRepository departmentRepository;
+    @Inject protected DeptHeadRepository deptHeadRepository;
+    @Inject protected StaffMemberRepository staffMemberRepository;
+    @Inject protected BookmarkService bookmarkService;
 
     @BeforeEach
-    void beforeEach(){
+    protected void beforeEach(){
         transactionService.runTransactional(Propagation.REQUIRED, () -> {
 
             // departments
@@ -77,13 +77,13 @@ public abstract class Abstract_IntegTest extends CausewayViewerGraphqlTestModule
         });
     }
 
-    private Blob asBlob(String fileName) {
+    protected Blob asBlob(String fileName) {
         val bytes = toBytes(fileName);
         return new Blob(fileName, "application/pdf", bytes);
     }
 
     @AfterEach
-    void afterEach(){
+    protected void afterEach(){
         transactionService.runTransactional(Propagation.REQUIRED, () -> {
             staffMemberRepository.removeAll();
             deptHeadRepository.findAll().forEach(x -> x.setDepartment(null));
@@ -95,7 +95,7 @@ public abstract class Abstract_IntegTest extends CausewayViewerGraphqlTestModule
 
     @SneakyThrows
     private byte[] toBytes(String fileName){
-        InputStream inputStream = new ClassPathResource(fileName, getClass()).getInputStream();
+        InputStream inputStream = new ClassPathResource(fileName, Abstract_IntegTest.class).getInputStream();
         ByteArrayOutputStream buffer = new ByteArrayOutputStream();
 
         int nRead;
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.find_depthead_and_change_name._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.find_depthead_and_change_name._.gql
deleted file mode 100644
index 1c79eb6819..0000000000
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.find_depthead_and_change_name._.gql
+++ /dev/null
@@ -1,7 +0,0 @@
-mutation {
-  invokeIdempotent(newName: "Foo", target: {id: 123}) {
-    name {
-      get
-    }
-  }
-}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.find_depthead_and_change_name.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.find_depthead_and_change_name.approved.json
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.action_with_disabled_param._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.action_with_disabled_param._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.action_with_disabled_param._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.action_with_disabled_param._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.action_with_disabled_param.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.action_with_disabled_param.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.action_with_disabled_param.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.action_with_disabled_param.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.action_with_hidden_param._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.action_with_hidden_param._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.action_with_hidden_param._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.action_with_hidden_param._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.action_with_hidden_param.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.action_with_hidden_param.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.action_with_hidden_param.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.action_with_hidden_param.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.admin_action._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.admin_action._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.admin_action._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.admin_action._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.admin_action.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.admin_action.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.admin_action.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.admin_action.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.java
similarity index 93%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.java
index 20ca803741..f36d4afdef 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.java
@@ -16,7 +16,9 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.e2e;
+package org.apache.causeway.viewer.graphql.viewer.test.e2e.query;
+
+import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
 
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.other_admin_action._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.other_admin_action._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.other_admin_action._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.other_admin_action._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.other_admin_action.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.other_admin_action.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Admin_IntegTest.other_admin_action.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Admin_IntegTest.other_admin_action.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_big_decimals._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_big_decimals._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_big_decimals._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_big_decimals._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_big_decimals.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_big_decimals.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_big_decimals.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_big_decimals.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_big_integers._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_big_integers._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_big_integers._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_big_integers._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_big_integers.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_big_integers.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_big_integers.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_big_integers.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_double_wrappers._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_double_wrappers._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_double_wrappers._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_double_wrappers._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_double_wrappers.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_double_wrappers.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_double_wrappers.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_double_wrappers.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_doubles._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_doubles._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_doubles._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_doubles._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_doubles.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_doubles.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_doubles.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_doubles.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_float_wrappers._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_float_wrappers._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_float_wrappers._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_float_wrappers._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_float_wrappers.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_float_wrappers.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_float_wrappers.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_float_wrappers.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_floats._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_floats._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_floats._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_floats._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_floats.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_floats.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_floats.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_floats.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_integer_wrappers._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_integer_wrappers._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_integer_wrappers._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_integer_wrappers._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_integer_wrappers.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_integer_wrappers.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_integer_wrappers.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_integer_wrappers.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_integers._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_integers._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_integers._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_integers._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_integers.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_integers.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.add_integers.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.add_integers.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_and_1._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_and_1._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_and_1._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_and_1._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_and_1.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_and_1.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_and_1.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_and_1.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_and_2._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_and_2._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_and_2._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_and_2._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_and_2.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_and_2.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_and_2.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_and_2.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_not._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_not._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_not._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_not._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_not.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_not.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_not.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_not.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_or_1._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_or_1._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_or_1._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_or_1._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_or_1.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_or_1.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_or_1.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_or_1.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_or_2._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_or_2._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_or_2._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_or_2._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_or_2.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_or_2.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.boolean_or_2.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.boolean_or_2.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.concat._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.concat._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.concat._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.concat._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.concat.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.concat.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.concat.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.concat.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.java
similarity index 96%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.java
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.java
index 90a5456d77..621f691416 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.java
@@ -16,7 +16,9 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.e2e;
+package org.apache.causeway.viewer.graphql.viewer.test.e2e.query;
+
+import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
 
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.next_month._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.next_month._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.next_month._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.next_month._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.next_month.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.next_month.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.next_month.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.next_month.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.plus_days._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.plus_days._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.plus_days._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.plus_days._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.plus_days.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.plus_days.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.plus_days.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.plus_days.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.plus_joda_days._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.plus_joda_days._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.plus_joda_days._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.plus_joda_days._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.plus_joda_days.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.plus_joda_days.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Calculator_IntegTest.plus_joda_days.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Calculator_IntegTest.plus_joda_days.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.create_department._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.create_department._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.create_department._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.create_department._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.create_department.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.create_department.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.create_department.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.create_department.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.create_department_name_param_disabled._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.create_department_name_param_disabled._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.create_department_name_param_disabled._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.create_department_name_param_disabled._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.create_department_name_param_disabled.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.create_department_name_param_disabled.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.create_department_name_param_disabled.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.create_department_name_param_disabled.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_all_departments._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_all_departments._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_all_departments._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_all_departments._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_all_departments.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_all_departments.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_all_departments.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_all_departments.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_add_staff_members._.choices.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_add_staff_members._.choices.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_add_staff_members._.choices.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_add_staff_members._.choices.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_add_staff_members._.invoke.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_add_staff_members._.invoke.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_add_staff_members._.invoke.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_add_staff_members._.invoke.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_add_staff_members.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_add_staff_members.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_add_staff_members.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_add_staff_members.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_head_autocomplete._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_head_autocomplete._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_head_autocomplete._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_head_autocomplete._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_head_autocomplete.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_head_autocomplete.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_head_autocomplete.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_head_autocomplete.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_head_default._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_head_default._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_head_default._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_head_default._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_head_default.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_head_default.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_head_default.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_head_default.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_name_invalid._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_name_invalid._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_name_invalid._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_name_invalid._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_name_invalid.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_name_invalid.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_change_name_invalid.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_change_name_invalid.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_edit_head_autocomplete._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_edit_head_autocomplete._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_edit_head_autocomplete._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_edit_head_autocomplete._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_edit_head_autocomplete.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_edit_head_autocomplete.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_edit_head_autocomplete.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_edit_head_autocomplete.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_edit_head_autocomplete_none_matching._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_edit_head_autocomplete_none_matching._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_edit_head_autocomplete_none_matching._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_edit_head_autocomplete_none_matching._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_edit_head_autocomplete_none_matching.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_edit_head_autocomplete_none_matching.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_edit_head_autocomplete_none_matching.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_edit_head_autocomplete_none_matching.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_remove_staff_member_choices._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_remove_staff_member_choices._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_remove_staff_member_choices._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_remove_staff_member_choices._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_remove_staff_member_choices.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_remove_staff_member_choices.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_and_remove_staff_member_choices.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_and_remove_staff_member_choices.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_by_name._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_by_name._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_by_name._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_by_name._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_by_name.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_by_name.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.find_department_by_name.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.find_department_by_name.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.java
similarity index 97%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.java
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.java
index b24e66a06d..e98ad612a1 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Department_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Department_IntegTest.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.e2e;
+package org.apache.causeway.viewer.graphql.viewer.test.e2e.query;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -24,6 +24,8 @@ import java.util.List;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
+
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
 import org.approvaltests.reporters.UseReporter;
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name_invalid._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name_invalid._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name_invalid._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name_invalid._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name_invalid.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name_invalid.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name_invalid.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name_invalid.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name_invoke_invalid._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name_invoke_invalid._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name_invoke_invalid._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name_invoke_invalid._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name_invoke_invalid.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name_invoke_invalid.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_and_change_name_invoke_invalid.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_and_change_name_invoke_invalid.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_by_name._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_by_name._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_by_name._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_by_name._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_by_name.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_by_name.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.find_depthead_by_name.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.find_depthead_by_name.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.java
similarity index 94%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.java
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.java
index 1ee91e96e9..862cb24480 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHead_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/DeptHead_IntegTest.java
@@ -16,7 +16,9 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.e2e;
+package org.apache.causeway.viewer.graphql.viewer.test.e2e.query;
+
+import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
 
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.create_staff_member_with_department._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.create_staff_member_with_department._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.create_staff_member_with_department._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.create_staff_member_with_department._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.create_staff_member_with_department.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.create_staff_member_with_department.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.create_staff_member_with_department.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.create_staff_member_with_department.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.find_staff_member_by_name_and_edit._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.find_staff_member_by_name_and_edit._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.find_staff_member_by_name_and_edit._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.find_staff_member_by_name_and_edit._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.find_staff_member_by_name_and_edit.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.find_staff_member_by_name_and_edit.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.find_staff_member_by_name_and_edit.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.find_staff_member_by_name_and_edit.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.find_staff_member_by_name_and_edit_grade_choices._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.find_staff_member_by_name_and_edit_grade_choices._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.find_staff_member_by_name_and_edit_grade_choices._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.find_staff_member_by_name_and_edit_grade_choices._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.find_staff_member_by_name_and_edit_grade_choices.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.find_staff_member_by_name_and_edit_grade_choices.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.find_staff_member_by_name_and_edit_grade_choices.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.find_staff_member_by_name_and_edit_grade_choices.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.java
similarity index 96%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.java
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.java
index 3eb3f513c0..e4b1838681 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.java
@@ -16,10 +16,12 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.e2e;
+package org.apache.causeway.viewer.graphql.viewer.test.e2e.query;
 
 import java.util.Optional;
 
+import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
+
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
 import org.approvaltests.reporters.UseReporter;
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.list_all_staff_members._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.list_all_staff_members._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.list_all_staff_members._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.list_all_staff_members._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.list_all_staff_members.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.list_all_staff_members.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.list_all_staff_members.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.list_all_staff_members.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.staff_member_name_edit_invalid._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.staff_member_name_edit_invalid._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.staff_member_name_edit_invalid._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.staff_member_name_edit_invalid._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.staff_member_name_edit_invalid.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.staff_member_name_edit_invalid.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.staff_member_name_edit_invalid.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.staff_member_name_edit_invalid.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.staff_member_name_validate._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.staff_member_name_validate._.gql
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.staff_member_name_validate._.gql
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.staff_member_name_validate._.gql
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.staff_member_name_validate.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.staff_member_name_validate.approved.json
similarity index 100%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Staff_IntegTest.staff_member_name_validate.approved.json
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query/Staff_IntegTest.staff_member_name_validate.approved.json
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.change_department_name._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.change_department_name._.gql
new file mode 100644
index 0000000000..45e4992450
--- /dev/null
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.change_department_name._.gql
@@ -0,0 +1,7 @@
+mutation {
+  university_dept_Department__changeName(_gqlv_target: {id : "$departmentId"}, newName: "Classics and Ancient History") {
+    name {
+      get
+    }
+  }
+}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.change_department_name.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.change_department_name.approved.json
new file mode 100644
index 0000000000..7011f581a0
--- /dev/null
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.change_department_name.approved.json
@@ -0,0 +1,9 @@
+{
+  "data" : {
+    "university_dept_Department__changeName" : {
+      "name" : {
+        "get" : "Classics and Ancient History"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.create_department._.gql b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.create_department._.gql
new file mode 100644
index 0000000000..a2dc6052c2
--- /dev/null
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.create_department._.gql
@@ -0,0 +1,7 @@
+mutation {
+  university_dept_Departments__createDepartment(name: "Geophysics", deptHead: null) {
+    name {
+      get
+    }
+  }
+}
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.create_department.approved.json b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.create_department.approved.json
new file mode 100644
index 0000000000..038ac243e2
--- /dev/null
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.create_department.approved.json
@@ -0,0 +1,9 @@
+{
+  "data" : {
+    "university_dept_Departments__createDepartment" : {
+      "name" : {
+        "get" : "Geophysics"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.java
similarity index 65%
copy from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.java
copy to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.java
index 4715c571c3..195dca869b 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/query_and_mutations/DeptHeadMutating_IntegTest.java
@@ -16,11 +16,9 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.e2e;
+package org.apache.causeway.viewer.graphql.viewer.test.e2e.query_and_mutations;
 
-import org.apache.causeway.viewer.graphql.viewer.test.CausewayViewerGraphqlTestModuleIntegTestAbstract;
-
-import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.DeptHead;
+import java.util.Optional;
 
 import org.approvaltests.Approvals;
 import org.approvaltests.reporters.DiffReporter;
@@ -32,9 +30,13 @@ import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.transaction.annotation.Propagation;
 
-import lombok.val;
+import org.apache.causeway.applib.services.bookmark.Bookmark;
+import org.apache.causeway.commons.internal.collections._Maps;
+import org.apache.causeway.viewer.graphql.viewer.test.CausewayViewerGraphqlTestModuleIntegTestAbstract;
+import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.Department;
+import org.apache.causeway.viewer.graphql.viewer.test.e2e.Abstract_IntegTest;
 
-import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
+import lombok.val;
 
 
 //NOT USING @Transactional since we are running server within same transaction otherwise
@@ -53,7 +55,7 @@ public class DeptHeadMutating_IntegTest extends Abstract_IntegTest {
 
     @Test
     @UseReporter(DiffReporter.class)
-    void find_depthead_and_change_name() throws Exception {
+    void create_department() throws Exception {
 
         // when lookup 'Prof. Dicky Horwich' and change it to 'Prof. Richard Horwich'
         String response = submit();
@@ -63,4 +65,24 @@ public class DeptHeadMutating_IntegTest extends Abstract_IntegTest {
 
     }
 
+    @Test
+    @UseReporter(DiffReporter.class)
+    void change_department_name() throws Exception {
+
+        final Bookmark bookmark =
+                transactionService.callTransactional(
+                        Propagation.REQUIRED,
+                        () -> {
+                            Department department = departmentRepository.findByName("Classics");
+                            Optional<Bookmark> bookmark1 = bookmarkService.bookmarkFor(department);
+                            return bookmark1.orElseThrow();
+                        }
+                ).valueAsNonNullElseFail();
+
+        val response = submit(_Maps.unmodifiable("$departmentId", bookmark.getIdentifier()));
+
+        // then payload
+        Approvals.verify(response, jsonOptions());
+    }
+
 }
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/AbstractGqlSchema_print_IntegTest.java
similarity index 93%
copy from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java
copy to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/AbstractGqlSchema_print_IntegTest.java
index e2b5db13c8..dbcca757cc 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/AbstractGqlSchema_print_IntegTest.java
@@ -25,9 +25,10 @@ import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 
+import graphql.schema.idl.SchemaPrinter;
+
 import org.approvaltests.core.Options;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 
 import org.springframework.transaction.annotation.Transactional;
@@ -42,25 +43,22 @@ import static org.apache.causeway.commons.internal.assertions._Assert.assertNotN
 
 import lombok.val;
 
-import graphql.schema.idl.SchemaPrinter;
-
-@Order(10)
 @Transactional
-public class GqlSchema_print_IntegTest extends CausewayViewerGraphqlTestModuleIntegTestAbstract {
+public abstract class AbstractGqlSchema_print_IntegTest extends CausewayViewerGraphqlTestModuleIntegTestAbstract {
 
     @Inject private CausewaySystemEnvironment causewaySystemEnvironment;
     @Inject private SpecificationLoader specificationLoader;
     @Inject private GraphQlSourceForCauseway graphQlSourceForCauseway;
 
     @BeforeEach
-    void beforeEach() {
+    protected void beforeEach() {
         assertNotNull(causewaySystemEnvironment);
         assertNotNull(specificationLoader);
         assertNotNull(graphQlSourceForCauseway);
     }
 
     @Test
-    void schema() throws Exception {
+    protected void schema() throws Exception {
 
         val graphQL = graphQlSourceForCauseway.graphQl();
         val graphQLSchema = graphQL.getGraphQLSchema();
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/query/GqlSchemaQuery_print_IntegTest.java
similarity index 56%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/query/GqlSchemaQuery_print_IntegTest.java
index e2b5db13c8..dca930ede3 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/GqlSchema_print_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/query/GqlSchemaQuery_print_IntegTest.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.schema;
+package org.apache.causeway.viewer.graphql.viewer.test.schema.query;
 
 import java.io.File;
 import java.nio.file.Files;
@@ -25,6 +25,8 @@ import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 
+import org.apache.causeway.viewer.graphql.viewer.test.schema.AbstractGqlSchema_print_IntegTest;
+
 import org.approvaltests.core.Options;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Order;
@@ -44,46 +46,8 @@ import lombok.val;
 
 import graphql.schema.idl.SchemaPrinter;
 
-@Order(10)
+@Order(0)
 @Transactional
-public class GqlSchema_print_IntegTest extends CausewayViewerGraphqlTestModuleIntegTestAbstract {
-
-    @Inject private CausewaySystemEnvironment causewaySystemEnvironment;
-    @Inject private SpecificationLoader specificationLoader;
-    @Inject private GraphQlSourceForCauseway graphQlSourceForCauseway;
-
-    @BeforeEach
-    void beforeEach() {
-        assertNotNull(causewaySystemEnvironment);
-        assertNotNull(specificationLoader);
-        assertNotNull(graphQlSourceForCauseway);
-    }
-
-    @Test
-    void schema() throws Exception {
-
-        val graphQL = graphQlSourceForCauseway.graphQl();
-        val graphQLSchema = graphQL.getGraphQLSchema();
-
-        val printer = new SchemaPrinter();
-
-        val submit = printer.print(graphQLSchema);
-
-        File targetFile1 = new File("src/test/resources/schema.gql");
-
-        Files.write(Paths.get(targetFile1.getPath()), submit.getBytes());
-    }
-
-    @SuppressWarnings("unused")
-    private Options gqlSchemaOptions() {
-        return new Options()
-                .withScrubber(this::unixLineEndings)
-                .forFile().withExtension(".gql");
-    }
-
-    private String unixLineEndings(final String input) {
-        return TextUtils.streamLines(input)
-                .collect(Collectors.joining("\n"));
-    }
+public class GqlSchemaQuery_print_IntegTest extends AbstractGqlSchema_print_IntegTest {
 
 }
diff --git a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.java b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/query_and_mutations/GqlSchemaQueryAndMutations_print_IntegTest.java
similarity index 56%
rename from viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.java
rename to viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/query_and_mutations/GqlSchemaQueryAndMutations_print_IntegTest.java
index 4715c571c3..f0100e49d1 100644
--- a/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/DeptHeadMutating_IntegTest.java
+++ b/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/schema/query_and_mutations/GqlSchemaQueryAndMutations_print_IntegTest.java
@@ -16,28 +16,38 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.causeway.viewer.graphql.viewer.test.e2e;
+package org.apache.causeway.viewer.graphql.viewer.test.schema.query_and_mutations;
 
-import org.apache.causeway.viewer.graphql.viewer.test.CausewayViewerGraphqlTestModuleIntegTestAbstract;
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.stream.Collectors;
+
+import javax.inject.Inject;
+
+import graphql.schema.idl.SchemaPrinter;
 
-import org.apache.causeway.viewer.graphql.viewer.test.domain.dept.DeptHead;
+import org.apache.causeway.viewer.graphql.viewer.test.schema.AbstractGqlSchema_print_IntegTest;
 
-import org.approvaltests.Approvals;
-import org.approvaltests.reporters.DiffReporter;
-import org.approvaltests.reporters.UseReporter;
+import org.approvaltests.core.Options;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.transaction.annotation.Propagation;
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.transaction.annotation.Transactional;
 
-import lombok.val;
+import org.apache.causeway.commons.io.TextUtils;
+import org.apache.causeway.core.config.environment.CausewaySystemEnvironment;
+import org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
+import org.apache.causeway.viewer.graphql.viewer.integration.GraphQlSourceForCauseway;
+import org.apache.causeway.viewer.graphql.viewer.test.CausewayViewerGraphqlTestModuleIntegTestAbstract;
 
-import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
+import static org.apache.causeway.commons.internal.assertions._Assert.assertNotNull;
 
+import lombok.val;
 
-//NOT USING @Transactional since we are running server within same transaction otherwise
 @SpringBootTest(
         classes = {
                 CausewayViewerGraphqlTestModuleIntegTestAbstract.TestApp.class
@@ -47,20 +57,9 @@ import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
                 "causeway.viewer.graphql.api-variant=QUERY_AND_MUTATIONS"
         }
 )
-@Order(110)
-@ActiveProfiles("test")
-public class DeptHeadMutating_IntegTest extends Abstract_IntegTest {
-
-    @Test
-    @UseReporter(DiffReporter.class)
-    void find_depthead_and_change_name() throws Exception {
-
-        // when lookup 'Prof. Dicky Horwich' and change it to 'Prof. Richard Horwich'
-        String response = submit();
-
-        // then payload
-        Approvals.verify(response, jsonOptions());
-
-    }
+@Order(100)
+@Transactional
+@DirtiesContext
+public class GqlSchemaQueryAndMutations_print_IntegTest extends AbstractGqlSchema_print_IntegTest {
 
 }
diff --git a/viewers/graphql/test/src/test/resources/application-test.properties b/viewers/graphql/test/src/test/resources/application-test.properties
index e78ec972d3..cbfd204edd 100644
--- a/viewers/graphql/test/src/test/resources/application-test.properties
+++ b/viewers/graphql/test/src/test/resources/application-test.properties
@@ -2,3 +2,28 @@
 #logging.level.graphql=DEBUG
 
 
+
+
+# One of logging libraries (slf4j, jul, common, sysout)
+decorator.datasource.datasource-proxy.logging=slf4j
+
+decorator.datasource.datasource-proxy.query.enable-logging=true
+decorator.datasource.datasource-proxy.query.log-level=debug
+# Logger name to log all queries, default depends on chosen logging, e.g. net.ttddyy.dsproxy.listener.logging.SLF4JQueryLoggingListener
+decorator.datasource.datasource-proxy.query.logger-name=
+
+decorator.datasource.datasource-proxy.slow-query.enable-logging=true
+decorator.datasource.datasource-proxy.slow-query.log-level=warn
+decorator.datasource.datasource-proxy.slow-query.logger-name=
+# Number of seconds to consider query as slow and log it
+decorator.datasource.datasource-proxy.slow-query.threshold=300
+
+decorator.datasource.datasource-proxy.multiline=true
+
+# Formats the SQL for better readability. Uses Hibernate's formatter if present on the class path. If you opted in for a different JPA provider you need to add https://github.com/vertical-blank/sql-formatter as a runtime dependency to your app  to enable this.
+# Mutually exclusive with json-format=true
+decorator.datasource.datasource-proxy.format-sql=false
+decorator.datasource.datasource-proxy.json-format=false
+
+# Enable Query Metrics
+decorator.datasource.datasource-proxy.count-query=false
\ No newline at end of file
diff --git a/viewers/graphql/test/src/test/resources/schema.gql b/viewers/graphql/test/src/test/resources/schema.gql
index 363755e40d..94ac2ae9d2 100644
--- a/viewers/graphql/test/src/test/resources/schema.gql
+++ b/viewers/graphql/test/src/test/resources/schema.gql
@@ -22,11 +22,30 @@ directive @specifiedBy(
     url: String!
   ) on SCALAR
 
+type Mutation {
+  causeway_applib_PropertyNode__streamChildNodes(target: causeway_applib_PropertyNode__gqlv_input): java_util_stream_Stream
+  causeway_applib_node_ActionNode__streamChildNodes(target: causeway_applib_node_ActionNode__gqlv_input): java_util_stream_Stream
+  causeway_applib_node_CollectionNode__streamChildNodes(target: causeway_applib_node_CollectionNode__gqlv_input): java_util_stream_Stream
+  org_apache_causeway_core_metamodel_inspect_model_MemberNode__streamChildNodes(target: org_apache_causeway_core_metamodel_inspect_model_MemberNode__gqlv_input): java_util_stream_Stream
+  university_admin_AdminMenu__actionWithDisabledParam(firstParam: String!, secondParam: String!, thirdParameter: String!): String
+  university_admin_AdminMenu__actionWithHiddenParam(firstParam: String!, secondParam: String!): String
+  university_admin_AdminMenu__adminAction: String
+  university_admin_AdminMenu__otherAdminAction: String
+  university_dept_Department__addStaffMember(staffMember: university_dept_StaffMember__gqlv_input!, target: university_dept_Department__gqlv_input): university_dept_Department
+  university_dept_Department__addStaffMembers(staffMembers: [university_dept_StaffMember__gqlv_input], target: university_dept_Department__gqlv_input): university_dept_Department
+  university_dept_Department__changeDeptHead(newDeptHead: university_dept_DeptHead__gqlv_input!, target: university_dept_Department__gqlv_input): university_dept_Department
+  university_dept_Department__changeName(newName: String!, target: university_dept_Department__gqlv_input): university_dept_Department
+  university_dept_Department__removeStaffMember(staffMember: university_dept_StaffMember__gqlv_input!, target: university_dept_Department__gqlv_input): university_dept_Department
+  university_dept_Departments__createDepartment(deptHead: university_dept_DeptHead__gqlv_input, name: String!): university_dept_Department
+  university_dept_DeptHead__changeDepartment(department: university_dept_Department__gqlv_input!, target: university_dept_DeptHead__gqlv_input): university_dept_DeptHead
+  university_dept_DeptHead__changeName(newName: String!, target: university_dept_DeptHead__gqlv_input): university_dept_DeptHead
+  university_dept_Staff__createStaffMember(department: university_dept_Department__gqlv_input!, name: String!): university_dept_StaffMember
+}
+
 type Query {
   causeway_applib_UserMenu: causeway_applib_UserMenu
   causeway_conf_ConfigurationMenu: causeway_conf_ConfigurationMenu
   causeway_security_LogoutMenu: causeway_security_LogoutMenu
-  university_admin_AdminMenu: university_admin_AdminMenu
   university_calc_Calculator: university_calc_Calculator
   university_dept_Departments: university_dept_Departments
   university_dept_DeptHeads: university_dept_DeptHeads
@@ -47,7 +66,6 @@ type causeway_applib_DomainObjectList__actionArguments__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(actionArguments: String): causeway_applib_DomainObjectList
   validate(actionArguments: String): String
 }
 
@@ -55,7 +73,6 @@ type causeway_applib_DomainObjectList__actionId__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(actionId: String): causeway_applib_DomainObjectList
   validate(actionId: String): String
 }
 
@@ -63,7 +80,6 @@ type causeway_applib_DomainObjectList__actionOwningFqcn__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(actionOwningFqcn: String): causeway_applib_DomainObjectList
   validate(actionOwningFqcn: String): String
 }
 
@@ -71,7 +87,6 @@ type causeway_applib_DomainObjectList__elementTypeFqcn__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(elementTypeFqcn: String!): causeway_applib_DomainObjectList
   validate(elementTypeFqcn: String): String
 }
 
@@ -89,7 +104,6 @@ type causeway_applib_DomainObjectList__title__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(title: String!): causeway_applib_DomainObjectList
   validate(title: String): String
 }
 
@@ -109,7 +123,6 @@ type causeway_applib_FacetGroupNode__facets__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(facets: String!): causeway_applib_FacetGroupNode
   validate(facets: String): String
 }
 
@@ -121,7 +134,6 @@ type causeway_applib_FacetGroupNode__gqlv_meta {
 type causeway_applib_FacetGroupNode__parentNode__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): causeway_applib_FacetGroupNode
   validate(parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -146,7 +158,6 @@ type causeway_applib_ParameterNode__parameter__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(parameter: String!): causeway_applib_ParameterNode
   validate(parameter: String): String
 }
 
@@ -154,7 +165,6 @@ type causeway_applib_ParameterNode__parentNode__gqlv_property {
   disabled: String
   get: causeway_applib_node_ActionNode!
   hidden: Boolean
-  set(parentNode: causeway_applib_node_ActionNode__gqlv_input!): causeway_applib_ParameterNode
   validate(parentNode: causeway_applib_node_ActionNode__gqlv_input): String
 }
 
@@ -164,7 +174,6 @@ type causeway_applib_PropertyNode {
   mixedIn: causeway_applib_PropertyNode__mixedIn__gqlv_property
   parentNode: causeway_applib_PropertyNode__parentNode__gqlv_property
   property: causeway_applib_PropertyNode__property__gqlv_property
-  streamChildNodes: causeway_applib_PropertyNode__streamChildNodes__gqlv_action
 }
 
 type causeway_applib_PropertyNode__childNodes__gqlv_collection {
@@ -181,7 +190,6 @@ type causeway_applib_PropertyNode__mixedIn__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(mixedIn: Boolean!): causeway_applib_PropertyNode
   validate(mixedIn: Boolean): String
 }
 
@@ -189,7 +197,6 @@ type causeway_applib_PropertyNode__parentNode__gqlv_property {
   disabled: String
   get: causeway_applib_TypeNode!
   hidden: Boolean
-  set(parentNode: causeway_applib_TypeNode__gqlv_input!): causeway_applib_PropertyNode
   validate(parentNode: causeway_applib_TypeNode__gqlv_input): String
 }
 
@@ -197,17 +204,9 @@ type causeway_applib_PropertyNode__property__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(property: String!): causeway_applib_PropertyNode
   validate(property: String): String
 }
 
-type causeway_applib_PropertyNode__streamChildNodes__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: java_util_stream_Stream
-  validate: String
-}
-
 type causeway_applib_RoleMemento {
   _gqlv_meta: causeway_applib_RoleMemento__gqlv_meta
   description: causeway_applib_RoleMemento__description__gqlv_property
@@ -218,7 +217,6 @@ type causeway_applib_RoleMemento__description__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(description: String!): causeway_applib_RoleMemento
   validate(description: String): String
 }
 
@@ -231,7 +229,6 @@ type causeway_applib_RoleMemento__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(name: String!): causeway_applib_RoleMemento
   validate(name: String): String
 }
 
@@ -251,7 +248,6 @@ type causeway_applib_TypeNode__domainClassDto__gqlv_property {
   disabled: String
   get: causeway_schema_metamodel_v2_DomainClassDto!
   hidden: Boolean
-  set(domainClassDto: causeway_schema_metamodel_v2_DomainClassDto__gqlv_input!): causeway_applib_TypeNode
   validate(domainClassDto: causeway_schema_metamodel_v2_DomainClassDto__gqlv_input): String
 }
 
@@ -263,7 +259,6 @@ type causeway_applib_TypeNode__gqlv_meta {
 type causeway_applib_TypeNode__parentNode__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): causeway_applib_TypeNode
   validate(parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -286,7 +281,6 @@ type causeway_applib_UserMemento__authenticationCode__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(authenticationCode: String!): causeway_applib_UserMemento
   validate(authenticationCode: String): String
 }
 
@@ -295,7 +289,6 @@ type causeway_applib_UserMemento__authenticationSource__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(authenticationSource: String!): causeway_applib_UserMemento
   validate(authenticationSource: String): String
 }
 
@@ -303,7 +296,6 @@ type causeway_applib_UserMemento__avatarUrl__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(avatarUrl: String): causeway_applib_UserMemento
   validate(avatarUrl: String): String
 }
 
@@ -316,7 +308,6 @@ type causeway_applib_UserMemento__impersonating__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(impersonating: Boolean!): causeway_applib_UserMemento
   validate(impersonating: Boolean): String
 }
 
@@ -324,7 +315,6 @@ type causeway_applib_UserMemento__languageLocale__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(languageLocale: String): causeway_applib_UserMemento
   validate(languageLocale: String): String
 }
 
@@ -332,7 +322,6 @@ type causeway_applib_UserMemento__multiTenancyToken__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(multiTenancyToken: String): causeway_applib_UserMemento
   validate(multiTenancyToken: String): String
 }
 
@@ -340,7 +329,6 @@ type causeway_applib_UserMemento__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(name: String!): causeway_applib_UserMemento
   validate(name: String): String
 }
 
@@ -348,7 +336,6 @@ type causeway_applib_UserMemento__numberFormatLocale__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(numberFormatLocale: String): causeway_applib_UserMemento
   validate(numberFormatLocale: String): String
 }
 
@@ -356,7 +343,6 @@ type causeway_applib_UserMemento__realName__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(realName: String): causeway_applib_UserMemento
   validate(realName: String): String
 }
 
@@ -370,7 +356,6 @@ type causeway_applib_UserMemento__timeFormatLocale__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(timeFormatLocale: String): causeway_applib_UserMemento
   validate(timeFormatLocale: String): String
 }
 
@@ -391,14 +376,12 @@ type causeway_applib_node_ActionNode {
   childNodes: causeway_applib_node_ActionNode__childNodes__gqlv_collection
   mixedIn: causeway_applib_node_ActionNode__mixedIn__gqlv_property
   parentNode: causeway_applib_node_ActionNode__parentNode__gqlv_property
-  streamChildNodes: causeway_applib_node_ActionNode__streamChildNodes__gqlv_action
 }
 
 type causeway_applib_node_ActionNode__action__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(action: String!): causeway_applib_node_ActionNode
   validate(action: String): String
 }
 
@@ -416,7 +399,6 @@ type causeway_applib_node_ActionNode__mixedIn__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(mixedIn: Boolean!): causeway_applib_node_ActionNode
   validate(mixedIn: Boolean): String
 }
 
@@ -424,24 +406,15 @@ type causeway_applib_node_ActionNode__parentNode__gqlv_property {
   disabled: String
   get: causeway_applib_TypeNode!
   hidden: Boolean
-  set(parentNode: causeway_applib_TypeNode__gqlv_input!): causeway_applib_node_ActionNode
   validate(parentNode: causeway_applib_TypeNode__gqlv_input): String
 }
 
-type causeway_applib_node_ActionNode__streamChildNodes__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: java_util_stream_Stream
-  validate: String
-}
-
 type causeway_applib_node_CollectionNode {
   _gqlv_meta: causeway_applib_node_CollectionNode__gqlv_meta
   childNodes: causeway_applib_node_CollectionNode__childNodes__gqlv_collection
   collection: causeway_applib_node_CollectionNode__collection__gqlv_property
   mixedIn: causeway_applib_node_CollectionNode__mixedIn__gqlv_property
   parentNode: causeway_applib_node_CollectionNode__parentNode__gqlv_property
-  streamChildNodes: causeway_applib_node_CollectionNode__streamChildNodes__gqlv_action
 }
 
 type causeway_applib_node_CollectionNode__childNodes__gqlv_collection {
@@ -453,7 +426,6 @@ type causeway_applib_node_CollectionNode__collection__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(collection: String!): causeway_applib_node_CollectionNode
   validate(collection: String): String
 }
 
@@ -466,7 +438,6 @@ type causeway_applib_node_CollectionNode__mixedIn__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(mixedIn: Boolean!): causeway_applib_node_CollectionNode
   validate(mixedIn: Boolean): String
 }
 
@@ -474,17 +445,9 @@ type causeway_applib_node_CollectionNode__parentNode__gqlv_property {
   disabled: String
   get: causeway_applib_TypeNode!
   hidden: Boolean
-  set(parentNode: causeway_applib_TypeNode__gqlv_input!): causeway_applib_node_CollectionNode
   validate(parentNode: causeway_applib_TypeNode__gqlv_input): String
 }
 
-type causeway_applib_node_CollectionNode__streamChildNodes__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: java_util_stream_Stream
-  validate: String
-}
-
 type causeway_applib_node_FacetAttrNode {
   _gqlv_meta: causeway_applib_node_FacetAttrNode__gqlv_meta
   childNodes: causeway_applib_node_FacetAttrNode__childNodes__gqlv_collection
@@ -501,7 +464,6 @@ type causeway_applib_node_FacetAttrNode__facetAttr__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(facetAttr: String!): causeway_applib_node_FacetAttrNode
   validate(facetAttr: String): String
 }
 
@@ -514,7 +476,6 @@ type causeway_applib_node_FacetAttrNode__parentNode__gqlv_property {
   disabled: String
   get: causeway_applib_node_FacetNode!
   hidden: Boolean
-  set(parentNode: causeway_applib_node_FacetNode__gqlv_input!): causeway_applib_node_FacetAttrNode
   validate(parentNode: causeway_applib_node_FacetNode__gqlv_input): String
 }
 
@@ -535,7 +496,6 @@ type causeway_applib_node_FacetNode__facet__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(facet: String!): causeway_applib_node_FacetNode
   validate(facet: String): String
 }
 
@@ -547,7 +507,6 @@ type causeway_applib_node_FacetNode__gqlv_meta {
 type causeway_applib_node_FacetNode__parentNode__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): causeway_applib_node_FacetNode
   validate(parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
@@ -555,7 +514,6 @@ type causeway_applib_node_FacetNode__shadowed__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(shadowed: Boolean!): causeway_applib_node_FacetNode
   validate(shadowed: Boolean): String
 }
 
@@ -585,7 +543,6 @@ type causeway_conf_ConfigurationProperty__key__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(key: String!): causeway_conf_ConfigurationProperty
   validate(key: String): String
 }
 
@@ -593,7 +550,6 @@ type causeway_conf_ConfigurationProperty__value__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(value: String!): causeway_conf_ConfigurationProperty
   validate(value: String): String
 }
 
@@ -644,7 +600,6 @@ type causeway_feat_ApplicationFeatureViewModel__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): causeway_feat_ApplicationFeatureViewModel
   validate(memberName: String): String
 }
 
@@ -652,14 +607,12 @@ type causeway_feat_ApplicationFeatureViewModel__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): causeway_feat_ApplicationFeatureViewModel
   validate(namespaceName: String): String
 }
 
 type causeway_feat_ApplicationFeatureViewModel__parent__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): causeway_feat_ApplicationFeatureViewModel
   validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -667,7 +620,6 @@ type causeway_feat_ApplicationFeatureViewModel__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): causeway_feat_ApplicationFeatureViewModel
   validate(typeSimpleName: String): String
 }
 
@@ -694,7 +646,6 @@ type causeway_feat_ApplicationNamespace__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): causeway_feat_ApplicationNamespace
   validate(memberName: String): String
 }
 
@@ -702,14 +653,12 @@ type causeway_feat_ApplicationNamespace__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): causeway_feat_ApplicationNamespace
   validate(namespaceName: String): String
 }
 
 type causeway_feat_ApplicationNamespace__parent__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): causeway_feat_ApplicationNamespace
   validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -717,7 +666,6 @@ type causeway_feat_ApplicationNamespace__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): causeway_feat_ApplicationNamespace
   validate(typeSimpleName: String): String
 }
 
@@ -747,7 +695,6 @@ type causeway_feat_ApplicationTypeAction__actionSemantics__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(actionSemantics: String!): causeway_feat_ApplicationTypeAction
   validate(actionSemantics: String): String
 }
 
@@ -760,7 +707,6 @@ type causeway_feat_ApplicationTypeAction__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): causeway_feat_ApplicationTypeAction
   validate(memberName: String): String
 }
 
@@ -768,14 +714,12 @@ type causeway_feat_ApplicationTypeAction__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): causeway_feat_ApplicationTypeAction
   validate(namespaceName: String): String
 }
 
 type causeway_feat_ApplicationTypeAction__parent__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): causeway_feat_ApplicationTypeAction
   validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -783,7 +727,6 @@ type causeway_feat_ApplicationTypeAction__returnType__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(returnType: String!): causeway_feat_ApplicationTypeAction
   validate(returnType: String): String
 }
 
@@ -791,7 +734,6 @@ type causeway_feat_ApplicationTypeAction__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): causeway_feat_ApplicationTypeAction
   validate(typeSimpleName: String): String
 }
 
@@ -809,7 +751,6 @@ type causeway_feat_ApplicationTypeCollection__derived__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(derived: Boolean!): causeway_feat_ApplicationTypeCollection
   validate(derived: Boolean): String
 }
 
@@ -817,7 +758,6 @@ type causeway_feat_ApplicationTypeCollection__elementType__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(elementType: String!): causeway_feat_ApplicationTypeCollection
   validate(elementType: String): String
 }
 
@@ -830,7 +770,6 @@ type causeway_feat_ApplicationTypeCollection__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): causeway_feat_ApplicationTypeCollection
   validate(memberName: String): String
 }
 
@@ -838,14 +777,12 @@ type causeway_feat_ApplicationTypeCollection__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): causeway_feat_ApplicationTypeCollection
   validate(namespaceName: String): String
 }
 
 type causeway_feat_ApplicationTypeCollection__parent__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): causeway_feat_ApplicationTypeCollection
   validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -853,7 +790,6 @@ type causeway_feat_ApplicationTypeCollection__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): causeway_feat_ApplicationTypeCollection
   validate(typeSimpleName: String): String
 }
 
@@ -874,7 +810,6 @@ type causeway_feat_ApplicationTypeMember__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): causeway_feat_ApplicationTypeMember
   validate(memberName: String): String
 }
 
@@ -882,14 +817,12 @@ type causeway_feat_ApplicationTypeMember__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): causeway_feat_ApplicationTypeMember
   validate(namespaceName: String): String
 }
 
 type causeway_feat_ApplicationTypeMember__parent__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): causeway_feat_ApplicationTypeMember
   validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -897,7 +830,6 @@ type causeway_feat_ApplicationTypeMember__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): causeway_feat_ApplicationTypeMember
   validate(typeSimpleName: String): String
 }
 
@@ -917,7 +849,6 @@ type causeway_feat_ApplicationTypeProperty__derived__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(derived: Boolean!): causeway_feat_ApplicationTypeProperty
   validate(derived: Boolean): String
 }
 
@@ -930,7 +861,6 @@ type causeway_feat_ApplicationTypeProperty__maxLength__gqlv_property {
   disabled: String
   get: Int
   hidden: Boolean
-  set(maxLength: Int): causeway_feat_ApplicationTypeProperty
   validate(maxLength: Int): String
 }
 
@@ -938,7 +868,6 @@ type causeway_feat_ApplicationTypeProperty__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): causeway_feat_ApplicationTypeProperty
   validate(memberName: String): String
 }
 
@@ -946,14 +875,12 @@ type causeway_feat_ApplicationTypeProperty__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): causeway_feat_ApplicationTypeProperty
   validate(namespaceName: String): String
 }
 
 type causeway_feat_ApplicationTypeProperty__parent__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): causeway_feat_ApplicationTypeProperty
   validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -961,7 +888,6 @@ type causeway_feat_ApplicationTypeProperty__returnType__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(returnType: String!): causeway_feat_ApplicationTypeProperty
   validate(returnType: String): String
 }
 
@@ -969,7 +895,6 @@ type causeway_feat_ApplicationTypeProperty__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): causeway_feat_ApplicationTypeProperty
   validate(typeSimpleName: String): String
 }
 
@@ -977,7 +902,6 @@ type causeway_feat_ApplicationTypeProperty__typicalLength__gqlv_property {
   disabled: String
   get: Int
   hidden: Boolean
-  set(typicalLength: Int): causeway_feat_ApplicationTypeProperty
   validate(typicalLength: Int): String
 }
 
@@ -1002,7 +926,6 @@ type causeway_feat_ApplicationType__memberName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(memberName: String!): causeway_feat_ApplicationType
   validate(memberName: String): String
 }
 
@@ -1010,14 +933,12 @@ type causeway_feat_ApplicationType__namespaceName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(namespaceName: String!): causeway_feat_ApplicationType
   validate(namespaceName: String): String
 }
 
 type causeway_feat_ApplicationType__parent__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input!): causeway_feat_ApplicationType
   validate(parent: causeway_feat_ApplicationFeatureViewModel__gqlv_input): String
 }
 
@@ -1031,7 +952,6 @@ type causeway_feat_ApplicationType__typeSimpleName__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(typeSimpleName: String!): causeway_feat_ApplicationType
   validate(typeSimpleName: String): String
 }
 
@@ -1052,7 +972,6 @@ type causeway_schema_metamodel_v2_DomainClassDto__actions__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(actions: String!): causeway_schema_metamodel_v2_DomainClassDto
   validate(actions: String): String
 }
 
@@ -1060,7 +979,6 @@ type causeway_schema_metamodel_v2_DomainClassDto__annotations__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(annotations: String!): causeway_schema_metamodel_v2_DomainClassDto
   validate(annotations: String): String
 }
 
@@ -1068,7 +986,6 @@ type causeway_schema_metamodel_v2_DomainClassDto__collections__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(collections: String!): causeway_schema_metamodel_v2_DomainClassDto
   validate(collections: String): String
 }
 
@@ -1076,7 +993,6 @@ type causeway_schema_metamodel_v2_DomainClassDto__facets__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(facets: String!): causeway_schema_metamodel_v2_DomainClassDto
   validate(facets: String): String
 }
 
@@ -1089,7 +1005,6 @@ type causeway_schema_metamodel_v2_DomainClassDto__id__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(id: String!): causeway_schema_metamodel_v2_DomainClassDto
   validate(id: String): String
 }
 
@@ -1097,7 +1012,6 @@ type causeway_schema_metamodel_v2_DomainClassDto__majorVersion__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(majorVersion: String): causeway_schema_metamodel_v2_DomainClassDto
   validate(majorVersion: String): String
 }
 
@@ -1105,7 +1019,6 @@ type causeway_schema_metamodel_v2_DomainClassDto__minorVersion__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(minorVersion: String): causeway_schema_metamodel_v2_DomainClassDto
   validate(minorVersion: String): String
 }
 
@@ -1113,7 +1026,6 @@ type causeway_schema_metamodel_v2_DomainClassDto__properties__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(properties: String!): causeway_schema_metamodel_v2_DomainClassDto
   validate(properties: String): String
 }
 
@@ -1121,7 +1033,6 @@ type causeway_schema_metamodel_v2_DomainClassDto__service__gqlv_property {
   disabled: String
   get: Boolean!
   hidden: Boolean
-  set(service: Boolean!): causeway_schema_metamodel_v2_DomainClassDto
   validate(service: Boolean): String
 }
 
@@ -1157,7 +1068,6 @@ type causeway_testing_fixtures_FixtureResult__className__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(className: String!): causeway_testing_fixtures_FixtureResult
   validate(className: String): String
 }
 
@@ -1165,7 +1075,6 @@ type causeway_testing_fixtures_FixtureResult__fixtureScriptClassName__gqlv_prope
   disabled: String
   get: String
   hidden: Boolean
-  set(fixtureScriptClassName: String): causeway_testing_fixtures_FixtureResult
   validate(fixtureScriptClassName: String): String
 }
 
@@ -1178,14 +1087,12 @@ type causeway_testing_fixtures_FixtureResult__key__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(key: String!): causeway_testing_fixtures_FixtureResult
   validate(key: String): String
 }
 
 type causeway_testing_fixtures_FixtureResult__object__gqlv_property {
   disabled: String
   hidden: Boolean
-  set(object: String!): causeway_testing_fixtures_FixtureResult
   validate(object: String): String
 }
 
@@ -1261,1253 +1168,367 @@ type java_util_stream_Stream__gqlv_meta {
   logicalTypeName: String!
 }
 
-type org_apache_causeway_commons_functional_Either {
-  _gqlv_meta: org_apache_causeway_commons_functional_Either__gqlv_meta
-  accept: org_apache_causeway_commons_functional_Either__accept__gqlv_action
-  left: org_apache_causeway_commons_functional_Either__left__gqlv_action
-  map: org_apache_causeway_commons_functional_Either__map__gqlv_action
-  mapLeft: org_apache_causeway_commons_functional_Either__mapLeft__gqlv_action
-  mapRight: org_apache_causeway_commons_functional_Either__mapRight__gqlv_action
-  right: org_apache_causeway_commons_functional_Either__right__gqlv_action
+type org_apache_causeway_core_metamodel_inspect_model_MMNode {
+  _gqlv_meta: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_meta
+  childNodes: org_apache_causeway_core_metamodel_inspect_model_MMNode__childNodes__gqlv_collection
+  parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__gqlv_property
 }
 
-type org_apache_causeway_commons_functional_Either__accept__gqlv_action {
+type org_apache_causeway_core_metamodel_inspect_model_MMNode__childNodes__gqlv_collection {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(leftConsumer: java_util_function_Consumer__gqlv_input!, rightConsumer: java_util_function_Consumer__gqlv_input!): String
-  params: org_apache_causeway_commons_functional_Either__accept__gqlv_action_params
-  validate(leftConsumer: java_util_function_Consumer__gqlv_input, rightConsumer: java_util_function_Consumer__gqlv_input): String
 }
 
-type org_apache_causeway_commons_functional_Either__accept__gqlv_action_params {
-  leftConsumer: org_apache_causeway_commons_functional_Either__accept__leftConsumer__gqlv_action_parameter
-  rightConsumer: org_apache_causeway_commons_functional_Either__accept__rightConsumer__gqlv_action_parameter
+type org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_meta {
+  id: String!
+  logicalTypeName: String!
 }
 
-type org_apache_causeway_commons_functional_Either__accept__leftConsumer__gqlv_action_parameter {
-  disabled(leftConsumer: java_util_function_Consumer__gqlv_input): String
+type org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__gqlv_property {
+  disabled: String
   hidden: Boolean
-  validity: String
+  validate(parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
 }
 
-type org_apache_causeway_commons_functional_Either__accept__rightConsumer__gqlv_action_parameter {
-  disabled(leftConsumer: java_util_function_Consumer__gqlv_input, rightConsumer: java_util_function_Consumer__gqlv_input): String
-  hidden(leftConsumer: java_util_function_Consumer__gqlv_input): Boolean
-  validity: String
+type org_apache_causeway_core_metamodel_inspect_model_MemberNode {
+  _gqlv_meta: org_apache_causeway_core_metamodel_inspect_model_MemberNode__gqlv_meta
+  childNodes: org_apache_causeway_core_metamodel_inspect_model_MemberNode__childNodes__gqlv_collection
+  mixedIn: org_apache_causeway_core_metamodel_inspect_model_MemberNode__mixedIn__gqlv_property
+  parentNode: org_apache_causeway_core_metamodel_inspect_model_MemberNode__parentNode__gqlv_property
+}
+
+type org_apache_causeway_core_metamodel_inspect_model_MemberNode__childNodes__gqlv_collection {
+  disabled: String
+  hidden: Boolean
 }
 
-type org_apache_causeway_commons_functional_Either__gqlv_meta {
+type org_apache_causeway_core_metamodel_inspect_model_MemberNode__gqlv_meta {
   id: String!
   logicalTypeName: String!
 }
 
-type org_apache_causeway_commons_functional_Either__left__gqlv_action {
+type org_apache_causeway_core_metamodel_inspect_model_MemberNode__mixedIn__gqlv_property {
   disabled: String
+  get: Boolean!
   hidden: Boolean
-  invokeNonIdempotent: String
-  validate: String
+  validate(mixedIn: Boolean): String
 }
 
-type org_apache_causeway_commons_functional_Either__mapLeft__gqlv_action {
+type org_apache_causeway_core_metamodel_inspect_model_MemberNode__parentNode__gqlv_property {
   disabled: String
+  get: causeway_applib_TypeNode!
   hidden: Boolean
-  invokeNonIdempotent(leftMapper: java_util_function_Function__gqlv_input!): org_apache_causeway_commons_functional_Either
-  params: org_apache_causeway_commons_functional_Either__mapLeft__gqlv_action_params
-  validate(leftMapper: java_util_function_Function__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Either__mapLeft__gqlv_action_params {
-  leftMapper: org_apache_causeway_commons_functional_Either__mapLeft__leftMapper__gqlv_action_parameter
+  validate(parentNode: causeway_applib_TypeNode__gqlv_input): String
 }
 
-type org_apache_causeway_commons_functional_Either__mapLeft__leftMapper__gqlv_action_parameter {
-  disabled(leftMapper: java_util_function_Function__gqlv_input): String
-  hidden: Boolean
-  validity: String
+type org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript {
+  _gqlv_meta: org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__gqlv_meta
+  friendlyName: org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__friendlyName__gqlv_property
+  qualifiedName: org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__qualifiedName__gqlv_property
 }
 
-type org_apache_causeway_commons_functional_Either__mapRight__gqlv_action {
+type org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__friendlyName__gqlv_property {
   disabled: String
+  get: String!
   hidden: Boolean
-  invokeNonIdempotent(rightMapper: java_util_function_Function__gqlv_input!): org_apache_causeway_commons_functional_Either
-  params: org_apache_causeway_commons_functional_Either__mapRight__gqlv_action_params
-  validate(rightMapper: java_util_function_Function__gqlv_input): String
+  validate(friendlyName: String): String
 }
 
-type org_apache_causeway_commons_functional_Either__mapRight__gqlv_action_params {
-  rightMapper: org_apache_causeway_commons_functional_Either__mapRight__rightMapper__gqlv_action_parameter
+type org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__gqlv_meta {
+  id: String!
+  logicalTypeName: String!
 }
 
-type org_apache_causeway_commons_functional_Either__mapRight__rightMapper__gqlv_action_parameter {
-  disabled(rightMapper: java_util_function_Function__gqlv_input): String
+type org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__qualifiedName__gqlv_property {
+  disabled: String
+  get: String!
   hidden: Boolean
-  validity: String
+  validate(qualifiedName: String): String
+}
+
+type university_calc_Calculator {
+  addBigDecimals: university_calc_Calculator__addBigDecimals__gqlv_action
+  addBigIntegers: university_calc_Calculator__addBigIntegers__gqlv_action
+  addByteWrappers: university_calc_Calculator__addByteWrappers__gqlv_action
+  addBytes: university_calc_Calculator__addBytes__gqlv_action
+  addDoubleWrappers: university_calc_Calculator__addDoubleWrappers__gqlv_action
+  addDoubles: university_calc_Calculator__addDoubles__gqlv_action
+  addFloatWrappers: university_calc_Calculator__addFloatWrappers__gqlv_action
+  addFloats: university_calc_Calculator__addFloats__gqlv_action
+  addIntegerWrappers: university_calc_Calculator__addIntegerWrappers__gqlv_action
+  addIntegers: university_calc_Calculator__addIntegers__gqlv_action
+  addShortWrappers: university_calc_Calculator__addShortWrappers__gqlv_action
+  addShorts: university_calc_Calculator__addShorts__gqlv_action
+  and: university_calc_Calculator__and__gqlv_action
+  concat: university_calc_Calculator__concat__gqlv_action
+  nextMonth: university_calc_Calculator__nextMonth__gqlv_action
+  not: university_calc_Calculator__not__gqlv_action
+  or: university_calc_Calculator__or__gqlv_action
+  plusDays: university_calc_Calculator__plusDays__gqlv_action
+  plusJodaDays: university_calc_Calculator__plusJodaDays__gqlv_action
 }
 
-type org_apache_causeway_commons_functional_Either__map__gqlv_action {
+type university_calc_Calculator__addBigDecimals__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(leftMapper: java_util_function_Function__gqlv_input!, rightMapper: java_util_function_Function__gqlv_input!): org_apache_causeway_commons_functional_Either
-  params: org_apache_causeway_commons_functional_Either__map__gqlv_action_params
-  validate(leftMapper: java_util_function_Function__gqlv_input, rightMapper: java_util_function_Function__gqlv_input): String
+  invoke(x: Float!, y: Float): Float
+  params: university_calc_Calculator__addBigDecimals__gqlv_action_params
+  validate(x: Float, y: Float): String
 }
 
-type org_apache_causeway_commons_functional_Either__map__gqlv_action_params {
-  leftMapper: org_apache_causeway_commons_functional_Either__map__leftMapper__gqlv_action_parameter
-  rightMapper: org_apache_causeway_commons_functional_Either__map__rightMapper__gqlv_action_parameter
+type university_calc_Calculator__addBigDecimals__gqlv_action_params {
+  x: university_calc_Calculator__addBigDecimals__x__gqlv_action_parameter
+  y: university_calc_Calculator__addBigDecimals__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_Either__map__leftMapper__gqlv_action_parameter {
-  disabled(leftMapper: java_util_function_Function__gqlv_input): String
+type university_calc_Calculator__addBigDecimals__x__gqlv_action_parameter {
+  disabled(x: Float): String
   hidden: Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_Either__map__rightMapper__gqlv_action_parameter {
-  disabled(leftMapper: java_util_function_Function__gqlv_input, rightMapper: java_util_function_Function__gqlv_input): String
-  hidden(leftMapper: java_util_function_Function__gqlv_input): Boolean
+type university_calc_Calculator__addBigDecimals__y__gqlv_action_parameter {
+  disabled(x: Float, y: Float): String
+  hidden(x: Float): Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_Either__right__gqlv_action {
+type university_calc_Calculator__addBigIntegers__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent: String
-  validate: String
+  invoke(x: Int!, y: Int): Int
+  params: university_calc_Calculator__addBigIntegers__gqlv_action_params
+  validate(x: Int, y: Int): String
 }
 
-type org_apache_causeway_commons_functional_Railway {
-  _gqlv_meta: org_apache_causeway_commons_functional_Railway__gqlv_meta
-  chain: org_apache_causeway_commons_functional_Railway__chain__gqlv_action
-  failure: org_apache_causeway_commons_functional_Railway__failure__gqlv_property
-  ifFailure: org_apache_causeway_commons_functional_Railway__ifFailure__gqlv_action
-  ifSuccess: org_apache_causeway_commons_functional_Railway__ifSuccess__gqlv_action
-  mapFailure: org_apache_causeway_commons_functional_Railway__mapFailure__gqlv_action
-  mapSuccess: org_apache_causeway_commons_functional_Railway__mapSuccess__gqlv_action
-  success: org_apache_causeway_commons_functional_Railway__success__gqlv_property
+type university_calc_Calculator__addBigIntegers__gqlv_action_params {
+  x: university_calc_Calculator__addBigIntegers__x__gqlv_action_parameter
+  y: university_calc_Calculator__addBigIntegers__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_Railway__chain__chainingFunction__gqlv_action_parameter {
-  disabled(chainingFunction: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
+type university_calc_Calculator__addBigIntegers__x__gqlv_action_parameter {
+  disabled(x: Int): String
   hidden: Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_Railway__chain__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(chainingFunction: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Railway
-  params: org_apache_causeway_commons_functional_Railway__chain__gqlv_action_params
-  validate(chainingFunction: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Railway__chain__gqlv_action_params {
-  chainingFunction: org_apache_causeway_commons_functional_Railway__chain__chainingFunction__gqlv_action_parameter
+type university_calc_Calculator__addBigIntegers__y__gqlv_action_parameter {
+  disabled(x: Int, y: Int): String
+  hidden(x: Int): Boolean
+  validity: String
 }
 
-type org_apache_causeway_commons_functional_Railway__failure__gqlv_property {
+type university_calc_Calculator__addByteWrappers__gqlv_action {
   disabled: String
-  get: Boolean!
   hidden: Boolean
-  set(failure: Boolean!): org_apache_causeway_commons_functional_Railway
-  validate(failure: Boolean): String
+  invoke(x: String!, y: String): Int
+  params: university_calc_Calculator__addByteWrappers__gqlv_action_params
+  validate(x: String, y: String): String
 }
 
-type org_apache_causeway_commons_functional_Railway__gqlv_meta {
-  id: String!
-  logicalTypeName: String!
+type university_calc_Calculator__addByteWrappers__gqlv_action_params {
+  x: university_calc_Calculator__addByteWrappers__x__gqlv_action_parameter
+  y: university_calc_Calculator__addByteWrappers__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_Railway__ifFailure__failureConsumer__gqlv_action_parameter {
-  disabled(failureConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
+type university_calc_Calculator__addByteWrappers__x__gqlv_action_parameter {
+  disabled(x: String): String
   hidden: Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_Railway__ifFailure__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(failureConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input!): org_apache_causeway_commons_functional_Railway
-  params: org_apache_causeway_commons_functional_Railway__ifFailure__gqlv_action_params
-  validate(failureConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Railway__ifFailure__gqlv_action_params {
-  failureConsumer: org_apache_causeway_commons_functional_Railway__ifFailure__failureConsumer__gqlv_action_parameter
+type university_calc_Calculator__addByteWrappers__y__gqlv_action_parameter {
+  disabled(x: String, y: String): String
+  hidden(x: String): Boolean
+  validity: String
 }
 
-type org_apache_causeway_commons_functional_Railway__ifSuccess__gqlv_action {
+type university_calc_Calculator__addBytes__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(successConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input!): org_apache_causeway_commons_functional_Railway
-  params: org_apache_causeway_commons_functional_Railway__ifSuccess__gqlv_action_params
-  validate(successConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
+  invoke(x: String!, y: String!): String
+  params: university_calc_Calculator__addBytes__gqlv_action_params
+  validate(x: String, y: String): String
 }
 
-type org_apache_causeway_commons_functional_Railway__ifSuccess__gqlv_action_params {
-  successConsumer: org_apache_causeway_commons_functional_Railway__ifSuccess__successConsumer__gqlv_action_parameter
+type university_calc_Calculator__addBytes__gqlv_action_params {
+  x: university_calc_Calculator__addBytes__x__gqlv_action_parameter
+  y: university_calc_Calculator__addBytes__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_Railway__ifSuccess__successConsumer__gqlv_action_parameter {
-  disabled(successConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
+type university_calc_Calculator__addBytes__x__gqlv_action_parameter {
+  disabled(x: String): String
   hidden: Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_Railway__mapFailure__failureMapper__gqlv_action_parameter {
-  disabled(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
+type university_calc_Calculator__addBytes__y__gqlv_action_parameter {
+  disabled(x: String, y: String): String
+  hidden(x: String): Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_Railway__mapFailure__gqlv_action {
+type university_calc_Calculator__addDoubleWrappers__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Railway
-  params: org_apache_causeway_commons_functional_Railway__mapFailure__gqlv_action_params
-  validate(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
+  invoke(x: Float!, y: Float): Float
+  params: university_calc_Calculator__addDoubleWrappers__gqlv_action_params
+  validate(x: Float, y: Float): String
 }
 
-type org_apache_causeway_commons_functional_Railway__mapFailure__gqlv_action_params {
-  failureMapper: org_apache_causeway_commons_functional_Railway__mapFailure__failureMapper__gqlv_action_parameter
+type university_calc_Calculator__addDoubleWrappers__gqlv_action_params {
+  x: university_calc_Calculator__addDoubleWrappers__x__gqlv_action_parameter
+  y: university_calc_Calculator__addDoubleWrappers__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_Railway__mapSuccess__gqlv_action {
-  disabled: String
+type university_calc_Calculator__addDoubleWrappers__x__gqlv_action_parameter {
+  disabled(x: Float): String
   hidden: Boolean
-  invokeNonIdempotent(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Railway
-  params: org_apache_causeway_commons_functional_Railway__mapSuccess__gqlv_action_params
-  validate(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Railway__mapSuccess__gqlv_action_params {
-  successMapper: org_apache_causeway_commons_functional_Railway__mapSuccess__successMapper__gqlv_action_parameter
+  validity: String
 }
 
-type org_apache_causeway_commons_functional_Railway__mapSuccess__successMapper__gqlv_action_parameter {
-  disabled(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
+type university_calc_Calculator__addDoubleWrappers__y__gqlv_action_parameter {
+  disabled(x: Float, y: Float): String
+  hidden(x: Float): Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_Railway__success__gqlv_property {
+type university_calc_Calculator__addDoubles__gqlv_action {
   disabled: String
-  get: Boolean!
   hidden: Boolean
-  set(success: Boolean!): org_apache_causeway_commons_functional_Railway
-  validate(success: Boolean): String
+  invoke(x: Float!, y: Float!): Float
+  params: university_calc_Calculator__addDoubles__gqlv_action_params
+  validate(x: Float, y: Float): String
 }
 
-type org_apache_causeway_commons_functional_ThrowingConsumer {
-  _gqlv_meta: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_meta
-  andThen: org_apache_causeway_commons_functional_ThrowingConsumer__andThen__gqlv_action
-  throwing: org_apache_causeway_commons_functional_ThrowingConsumer__throwing__gqlv_action
+type university_calc_Calculator__addDoubles__gqlv_action_params {
+  x: university_calc_Calculator__addDoubles__x__gqlv_action_parameter
+  y: university_calc_Calculator__addDoubles__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_ThrowingConsumer__andThen__arg0__gqlv_action_parameter {
-  disabled(arg0: java_util_function_Consumer__gqlv_input): String
+type university_calc_Calculator__addDoubles__x__gqlv_action_parameter {
+  disabled(x: Float): String
   hidden: Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_ThrowingConsumer__andThen__gqlv_action {
+type university_calc_Calculator__addDoubles__y__gqlv_action_parameter {
+  disabled(x: Float, y: Float): String
+  hidden(x: Float): Boolean
+  validity: String
+}
+
+type university_calc_Calculator__addFloatWrappers__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(arg0: java_util_function_Consumer__gqlv_input!): java_util_function_Consumer
-  params: org_apache_causeway_commons_functional_ThrowingConsumer__andThen__gqlv_action_params
-  validate(arg0: java_util_function_Consumer__gqlv_input): String
+  invoke(x: Float!, y: Float): Float
+  params: university_calc_Calculator__addFloatWrappers__gqlv_action_params
+  validate(x: Float, y: Float): String
 }
 
-type org_apache_causeway_commons_functional_ThrowingConsumer__andThen__gqlv_action_params {
-  arg0: org_apache_causeway_commons_functional_ThrowingConsumer__andThen__arg0__gqlv_action_parameter
+type university_calc_Calculator__addFloatWrappers__gqlv_action_params {
+  x: university_calc_Calculator__addFloatWrappers__x__gqlv_action_parameter
+  y: university_calc_Calculator__addFloatWrappers__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_meta {
-  id: String!
-  logicalTypeName: String!
+type university_calc_Calculator__addFloatWrappers__x__gqlv_action_parameter {
+  disabled(x: Float): String
+  hidden: Boolean
+  validity: String
 }
 
-type org_apache_causeway_commons_functional_ThrowingConsumer__throwing__exceptionWrapper__gqlv_action_parameter {
-  disabled(exceptionWrapper: java_util_function_BiFunction__gqlv_input): String
-  hidden: Boolean
+type university_calc_Calculator__addFloatWrappers__y__gqlv_action_parameter {
+  disabled(x: Float, y: Float): String
+  hidden(x: Float): Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_ThrowingConsumer__throwing__gqlv_action {
+type university_calc_Calculator__addFloats__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(exceptionWrapper: java_util_function_BiFunction__gqlv_input!): org_apache_causeway_commons_functional_ThrowingConsumer
-  params: org_apache_causeway_commons_functional_ThrowingConsumer__throwing__gqlv_action_params
-  validate(exceptionWrapper: java_util_function_BiFunction__gqlv_input): String
+  invoke(x: Float!, y: Float!): Float
+  params: university_calc_Calculator__addFloats__gqlv_action_params
+  validate(x: Float, y: Float): String
 }
 
-type org_apache_causeway_commons_functional_ThrowingConsumer__throwing__gqlv_action_params {
-  exceptionWrapper: org_apache_causeway_commons_functional_ThrowingConsumer__throwing__exceptionWrapper__gqlv_action_parameter
+type university_calc_Calculator__addFloats__gqlv_action_params {
+  x: university_calc_Calculator__addFloats__x__gqlv_action_parameter
+  y: university_calc_Calculator__addFloats__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction {
-  _gqlv_meta: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_meta
-  andThen: org_apache_causeway_commons_functional_ThrowingFunction__andThen__gqlv_action
-  compose: org_apache_causeway_commons_functional_ThrowingFunction__compose__gqlv_action
-  throwing: org_apache_causeway_commons_functional_ThrowingFunction__throwing__gqlv_action
+type university_calc_Calculator__addFloats__x__gqlv_action_parameter {
+  disabled(x: Float): String
+  hidden: Boolean
+  validity: String
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__andThen__arg0__gqlv_action_parameter {
-  disabled(arg0: java_util_function_Function__gqlv_input): String
-  hidden: Boolean
+type university_calc_Calculator__addFloats__y__gqlv_action_parameter {
+  disabled(x: Float, y: Float): String
+  hidden(x: Float): Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__andThen__gqlv_action {
+type university_calc_Calculator__addIntegerWrappers__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(arg0: java_util_function_Function__gqlv_input!): java_util_function_Function
-  params: org_apache_causeway_commons_functional_ThrowingFunction__andThen__gqlv_action_params
-  validate(arg0: java_util_function_Function__gqlv_input): String
+  invoke(x: Int!, y: Int): Int
+  params: university_calc_Calculator__addIntegerWrappers__gqlv_action_params
+  validate(x: Int, y: Int): String
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__andThen__gqlv_action_params {
-  arg0: org_apache_causeway_commons_functional_ThrowingFunction__andThen__arg0__gqlv_action_parameter
+type university_calc_Calculator__addIntegerWrappers__gqlv_action_params {
+  x: university_calc_Calculator__addIntegerWrappers__x__gqlv_action_parameter
+  y: university_calc_Calculator__addIntegerWrappers__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__compose__arg0__gqlv_action_parameter {
-  disabled(arg0: java_util_function_Function__gqlv_input): String
+type university_calc_Calculator__addIntegerWrappers__x__gqlv_action_parameter {
+  disabled(x: Int): String
   hidden: Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__compose__gqlv_action {
+type university_calc_Calculator__addIntegerWrappers__y__gqlv_action_parameter {
+  disabled(x: Int, y: Int): String
+  hidden(x: Int): Boolean
+  validity: String
+}
+
+type university_calc_Calculator__addIntegers__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(arg0: java_util_function_Function__gqlv_input!): java_util_function_Function
-  params: org_apache_causeway_commons_functional_ThrowingFunction__compose__gqlv_action_params
-  validate(arg0: java_util_function_Function__gqlv_input): String
+  invoke(x: Int!, y: Int!): Int
+  params: university_calc_Calculator__addIntegers__gqlv_action_params
+  validate(x: Int, y: Int): String
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__compose__gqlv_action_params {
-  arg0: org_apache_causeway_commons_functional_ThrowingFunction__compose__arg0__gqlv_action_parameter
+type university_calc_Calculator__addIntegers__gqlv_action_params {
+  x: university_calc_Calculator__addIntegers__x__gqlv_action_parameter
+  y: university_calc_Calculator__addIntegers__y__gqlv_action_parameter
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__gqlv_meta {
-  id: String!
-  logicalTypeName: String!
+type university_calc_Calculator__addIntegers__x__gqlv_action_parameter {
+  disabled(x: Int): String
+  hidden: Boolean
+  validity: String
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__throwing__exceptionWrapper__gqlv_action_parameter {
-  disabled(exceptionWrapper: java_util_function_BiFunction__gqlv_input): String
-  hidden: Boolean
+type university_calc_Calculator__addIntegers__y__gqlv_action_parameter {
+  disabled(x: Int, y: Int): String
+  hidden(x: Int): Boolean
   validity: String
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__throwing__gqlv_action {
+type university_calc_Calculator__addShortWrappers__gqlv_action {
   disabled: String
   hidden: Boolean
-  invokeNonIdempotent(exceptionWrapper: java_util_function_BiFunction__gqlv_input!): org_apache_causeway_commons_functional_ThrowingFunction
-  params: org_apache_causeway_commons_functional_ThrowingFunction__throwing__gqlv_action_params
-  validate(exceptionWrapper: java_util_function_BiFunction__gqlv_input): String
+  invoke(x: Int!, y: Int): Int
+  params: university_calc_Calculator__addShortWrappers__gqlv_action_params
+  validate(x: Int, y: Int): String
 }
 
-type org_apache_causeway_commons_functional_ThrowingFunction__throwing__gqlv_action_params {
-  exceptionWrapper: org_apache_causeway_commons_functional_ThrowingFunction__throwing__exceptionWrapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_ThrowingRunnable {
-  _gqlv_meta: org_apache_causeway_commons_functional_ThrowingRunnable__gqlv_meta
-  callUncatched: org_apache_causeway_commons_functional_ThrowingRunnable__callUncatched__gqlv_action
-  run: org_apache_causeway_commons_functional_ThrowingRunnable__run__gqlv_action
-  runUncatched: org_apache_causeway_commons_functional_ThrowingRunnable__runUncatched__gqlv_action
-  toCallable: org_apache_causeway_commons_functional_ThrowingRunnable__toCallable__gqlv_action
-  toRunnable: org_apache_causeway_commons_functional_ThrowingRunnable__toRunnable__gqlv_action
-}
-
-type org_apache_causeway_commons_functional_ThrowingRunnable__callUncatched__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: String
-  validate: String
-}
-
-type org_apache_causeway_commons_functional_ThrowingRunnable__gqlv_meta {
-  id: String!
-  logicalTypeName: String!
-}
-
-type org_apache_causeway_commons_functional_ThrowingRunnable__runUncatched__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: String
-  validate: String
-}
-
-type org_apache_causeway_commons_functional_ThrowingRunnable__run__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: String
-  validate: String
-}
-
-type org_apache_causeway_commons_functional_ThrowingRunnable__toCallable__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: java_util_concurrent_Callable
-  validate: String
-}
-
-type org_apache_causeway_commons_functional_ThrowingRunnable__toRunnable__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: java_lang_Runnable
-  validate: String
-}
-
-type org_apache_causeway_commons_functional_Try {
-  _gqlv_meta: org_apache_causeway_commons_functional_Try__gqlv_meta
-  accept: org_apache_causeway_commons_functional_Try__accept__gqlv_action
-  failure: org_apache_causeway_commons_functional_Try__failure__gqlv_property
-  flatMapSuccess: org_apache_causeway_commons_functional_Try__flatMapSuccess__gqlv_action
-  flatMapSuccessAsNullable: org_apache_causeway_commons_functional_Try__flatMapSuccessAsNullable__gqlv_action
-  flatMapSuccessWhenPresent: org_apache_causeway_commons_functional_Try__flatMapSuccessWhenPresent__gqlv_action
-  ifAbsentFail: org_apache_causeway_commons_functional_Try__ifAbsentFail__gqlv_action
-  ifFailure: org_apache_causeway_commons_functional_Try__ifFailure__gqlv_action
-  ifFailureFail: org_apache_causeway_commons_functional_Try__ifFailureFail__gqlv_action
-  ifSuccess: org_apache_causeway_commons_functional_Try__ifSuccess__gqlv_action
-  ifSuccessAsNullable: org_apache_causeway_commons_functional_Try__ifSuccessAsNullable__gqlv_action
-  mapEmptyToFailure: org_apache_causeway_commons_functional_Try__mapEmptyToFailure__gqlv_action
-  mapFailure: org_apache_causeway_commons_functional_Try__mapFailure__gqlv_action
-  mapFailureToSuccess: org_apache_causeway_commons_functional_Try__mapFailureToSuccess__gqlv_action
-  mapSuccess: org_apache_causeway_commons_functional_Try__mapSuccess__gqlv_action
-  mapSuccessAsNullable: org_apache_causeway_commons_functional_Try__mapSuccessAsNullable__gqlv_action
-  mapSuccessWhenPresent: org_apache_causeway_commons_functional_Try__mapSuccessWhenPresent__gqlv_action
-  mapToEither: org_apache_causeway_commons_functional_Try__mapToEither__gqlv_action
-  orCall: org_apache_causeway_commons_functional_Try__orCall__gqlv_action
-  success: org_apache_causeway_commons_functional_Try__success__gqlv_property
-  then: org_apache_causeway_commons_functional_Try__then__gqlv_action
-  thenCall: org_apache_causeway_commons_functional_Try__thenCall__gqlv_action
-  thenRun: org_apache_causeway_commons_functional_Try__thenRun__gqlv_action
-  value: org_apache_causeway_commons_functional_Try__value__gqlv_property
-}
-
-type org_apache_causeway_commons_functional_Try__accept__failureConsumer__gqlv_action_parameter {
-  disabled(failureConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__accept__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(failureConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input!, successConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__accept__gqlv_action_params
-  validate(failureConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input, successConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__accept__gqlv_action_params {
-  failureConsumer: org_apache_causeway_commons_functional_Try__accept__failureConsumer__gqlv_action_parameter
-  successConsumer: org_apache_causeway_commons_functional_Try__accept__successConsumer__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__accept__successConsumer__gqlv_action_parameter {
-  disabled(failureConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input, successConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-  hidden(failureConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__failure__gqlv_property {
-  disabled: String
-  get: Boolean!
-  hidden: Boolean
-  set(failure: Boolean!): org_apache_causeway_commons_functional_Try
-  validate(failure: Boolean): String
-}
-
-type org_apache_causeway_commons_functional_Try__flatMapSuccessAsNullable__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__flatMapSuccessAsNullable__gqlv_action_params
-  validate(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__flatMapSuccessAsNullable__gqlv_action_params {
-  successMapper: org_apache_causeway_commons_functional_Try__flatMapSuccessAsNullable__successMapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__flatMapSuccessAsNullable__successMapper__gqlv_action_parameter {
-  disabled(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__flatMapSuccessWhenPresent__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__flatMapSuccessWhenPresent__gqlv_action_params
-  validate(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__flatMapSuccessWhenPresent__gqlv_action_params {
-  successMapper: org_apache_causeway_commons_functional_Try__flatMapSuccessWhenPresent__successMapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__flatMapSuccessWhenPresent__successMapper__gqlv_action_parameter {
-  disabled(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__flatMapSuccess__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__flatMapSuccess__gqlv_action_params
-  validate(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__flatMapSuccess__gqlv_action_params {
-  successMapper: org_apache_causeway_commons_functional_Try__flatMapSuccess__successMapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__flatMapSuccess__successMapper__gqlv_action_parameter {
-  disabled(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__gqlv_meta {
-  id: String!
-  logicalTypeName: String!
-}
-
-type org_apache_causeway_commons_functional_Try__ifAbsentFail__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: org_apache_causeway_commons_functional_Try
-  validate: String
-}
-
-type org_apache_causeway_commons_functional_Try__ifFailureFail__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: org_apache_causeway_commons_functional_Try
-  validate: String
-}
-
-type org_apache_causeway_commons_functional_Try__ifFailure__exceptionConsumer__gqlv_action_parameter {
-  disabled(exceptionConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__ifFailure__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(exceptionConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__ifFailure__gqlv_action_params
-  validate(exceptionConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__ifFailure__gqlv_action_params {
-  exceptionConsumer: org_apache_causeway_commons_functional_Try__ifFailure__exceptionConsumer__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__ifSuccessAsNullable__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(valueConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__ifSuccessAsNullable__gqlv_action_params
-  validate(valueConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__ifSuccessAsNullable__gqlv_action_params {
-  valueConsumer: org_apache_causeway_commons_functional_Try__ifSuccessAsNullable__valueConsumer__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__ifSuccessAsNullable__valueConsumer__gqlv_action_parameter {
-  disabled(valueConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__ifSuccess__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(valueConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__ifSuccess__gqlv_action_params
-  validate(valueConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__ifSuccess__gqlv_action_params {
-  valueConsumer: org_apache_causeway_commons_functional_Try__ifSuccess__valueConsumer__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__ifSuccess__valueConsumer__gqlv_action_parameter {
-  disabled(valueConsumer: org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__mapEmptyToFailure__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: org_apache_causeway_commons_functional_Try
-  validate: String
-}
-
-type org_apache_causeway_commons_functional_Try__mapFailureToSuccess__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(recoveryMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__mapFailureToSuccess__gqlv_action_params
-  validate(recoveryMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__mapFailureToSuccess__gqlv_action_params {
-  recoveryMapper: org_apache_causeway_commons_functional_Try__mapFailureToSuccess__recoveryMapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__mapFailureToSuccess__recoveryMapper__gqlv_action_parameter {
-  disabled(recoveryMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__mapFailure__failureMapper__gqlv_action_parameter {
-  disabled(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__mapFailure__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__mapFailure__gqlv_action_params
-  validate(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__mapFailure__gqlv_action_params {
-  failureMapper: org_apache_causeway_commons_functional_Try__mapFailure__failureMapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__mapSuccessAsNullable__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__mapSuccessAsNullable__gqlv_action_params
-  validate(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__mapSuccessAsNullable__gqlv_action_params {
-  successMapper: org_apache_causeway_commons_functional_Try__mapSuccessAsNullable__successMapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__mapSuccessAsNullable__successMapper__gqlv_action_parameter {
-  disabled(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__mapSuccessWhenPresent__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__mapSuccessWhenPresent__gqlv_action_params
-  validate(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__mapSuccessWhenPresent__gqlv_action_params {
-  successMapper: org_apache_causeway_commons_functional_Try__mapSuccessWhenPresent__successMapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__mapSuccessWhenPresent__successMapper__gqlv_action_parameter {
-  disabled(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__mapSuccess__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__mapSuccess__gqlv_action_params
-  validate(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__mapSuccess__gqlv_action_params {
-  successMapper: org_apache_causeway_commons_functional_Try__mapSuccess__successMapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__mapSuccess__successMapper__gqlv_action_parameter {
-  disabled(successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__mapToEither__failureMapper__gqlv_action_parameter {
-  disabled(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__mapToEither__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!, successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input!): org_apache_causeway_commons_functional_Either
-  params: org_apache_causeway_commons_functional_Try__mapToEither__gqlv_action_params
-  validate(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input, successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__mapToEither__gqlv_action_params {
-  failureMapper: org_apache_causeway_commons_functional_Try__mapToEither__failureMapper__gqlv_action_parameter
-  successMapper: org_apache_causeway_commons_functional_Try__mapToEither__successMapper__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__mapToEither__successMapper__gqlv_action_parameter {
-  disabled(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input, successMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): String
-  hidden(failureMapper: org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input): Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__orCall__fallback__gqlv_action_parameter {
-  disabled(fallback: java_util_concurrent_Callable__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__orCall__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(fallback: java_util_concurrent_Callable__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__orCall__gqlv_action_params
-  validate(fallback: java_util_concurrent_Callable__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__orCall__gqlv_action_params {
-  fallback: org_apache_causeway_commons_functional_Try__orCall__fallback__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__success__gqlv_property {
-  disabled: String
-  get: Boolean!
-  hidden: Boolean
-  set(success: Boolean!): org_apache_causeway_commons_functional_Try
-  validate(success: Boolean): String
-}
-
-type org_apache_causeway_commons_functional_Try__thenCall__callable__gqlv_action_parameter {
-  disabled(callable: java_util_concurrent_Callable__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__thenCall__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(callable: java_util_concurrent_Callable__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__thenCall__gqlv_action_params
-  validate(callable: java_util_concurrent_Callable__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__thenCall__gqlv_action_params {
-  callable: org_apache_causeway_commons_functional_Try__thenCall__callable__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__thenRun__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(runnable: org_apache_causeway_commons_functional_ThrowingRunnable__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__thenRun__gqlv_action_params
-  validate(runnable: org_apache_causeway_commons_functional_ThrowingRunnable__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__thenRun__gqlv_action_params {
-  runnable: org_apache_causeway_commons_functional_Try__thenRun__runnable__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__thenRun__runnable__gqlv_action_parameter {
-  disabled(runnable: org_apache_causeway_commons_functional_ThrowingRunnable__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__then__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(next: java_util_concurrent_Callable__gqlv_input!): org_apache_causeway_commons_functional_Try
-  params: org_apache_causeway_commons_functional_Try__then__gqlv_action_params
-  validate(next: java_util_concurrent_Callable__gqlv_input): String
-}
-
-type org_apache_causeway_commons_functional_Try__then__gqlv_action_params {
-  next: org_apache_causeway_commons_functional_Try__then__next__gqlv_action_parameter
-}
-
-type org_apache_causeway_commons_functional_Try__then__next__gqlv_action_parameter {
-  disabled(next: java_util_concurrent_Callable__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type org_apache_causeway_commons_functional_Try__value__gqlv_property {
-  disabled: String
-  hidden: Boolean
-  set(value: String!): org_apache_causeway_commons_functional_Try
-  validate(value: String): String
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MMNode {
-  _gqlv_meta: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_meta
-  childNodes: org_apache_causeway_core_metamodel_inspect_model_MMNode__childNodes__gqlv_collection
-  parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__gqlv_property
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MMNode__childNodes__gqlv_collection {
-  disabled: String
-  hidden: Boolean
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_meta {
-  id: String!
-  logicalTypeName: String!
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__gqlv_property {
-  disabled: String
-  hidden: Boolean
-  set(parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input!): org_apache_causeway_core_metamodel_inspect_model_MMNode
-  validate(parentNode: org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input): String
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MemberNode {
-  _gqlv_meta: org_apache_causeway_core_metamodel_inspect_model_MemberNode__gqlv_meta
-  childNodes: org_apache_causeway_core_metamodel_inspect_model_MemberNode__childNodes__gqlv_collection
-  mixedIn: org_apache_causeway_core_metamodel_inspect_model_MemberNode__mixedIn__gqlv_property
-  parentNode: org_apache_causeway_core_metamodel_inspect_model_MemberNode__parentNode__gqlv_property
-  streamChildNodes: org_apache_causeway_core_metamodel_inspect_model_MemberNode__streamChildNodes__gqlv_action
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MemberNode__childNodes__gqlv_collection {
-  disabled: String
-  hidden: Boolean
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MemberNode__gqlv_meta {
-  id: String!
-  logicalTypeName: String!
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MemberNode__mixedIn__gqlv_property {
-  disabled: String
-  get: Boolean!
-  hidden: Boolean
-  set(mixedIn: Boolean!): org_apache_causeway_core_metamodel_inspect_model_MemberNode
-  validate(mixedIn: Boolean): String
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MemberNode__parentNode__gqlv_property {
-  disabled: String
-  get: causeway_applib_TypeNode!
-  hidden: Boolean
-  set(parentNode: causeway_applib_TypeNode__gqlv_input!): org_apache_causeway_core_metamodel_inspect_model_MemberNode
-  validate(parentNode: causeway_applib_TypeNode__gqlv_input): String
-}
-
-type org_apache_causeway_core_metamodel_inspect_model_MemberNode__streamChildNodes__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: java_util_stream_Stream
-  validate: String
-}
-
-type org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript {
-  _gqlv_meta: org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__gqlv_meta
-  friendlyName: org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__friendlyName__gqlv_property
-  qualifiedName: org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__qualifiedName__gqlv_property
-}
-
-type org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__friendlyName__gqlv_property {
-  disabled: String
-  get: String!
-  hidden: Boolean
-  set(friendlyName: String!): org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript
-  validate(friendlyName: String): String
-}
-
-type org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__gqlv_meta {
-  id: String!
-  logicalTypeName: String!
-}
-
-type org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript__qualifiedName__gqlv_property {
-  disabled: String
-  get: String!
-  hidden: Boolean
-  set(qualifiedName: String!): org_apache_causeway_testing_fixtures_applib_fixturescripts_FixtureScript
-  validate(qualifiedName: String): String
-}
-
-type university_admin_AdminMenu {
-  actionWithDisabledParam: university_admin_AdminMenu__actionWithDisabledParam__gqlv_action
-  actionWithHiddenParam: university_admin_AdminMenu__actionWithHiddenParam__gqlv_action
-  adminAction: university_admin_AdminMenu__adminAction__gqlv_action
-  otherAdminAction: university_admin_AdminMenu__otherAdminAction__gqlv_action
-}
-
-type university_admin_AdminMenu__actionWithDisabledParam__firstParam__gqlv_action_parameter {
-  disabled(firstParam: String): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_admin_AdminMenu__actionWithDisabledParam__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(firstParam: String!, secondParam: String!, thirdParameter: String!): String
-  params: university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_params
-  validate(firstParam: String, secondParam: String, thirdParameter: String): String
-}
-
-type university_admin_AdminMenu__actionWithDisabledParam__gqlv_action_params {
-  firstParam: university_admin_AdminMenu__actionWithDisabledParam__firstParam__gqlv_action_parameter
-  secondParam: university_admin_AdminMenu__actionWithDisabledParam__secondParam__gqlv_action_parameter
-  thirdParameter: university_admin_AdminMenu__actionWithDisabledParam__thirdParameter__gqlv_action_parameter
-}
-
-type university_admin_AdminMenu__actionWithDisabledParam__secondParam__gqlv_action_parameter {
-  disabled(firstParam: String, secondParam: String): String
-  hidden(firstParam: String): Boolean
-  validity: String
-}
-
-type university_admin_AdminMenu__actionWithDisabledParam__thirdParameter__gqlv_action_parameter {
-  disabled(firstParam: String, secondParam: String, thirdParameter: String): String
-  hidden(firstParam: String, secondParam: String): Boolean
-  validity: String
-}
-
-type university_admin_AdminMenu__actionWithHiddenParam__firstParam__gqlv_action_parameter {
-  disabled(firstParam: String): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_admin_AdminMenu__actionWithHiddenParam__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(firstParam: String!, secondParam: String!): String
-  params: university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_params
-  validate(firstParam: String, secondParam: String): String
-}
-
-type university_admin_AdminMenu__actionWithHiddenParam__gqlv_action_params {
-  firstParam: university_admin_AdminMenu__actionWithHiddenParam__firstParam__gqlv_action_parameter
-  secondParam: university_admin_AdminMenu__actionWithHiddenParam__secondParam__gqlv_action_parameter
-}
-
-type university_admin_AdminMenu__actionWithHiddenParam__secondParam__gqlv_action_parameter {
-  disabled(firstParam: String, secondParam: String): String
-  hidden(firstParam: String): Boolean
-  validity: String
-}
-
-type university_admin_AdminMenu__adminAction__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: String
-  validate: String
-}
-
-type university_admin_AdminMenu__otherAdminAction__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent: String
-  validate: String
-}
-
-type university_calc_Calculator {
-  addBigDecimals: university_calc_Calculator__addBigDecimals__gqlv_action
-  addBigIntegers: university_calc_Calculator__addBigIntegers__gqlv_action
-  addByteWrappers: university_calc_Calculator__addByteWrappers__gqlv_action
-  addBytes: university_calc_Calculator__addBytes__gqlv_action
-  addDoubleWrappers: university_calc_Calculator__addDoubleWrappers__gqlv_action
-  addDoubles: university_calc_Calculator__addDoubles__gqlv_action
-  addFloatWrappers: university_calc_Calculator__addFloatWrappers__gqlv_action
-  addFloats: university_calc_Calculator__addFloats__gqlv_action
-  addIntegerWrappers: university_calc_Calculator__addIntegerWrappers__gqlv_action
-  addIntegers: university_calc_Calculator__addIntegers__gqlv_action
-  addShortWrappers: university_calc_Calculator__addShortWrappers__gqlv_action
-  addShorts: university_calc_Calculator__addShorts__gqlv_action
-  and: university_calc_Calculator__and__gqlv_action
-  concat: university_calc_Calculator__concat__gqlv_action
-  nextMonth: university_calc_Calculator__nextMonth__gqlv_action
-  not: university_calc_Calculator__not__gqlv_action
-  or: university_calc_Calculator__or__gqlv_action
-  plusDays: university_calc_Calculator__plusDays__gqlv_action
-  plusJodaDays: university_calc_Calculator__plusJodaDays__gqlv_action
-}
-
-type university_calc_Calculator__addBigDecimals__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: Float!, y: Float): Float
-  params: university_calc_Calculator__addBigDecimals__gqlv_action_params
-  validate(x: Float, y: Float): String
-}
-
-type university_calc_Calculator__addBigDecimals__gqlv_action_params {
-  x: university_calc_Calculator__addBigDecimals__x__gqlv_action_parameter
-  y: university_calc_Calculator__addBigDecimals__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addBigDecimals__x__gqlv_action_parameter {
-  disabled(x: Float): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addBigDecimals__y__gqlv_action_parameter {
-  disabled(x: Float, y: Float): String
-  hidden(x: Float): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addBigIntegers__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: Int!, y: Int): Int
-  params: university_calc_Calculator__addBigIntegers__gqlv_action_params
-  validate(x: Int, y: Int): String
-}
-
-type university_calc_Calculator__addBigIntegers__gqlv_action_params {
-  x: university_calc_Calculator__addBigIntegers__x__gqlv_action_parameter
-  y: university_calc_Calculator__addBigIntegers__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addBigIntegers__x__gqlv_action_parameter {
-  disabled(x: Int): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addBigIntegers__y__gqlv_action_parameter {
-  disabled(x: Int, y: Int): String
-  hidden(x: Int): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addByteWrappers__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: String!, y: String): Int
-  params: university_calc_Calculator__addByteWrappers__gqlv_action_params
-  validate(x: String, y: String): String
-}
-
-type university_calc_Calculator__addByteWrappers__gqlv_action_params {
-  x: university_calc_Calculator__addByteWrappers__x__gqlv_action_parameter
-  y: university_calc_Calculator__addByteWrappers__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addByteWrappers__x__gqlv_action_parameter {
-  disabled(x: String): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addByteWrappers__y__gqlv_action_parameter {
-  disabled(x: String, y: String): String
-  hidden(x: String): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addBytes__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: String!, y: String!): String
-  params: university_calc_Calculator__addBytes__gqlv_action_params
-  validate(x: String, y: String): String
-}
-
-type university_calc_Calculator__addBytes__gqlv_action_params {
-  x: university_calc_Calculator__addBytes__x__gqlv_action_parameter
-  y: university_calc_Calculator__addBytes__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addBytes__x__gqlv_action_parameter {
-  disabled(x: String): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addBytes__y__gqlv_action_parameter {
-  disabled(x: String, y: String): String
-  hidden(x: String): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addDoubleWrappers__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: Float!, y: Float): Float
-  params: university_calc_Calculator__addDoubleWrappers__gqlv_action_params
-  validate(x: Float, y: Float): String
-}
-
-type university_calc_Calculator__addDoubleWrappers__gqlv_action_params {
-  x: university_calc_Calculator__addDoubleWrappers__x__gqlv_action_parameter
-  y: university_calc_Calculator__addDoubleWrappers__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addDoubleWrappers__x__gqlv_action_parameter {
-  disabled(x: Float): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addDoubleWrappers__y__gqlv_action_parameter {
-  disabled(x: Float, y: Float): String
-  hidden(x: Float): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addDoubles__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: Float!, y: Float!): Float
-  params: university_calc_Calculator__addDoubles__gqlv_action_params
-  validate(x: Float, y: Float): String
-}
-
-type university_calc_Calculator__addDoubles__gqlv_action_params {
-  x: university_calc_Calculator__addDoubles__x__gqlv_action_parameter
-  y: university_calc_Calculator__addDoubles__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addDoubles__x__gqlv_action_parameter {
-  disabled(x: Float): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addDoubles__y__gqlv_action_parameter {
-  disabled(x: Float, y: Float): String
-  hidden(x: Float): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addFloatWrappers__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: Float!, y: Float): Float
-  params: university_calc_Calculator__addFloatWrappers__gqlv_action_params
-  validate(x: Float, y: Float): String
-}
-
-type university_calc_Calculator__addFloatWrappers__gqlv_action_params {
-  x: university_calc_Calculator__addFloatWrappers__x__gqlv_action_parameter
-  y: university_calc_Calculator__addFloatWrappers__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addFloatWrappers__x__gqlv_action_parameter {
-  disabled(x: Float): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addFloatWrappers__y__gqlv_action_parameter {
-  disabled(x: Float, y: Float): String
-  hidden(x: Float): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addFloats__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: Float!, y: Float!): Float
-  params: university_calc_Calculator__addFloats__gqlv_action_params
-  validate(x: Float, y: Float): String
-}
-
-type university_calc_Calculator__addFloats__gqlv_action_params {
-  x: university_calc_Calculator__addFloats__x__gqlv_action_parameter
-  y: university_calc_Calculator__addFloats__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addFloats__x__gqlv_action_parameter {
-  disabled(x: Float): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addFloats__y__gqlv_action_parameter {
-  disabled(x: Float, y: Float): String
-  hidden(x: Float): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addIntegerWrappers__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: Int!, y: Int): Int
-  params: university_calc_Calculator__addIntegerWrappers__gqlv_action_params
-  validate(x: Int, y: Int): String
-}
-
-type university_calc_Calculator__addIntegerWrappers__gqlv_action_params {
-  x: university_calc_Calculator__addIntegerWrappers__x__gqlv_action_parameter
-  y: university_calc_Calculator__addIntegerWrappers__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addIntegerWrappers__x__gqlv_action_parameter {
-  disabled(x: Int): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addIntegerWrappers__y__gqlv_action_parameter {
-  disabled(x: Int, y: Int): String
-  hidden(x: Int): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addIntegers__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: Int!, y: Int!): Int
-  params: university_calc_Calculator__addIntegers__gqlv_action_params
-  validate(x: Int, y: Int): String
-}
-
-type university_calc_Calculator__addIntegers__gqlv_action_params {
-  x: university_calc_Calculator__addIntegers__x__gqlv_action_parameter
-  y: university_calc_Calculator__addIntegers__y__gqlv_action_parameter
-}
-
-type university_calc_Calculator__addIntegers__x__gqlv_action_parameter {
-  disabled(x: Int): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addIntegers__y__gqlv_action_parameter {
-  disabled(x: Int, y: Int): String
-  hidden(x: Int): Boolean
-  validity: String
-}
-
-type university_calc_Calculator__addShortWrappers__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invoke(x: Int!, y: Int): Int
-  params: university_calc_Calculator__addShortWrappers__gqlv_action_params
-  validate(x: Int, y: Int): String
-}
-
-type university_calc_Calculator__addShortWrappers__gqlv_action_params {
-  x: university_calc_Calculator__addShortWrappers__x__gqlv_action_parameter
-  y: university_calc_Calculator__addShortWrappers__y__gqlv_action_parameter
+type university_calc_Calculator__addShortWrappers__gqlv_action_params {
+  x: university_calc_Calculator__addShortWrappers__x__gqlv_action_parameter
+  y: university_calc_Calculator__addShortWrappers__y__gqlv_action_parameter
 }
 
 type university_calc_Calculator__addShortWrappers__x__gqlv_action_parameter {
@@ -2711,99 +1732,16 @@ type university_calc_Calculator__plusJodaDays__numDays__gqlv_action_parameter {
 
 type university_dept_Department {
   _gqlv_meta: university_dept_Department__gqlv_meta
-  addStaffMember: university_dept_Department__addStaffMember__gqlv_action
-  addStaffMembers: university_dept_Department__addStaffMembers__gqlv_action
-  changeDeptHead: university_dept_Department__changeDeptHead__gqlv_action
-  changeName: university_dept_Department__changeName__gqlv_action
   deptHead: university_dept_Department__deptHead__gqlv_property
   name: university_dept_Department__name__gqlv_property
-  removeStaffMember: university_dept_Department__removeStaffMember__gqlv_action
   staffMembers: university_dept_Department__staffMembers__gqlv_collection
 }
 
-type university_dept_Department__addStaffMember__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeIdempotent(staffMember: university_dept_StaffMember__gqlv_input!): university_dept_Department
-  params: university_dept_Department__addStaffMember__gqlv_action_params
-  validate(staffMember: university_dept_StaffMember__gqlv_input): String
-}
-
-type university_dept_Department__addStaffMember__gqlv_action_params {
-  staffMember: university_dept_Department__addStaffMember__staffMember__gqlv_action_parameter
-}
-
-type university_dept_Department__addStaffMember__staffMember__gqlv_action_parameter {
-  autoComplete(search: String!): [university_dept_StaffMember]
-  disabled(staffMember: university_dept_StaffMember__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_dept_Department__addStaffMembers__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeIdempotent(staffMembers: [university_dept_StaffMember__gqlv_input]): university_dept_Department
-  params: university_dept_Department__addStaffMembers__gqlv_action_params
-  validate(staffMembers: [university_dept_StaffMember__gqlv_input]): String
-}
-
-type university_dept_Department__addStaffMembers__gqlv_action_params {
-  staffMembers: university_dept_Department__addStaffMembers__staffMembers__gqlv_action_parameter
-}
-
-type university_dept_Department__addStaffMembers__staffMembers__gqlv_action_parameter {
-  choices: [university_dept_StaffMember]
-  disabled(staffMembers: [university_dept_StaffMember__gqlv_input]): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_dept_Department__changeDeptHead__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeIdempotent(newDeptHead: university_dept_DeptHead__gqlv_input!): university_dept_Department
-  params: university_dept_Department__changeDeptHead__gqlv_action_params
-  validate(newDeptHead: university_dept_DeptHead__gqlv_input): String
-}
-
-type university_dept_Department__changeDeptHead__gqlv_action_params {
-  newDeptHead: university_dept_Department__changeDeptHead__newDeptHead__gqlv_action_parameter
-}
-
-type university_dept_Department__changeDeptHead__newDeptHead__gqlv_action_parameter {
-  autoComplete(search: String!): [university_dept_DeptHead]
-  default: university_dept_DeptHead
-  disabled(newDeptHead: university_dept_DeptHead__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_dept_Department__changeName__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeIdempotent(newName: String!): university_dept_Department
-  params: university_dept_Department__changeName__gqlv_action_params
-  validate(newName: String): String
-}
-
-type university_dept_Department__changeName__gqlv_action_params {
-  newName: university_dept_Department__changeName__newName__gqlv_action_parameter
-}
-
-type university_dept_Department__changeName__newName__gqlv_action_parameter {
-  default: String
-  disabled(newName: String): String
-  hidden: Boolean
-  validity: String
-}
-
 type university_dept_Department__deptHead__gqlv_property {
   autoComplete(search: String!): [university_dept_DeptHead]
   disabled: String
   get: university_dept_DeptHead
   hidden: Boolean
-  set(deptHead: university_dept_DeptHead__gqlv_input): university_dept_Department
   validate(deptHead: university_dept_DeptHead__gqlv_input): String
 }
 
@@ -2817,29 +1755,9 @@ type university_dept_Department__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(name: String!): university_dept_Department
   validate(name: String): String
 }
 
-type university_dept_Department__removeStaffMember__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeIdempotent(staffMember: university_dept_StaffMember__gqlv_input!): university_dept_Department
-  params: university_dept_Department__removeStaffMember__gqlv_action_params
-  validate(staffMember: university_dept_StaffMember__gqlv_input): String
-}
-
-type university_dept_Department__removeStaffMember__gqlv_action_params {
-  staffMember: university_dept_Department__removeStaffMember__staffMember__gqlv_action_parameter
-}
-
-type university_dept_Department__removeStaffMember__staffMember__gqlv_action_parameter {
-  choices: [university_dept_StaffMember]
-  disabled(staffMember: university_dept_StaffMember__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
 type university_dept_Department__staffMembers__gqlv_collection {
   disabled: String
   get: [university_dept_StaffMember]
@@ -2847,37 +1765,10 @@ type university_dept_Department__staffMembers__gqlv_collection {
 }
 
 type university_dept_Departments {
-  createDepartment: university_dept_Departments__createDepartment__gqlv_action
   findAllDepartments: university_dept_Departments__findAllDepartments__gqlv_action
   findDepartmentByName: university_dept_Departments__findDepartmentByName__gqlv_action
 }
 
-type university_dept_Departments__createDepartment__deptHead__gqlv_action_parameter {
-  autoComplete(name: String, search: String!): [university_dept_DeptHead]
-  disabled(deptHead: university_dept_DeptHead__gqlv_input, name: String): String
-  hidden(name: String): Boolean
-  validity: String
-}
-
-type university_dept_Departments__createDepartment__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(deptHead: university_dept_DeptHead__gqlv_input, name: String!): university_dept_Department
-  params: university_dept_Departments__createDepartment__gqlv_action_params
-  validate(deptHead: university_dept_DeptHead__gqlv_input, name: String): String
-}
-
-type university_dept_Departments__createDepartment__gqlv_action_params {
-  deptHead: university_dept_Departments__createDepartment__deptHead__gqlv_action_parameter
-  name: university_dept_Departments__createDepartment__name__gqlv_action_parameter
-}
-
-type university_dept_Departments__createDepartment__name__gqlv_action_parameter {
-  disabled(name: String): String
-  hidden: Boolean
-  validity: String
-}
-
 type university_dept_Departments__findAllDepartments__gqlv_action {
   disabled: String
   hidden: Boolean
@@ -2905,56 +1796,15 @@ type university_dept_Departments__findDepartmentByName__name__gqlv_action_parame
 
 type university_dept_DeptHead {
   _gqlv_meta: university_dept_DeptHead__gqlv_meta
-  changeDepartment: university_dept_DeptHead__changeDepartment__gqlv_action
-  changeName: university_dept_DeptHead__changeName__gqlv_action
   department: university_dept_DeptHead__department__gqlv_property
   name: university_dept_DeptHead__name__gqlv_property
 }
 
-type university_dept_DeptHead__changeDepartment__department__gqlv_action_parameter {
-  choices: [university_dept_Department]
-  disabled(department: university_dept_Department__gqlv_input): String
-  hidden: Boolean
-  validity: String
-}
-
-type university_dept_DeptHead__changeDepartment__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeIdempotent(department: university_dept_Department__gqlv_input!): university_dept_DeptHead
-  params: university_dept_DeptHead__changeDepartment__gqlv_action_params
-  validate(department: university_dept_Department__gqlv_input): String
-}
-
-type university_dept_DeptHead__changeDepartment__gqlv_action_params {
-  department: university_dept_DeptHead__changeDepartment__department__gqlv_action_parameter
-}
-
-type university_dept_DeptHead__changeName__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeIdempotent(newName: String!): university_dept_DeptHead
-  params: university_dept_DeptHead__changeName__gqlv_action_params
-  validate(newName: String): String
-}
-
-type university_dept_DeptHead__changeName__gqlv_action_params {
-  newName: university_dept_DeptHead__changeName__newName__gqlv_action_parameter
-}
-
-type university_dept_DeptHead__changeName__newName__gqlv_action_parameter {
-  default: String
-  disabled(newName: String): String
-  hidden: Boolean
-  validity: String
-}
-
 type university_dept_DeptHead__department__gqlv_property {
   choices(department: university_dept_Department__gqlv_input): [university_dept_Department]
   disabled: String
   get: university_dept_Department
   hidden: Boolean
-  set(department: university_dept_Department__gqlv_input): university_dept_DeptHead
   validate(department: university_dept_Department__gqlv_input): String
 }
 
@@ -2968,7 +1818,6 @@ type university_dept_DeptHead__name__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(name: String): university_dept_DeptHead
   validate(name: String): String
 }
 
@@ -3003,7 +1852,6 @@ type university_dept_DeptHeads__findHeadByName__name__gqlv_action_parameter {
 }
 
 type university_dept_Staff {
-  createStaffMember: university_dept_Staff__createStaffMember__gqlv_action
   findAllStaffMembers: university_dept_Staff__findAllStaffMembers__gqlv_action
   findStaffMemberByName: university_dept_Staff__findStaffMemberByName__gqlv_action
 }
@@ -3021,7 +1869,6 @@ type university_dept_StaffMember__department__gqlv_property {
   disabled: String
   get: university_dept_Department
   hidden: Boolean
-  set(department: university_dept_Department__gqlv_input): university_dept_StaffMember
   validate(department: university_dept_Department__gqlv_input): String
 }
 
@@ -3036,7 +1883,6 @@ type university_dept_StaffMember__grade__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(grade: String!): university_dept_StaffMember
   validate(grade: String): String
 }
 
@@ -3044,7 +1890,6 @@ type university_dept_StaffMember__name__gqlv_property {
   disabled: String
   get: String!
   hidden: Boolean
-  set(name: String!): university_dept_StaffMember
   validate(name: String): String
 }
 
@@ -3052,36 +1897,9 @@ type university_dept_StaffMember__photo__gqlv_property {
   disabled: String
   get: String
   hidden: Boolean
-  set(photo: String): university_dept_StaffMember
   validate(photo: String): String
 }
 
-type university_dept_Staff__createStaffMember__department__gqlv_action_parameter {
-  choices(name: String): [university_dept_Department]
-  disabled(department: university_dept_Department__gqlv_input, name: String): String
-  hidden(name: String): Boolean
-  validity: String
-}
-
-type university_dept_Staff__createStaffMember__gqlv_action {
-  disabled: String
-  hidden: Boolean
-  invokeNonIdempotent(department: university_dept_Department__gqlv_input!, name: String!): university_dept_StaffMember
-  params: university_dept_Staff__createStaffMember__gqlv_action_params
-  validate(department: university_dept_Department__gqlv_input, name: String): String
-}
-
-type university_dept_Staff__createStaffMember__gqlv_action_params {
-  department: university_dept_Staff__createStaffMember__department__gqlv_action_parameter
-  name: university_dept_Staff__createStaffMember__name__gqlv_action_parameter
-}
-
-type university_dept_Staff__createStaffMember__name__gqlv_action_parameter {
-  disabled(name: String): String
-  hidden: Boolean
-  validity: String
-}
-
 type university_dept_Staff__findAllStaffMembers__gqlv_action {
   disabled: String
   hidden: Boolean
@@ -3231,30 +2049,6 @@ input java_util_stream_Stream__gqlv_input {
   id: ID!
 }
 
-input org_apache_causeway_commons_functional_Either__gqlv_input {
-  id: ID!
-}
-
-input org_apache_causeway_commons_functional_Railway__gqlv_input {
-  id: ID!
-}
-
-input org_apache_causeway_commons_functional_ThrowingConsumer__gqlv_input {
-  id: ID!
-}
-
-input org_apache_causeway_commons_functional_ThrowingFunction__gqlv_input {
-  id: ID!
-}
-
-input org_apache_causeway_commons_functional_ThrowingRunnable__gqlv_input {
-  id: ID!
-}
-
-input org_apache_causeway_commons_functional_Try__gqlv_input {
-  id: ID!
-}
-
 input org_apache_causeway_core_metamodel_inspect_model_MMNode__gqlv_input {
   id: ID!
 }
diff --git a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
index 62a00b5273..1d8930e97c 100644
--- a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
+++ b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/integration/GraphQlSourceForCauseway.java
@@ -23,6 +23,7 @@ import java.util.Comparator;
 import javax.annotation.PostConstruct;
 import javax.inject.Inject;
 
+import org.apache.causeway.commons.functional.Either;
 import org.apache.causeway.core.metamodel.spec.feature.MixedIn;
 import org.apache.causeway.viewer.graphql.viewer.toplevel.GqlvTopLevelMutation;
 
@@ -103,7 +104,7 @@ public class GraphQlSourceForCauseway implements GraphQlSource {
         }
 
         val codeRegistryBuilder = GraphQLCodeRegistry.newCodeRegistry();
-        val context = new Context(codeRegistryBuilder, bookmarkService, specificationLoader, typeMapper, causewayConfiguration, causewaySystemEnvironment);
+        val context = new Context(codeRegistryBuilder, bookmarkService, specificationLoader, typeMapper, serviceRegistry, causewayConfiguration, causewaySystemEnvironment);
 
         // add to the top-level query type and (dependent on configuration) the top-level mutation type also
         val topLevelQuery = new GqlvTopLevelQuery(serviceRegistry, codeRegistryBuilder);
@@ -114,6 +115,7 @@ public class GraphQlSourceForCauseway implements GraphQlSource {
 
 
         val objectSpecifications = specificationLoader.snapshotSpecifications()
+                .filter(x -> x.getCorrespondingClass().getPackage() != Either.class.getPackage())   // exclude the org.apache_causeway.commons.functional
                 .distinct((a, b) -> a.getLogicalTypeName().equals(b.getLogicalTypeName()))
                 .filter(x -> x.isEntityOrViewModelOrAbstract() || x.getBeanSort().isManagedBeanContributing())
                 .sorted(Comparator.comparing(HasLogicalType::getLogicalTypeName))
@@ -139,7 +141,7 @@ public class GraphQlSourceForCauseway implements GraphQlSource {
 
             });
             topLevelMutation.buildMutationType();
-            topLevelMutation.addFetchers();
+            topLevelMutation.addDataFetchers();
         }
 
         // add remaining domain objects
diff --git a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/toplevel/GqlvTopLevelMutation.java b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/toplevel/GqlvTopLevelMutation.java
index 9442da2755..00db413aee 100644
--- a/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/toplevel/GqlvTopLevelMutation.java
+++ b/viewers/graphql/viewer/src/main/java/org/apache/causeway/viewer/graphql/viewer/toplevel/GqlvTopLevelMutation.java
@@ -1,14 +1,12 @@
 package org.apache.causeway.viewer.graphql.viewer.toplevel;
 
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.List;
 
 import graphql.schema.DataFetchingEnvironment;
 import graphql.schema.FieldCoordinates;
 import graphql.schema.GraphQLArgument;
 import graphql.schema.GraphQLFieldDefinition;
-import graphql.schema.GraphQLInputType;
 import graphql.schema.GraphQLObjectType;
 
 import static graphql.schema.GraphQLObjectType.newObject;
@@ -24,7 +22,7 @@ import org.apache.causeway.core.metamodel.spec.feature.OneToOneActionParameter;
 import org.apache.causeway.viewer.graphql.applib.types.TypeMapper;
 import org.apache.causeway.viewer.graphql.model.context.Context;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvAction;
-import org.apache.causeway.viewer.graphql.model.domain.GqlvActionInvokeMutating;
+import org.apache.causeway.viewer.graphql.model.domain.GqlvMutation;
 import org.apache.causeway.viewer.graphql.model.domain.GqlvHolder;
 
 import lombok.Getter;
@@ -42,7 +40,7 @@ public class GqlvTopLevelMutation implements GqlvHolder {
      */
     private GraphQLObjectType gqlObjectType;
 
-    private final Map<String, GqlvActionInvokeMutating> actions = new LinkedHashMap<String, GqlvActionInvokeMutating>();
+    private final List<GqlvMutation> actions = new ArrayList<>();
 
     public GqlvTopLevelMutation(final Context context) {
         this.context = context;
@@ -87,8 +85,8 @@ public class GqlvTopLevelMutation implements GqlvHolder {
 
     public void addAction(ObjectSpecification objectSpec, final ObjectAction objectAction) {
         // TODO: kinda ugly the responsibilities here
-        val holder = new GqlvActionInvokeMutatingHolder(this, objectSpec, objectAction, context);
-        actions.put(objectAction.getId(), new GqlvActionInvokeMutating(holder, context));
+        val holder = new GqlvMutationHolder(this, objectSpec, objectAction, context);
+        actions.add(new GqlvMutation(holder, context));
     }
 
     @Override
@@ -102,19 +100,19 @@ public class GqlvTopLevelMutation implements GqlvHolder {
         return FieldCoordinates.coordinates(gqlObjectType, fieldDefinition);
     }
 
-    public void addFetchers() {
-
+    public void addDataFetchers() {
+        actions.forEach(GqlvMutation::addDataFetcher);
     }
 }
 
-class GqlvActionInvokeMutatingHolder implements GqlvActionInvokeMutating.Holder {
+class GqlvMutationHolder implements GqlvMutation.Holder {
 
     private final GqlvTopLevelMutation gqlvTopLevelMutation;
     private final ObjectSpecification objectSpec;
     private final ObjectAction objectAction;
     private final Context context;
 
-    public GqlvActionInvokeMutatingHolder(
+    public GqlvMutationHolder(
             final GqlvTopLevelMutation gqlvTopLevelMutation,
             final ObjectSpecification objectSpec,
             final ObjectAction objectAction,
@@ -135,50 +133,49 @@ class GqlvActionInvokeMutatingHolder implements GqlvActionInvokeMutating.Holder
             final GraphQLFieldDefinition.Builder fieldBuilder,
             final TypeMapper.InputContext inputContext) {
 
+        val arguments = new ArrayList<GraphQLArgument>();
+        val argName = context.causewayConfiguration.getViewer().getGraphql().getMutation().getTargetArgName();
+
         // add target (if not a service)
-        if (!objectSpec.getBeanSort().isManagedBeanContributing()) {
-            GraphQLInputType graphQLInputType = context.typeMapper.inputTypeFor(objectSpec);
-            fieldBuilder.argument(GraphQLArgument.newArgument()
-                    .name("target")
-                    .type(graphQLInputType)
-                    .build());
+        if (! objectSpec.getBeanSort().isManagedBeanContributing()) {
+            arguments.add(
+                GraphQLArgument.newArgument()
+                        .name(argName)
+                        .type(context.typeMapper.inputTypeFor(objectSpec))
+                        .build()
+            );
         }
 
         val parameters = objectAction.getParameters();
-        val arguments = parameters.stream()
-                .map(objectActionParameter -> gqlArgumentFor(objectActionParameter, inputContext))
-                .collect(Collectors.toList());
+        parameters.stream()
+                .map(this::gqlArgumentFor)
+                .forEach(arguments::add);
+
         if (!arguments.isEmpty()) {
             fieldBuilder.arguments(arguments);
         }
     }
 
-    // TODO: copied from GqlvAction
-    GraphQLArgument gqlArgumentFor(
-            final ObjectActionParameter objectActionParameter,
-            final TypeMapper.InputContext inputContext) {
+    // adapted from GqlvAction
+    GraphQLArgument gqlArgumentFor(final ObjectActionParameter objectActionParameter) {
         return objectActionParameter.isPlural()
-                ? gqlArgumentFor((OneToManyActionParameter) objectActionParameter, inputContext)
-                : gqlArgumentFor((OneToOneActionParameter) objectActionParameter, inputContext);
+                ? gqlArgumentFor((OneToManyActionParameter) objectActionParameter)
+                : gqlArgumentFor((OneToOneActionParameter) objectActionParameter);
     }
 
-    // TODO: copied from GqlvAction
-    GraphQLArgument gqlArgumentFor(
-            final OneToOneActionParameter oneToOneActionParameter,
-            final TypeMapper.InputContext inputContext) {
+    // adapted from GqlvAction
+    GraphQLArgument gqlArgumentFor(final OneToOneActionParameter oneToOneActionParameter) {
         return GraphQLArgument.newArgument()
                 .name(oneToOneActionParameter.getId())
-                .type(context.typeMapper.inputTypeFor(oneToOneActionParameter, inputContext))
+                .type(context.typeMapper.inputTypeFor(oneToOneActionParameter, TypeMapper.InputContext.INVOKE))
                 .build();
     }
 
     // TODO: copied from GqlvAction
-    GraphQLArgument gqlArgumentFor(
-            final OneToManyActionParameter oneToManyActionParameter,
-            final TypeMapper.InputContext inputContext) {
+    GraphQLArgument gqlArgumentFor(final OneToManyActionParameter oneToManyActionParameter) {
         return GraphQLArgument.newArgument()
                 .name(oneToManyActionParameter.getId())
-                .type(context.typeMapper.inputTypeFor(oneToManyActionParameter, inputContext))
+                .type(context.typeMapper.inputTypeFor(oneToManyActionParameter))
                 .build();
     }