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 5d74bdfe3047cbd387f8f4c47d69b56d3744b11e
Author: danhaywood <[email protected]>
AuthorDate: Wed Jan 24 09:12:30 2024 +0000

    CAUSEWAY-3676: adds CollectionGet
---
 .../graphql/model/domain/GqlvCollection.java       | 104 ++-
 .../graphql/model/domain/GqlvCollectionGet.java    | 109 +++
 .../model/domain/GqlvCollectionGetHolder.java      |  26 +
 ...lvCollection.java => GqlvCollectionSimple.java} |  22 +-
 .../graphql/model/domain/GqlvDomainObject.java     |  11 +-
 .../viewer/graphql/model/types/TypeMapper.java     |  19 +
 .../test/e2e/Schema_IntegTest.schema.approved.json | 906 +++++++++++++++++++--
 ...chema_IntegTest.schema_types_name.approved.json |  38 +
 .../graphql/test/src/test/resources/schema.gql     | 128 ++-
 9 files changed, 1248 insertions(+), 115 deletions(-)

diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
index 90fd4e934a..488223bd98 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
@@ -18,59 +18,95 @@
  */
 package org.apache.causeway.viewer.graphql.model.domain;
 
-import org.springframework.lang.Nullable;
-
-import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
+import org.apache.causeway.applib.services.bookmark.BookmarkService;
 import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation;
-import org.apache.causeway.viewer.graphql.model.types.TypeMapper;
+import org.apache.causeway.core.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.causeway.viewer.graphql.model.util.TypeNames;
 
+import lombok.val;
+
+import graphql.schema.DataFetcher;
+import graphql.schema.DataFetchingEnvironment;
+import graphql.schema.FieldCoordinates;
 import graphql.schema.GraphQLCodeRegistry;
 import graphql.schema.GraphQLFieldDefinition;
-import graphql.schema.GraphQLList;
+import graphql.schema.GraphQLObjectType;
 
 import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
-import static graphql.schema.GraphQLTypeReference.typeRef;
+import static graphql.schema.GraphQLObjectType.newObject;
+
+public class GqlvCollection extends GqlvAssociation<OneToManyAssociation, 
GqlvCollectionHolder> implements GqlvCollectionGetHolder, 
GqlvMemberHiddenHolder, GqlvMemberDisabledHolder {
 
-public class GqlvCollection extends GqlvAssociation<OneToManyAssociation, 
GqlvCollectionHolder> {
+    private final GraphQLObjectType.Builder gqlObjectTypeBuilder;
+    private final GraphQLObjectType gqlObjectType;
+    private final GqlvMemberHidden hidden;
+    private final GqlvMemberDisabled disabled;
+    private final GqlvCollectionGet get;
+    private final BookmarkService bookmarkService;
 
     public GqlvCollection(
             final GqlvCollectionHolder domainObject,
             final OneToManyAssociation oneToManyAssociation,
-            final GraphQLCodeRegistry.Builder codeRegistryBuilder
+            final GraphQLCodeRegistry.Builder codeRegistryBuilder,
+            final BookmarkService bookmarkService
     ) {
-        super(domainObject, oneToManyAssociation, 
fieldDefinition(domainObject, oneToManyAssociation), codeRegistryBuilder);
-    }
+        super(domainObject, oneToManyAssociation, codeRegistryBuilder);
 
-    @Nullable private static GraphQLFieldDefinition fieldDefinition(
-            final GqlvCollectionHolder holder,
-            final OneToManyAssociation otom) {
-        ObjectSpecification elementType = otom.getElementType();
-
-        GraphQLFieldDefinition fieldDefinition = null;
-        GraphQLList type = listTypeFor(elementType);
-        if (type != null) {
-                fieldDefinition = newFieldDefinition()
-                        .name(otom.getId())
-                        .type(type).build();
-                holder.addField(fieldDefinition);
-        }
-        return fieldDefinition;
-    }
+        this.gqlObjectTypeBuilder = 
newObject().name(TypeNames.collectionTypeNameFor(holder.getObjectSpecification(),
 oneToManyAssociation));
+        this.bookmarkService = bookmarkService;
 
-    @Nullable private static GraphQLList listTypeFor(ObjectSpecification 
elementType) {
-        switch (elementType.getBeanSort()) {
-            case VIEW_MODEL:
-            case ENTITY:
-                return 
GraphQLList.list(typeRef(TypeNames.objectTypeNameFor(elementType)));
-            case VALUE:
-                return 
GraphQLList.list(TypeMapper.scalarTypeFor(elementType.getCorrespondingClass()));
-        }
-        return null;
+        this.hidden = new GqlvMemberHidden(this, codeRegistryBuilder);
+        this.disabled = new GqlvMemberDisabled(this, codeRegistryBuilder);
+        this.get = new GqlvCollectionGet(this, codeRegistryBuilder);
+
+        this.gqlObjectType = gqlObjectTypeBuilder.build();
+
+        setField(
+            holder.addField(
+                newFieldDefinition()
+                    .name(oneToManyAssociation.getId())
+                    .type(gqlObjectTypeBuilder)
+                    .build()
+            )
+        );
     }
 
+
     public OneToManyAssociation getOneToManyAssociation() {
         return getObjectAssociation();
     }
 
+    @Override
+    public GraphQLFieldDefinition addField(GraphQLFieldDefinition field) {
+        gqlObjectTypeBuilder.field(field);
+        return field;
+    }
+
+    public void addDataFetcher() {
+        codeRegistryBuilder.dataFetcher(
+                holder.coordinatesFor(getField()),
+                new GqlvCollection.Fetcher());
+
+        hidden.addDataFetcher();
+        disabled.addDataFetcher();
+        get.addDataFetcher();
+    }
+
+    private class Fetcher implements DataFetcher<Object> {
+        @Override
+        public Object get(DataFetchingEnvironment dataFetchingEnvironment) {
+
+            val sourcePojo = 
BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
+
+            return bookmarkService.bookmarkFor(sourcePojo)
+                    .map(bookmark -> new BookmarkedPojo(bookmark, 
bookmarkService))
+                    .orElseThrow();
+        }
+    }
+
+
+    @Override
+    public FieldCoordinates coordinatesFor(GraphQLFieldDefinition 
fieldDefinition) {
+        return FieldCoordinates.coordinates(gqlObjectType, fieldDefinition);
+    }
 }
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGet.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGet.java
new file mode 100644
index 0000000000..faec3d340a
--- /dev/null
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGet.java
@@ -0,0 +1,109 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.viewer.graphql.model.domain;
+
+import org.apache.causeway.core.metamodel.object.ManagedObject;
+import org.apache.causeway.viewer.graphql.model.types.TypeMapper;
+
+import lombok.val;
+
+import graphql.schema.DataFetchingEnvironment;
+import graphql.schema.GraphQLCodeRegistry;
+import graphql.schema.GraphQLFieldDefinition;
+import graphql.schema.GraphQLOutputType;
+
+import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
+
+public class GqlvCollectionGet {
+
+    private final GqlvCollectionGetHolder holder;
+    private final GraphQLCodeRegistry.Builder codeRegistryBuilder;
+    private final GraphQLFieldDefinition field;
+
+
+    public GqlvCollectionGet(
+            final GqlvCollectionGetHolder holder,
+            final GraphQLCodeRegistry.Builder codeRegistryBuilder) {
+        this.holder = holder;
+        this.codeRegistryBuilder = codeRegistryBuilder;
+        this.field = fieldDefinition(holder);
+    }
+
+    private static GraphQLFieldDefinition fieldDefinition(final 
GqlvCollectionGetHolder holder) {
+
+        val oneToManyAssociation = holder.getOneToManyAssociation();
+
+        GraphQLFieldDefinition fieldDefinition = null;
+        GraphQLOutputType type = 
TypeMapper.listTypeForElementTypeOf(oneToManyAssociation);
+        if (type != null) {
+            val fieldBuilder = newFieldDefinition()
+                    .name("get")
+                    .type(type);
+            fieldDefinition = fieldBuilder.build();
+
+            holder.addField(fieldDefinition);
+        }
+        return fieldDefinition;
+    }
+
+    public void addDataFetcher() {
+
+        val association = holder.getOneToManyAssociation();
+        val fieldObjectSpecification = association.getElementType();
+        val beanSort = fieldObjectSpecification.getBeanSort();
+
+        switch (beanSort) {
+
+            case VALUE:
+            case VIEW_MODEL:
+            case ENTITY:
+
+                codeRegistryBuilder.dataFetcher(
+                        holder.coordinatesFor(field),
+                        this::get);
+
+                break;
+
+        }
+    }
+
+    private Object get(final DataFetchingEnvironment dataFetchingEnvironment) {
+
+        val association = holder.getOneToManyAssociation();
+
+        val sourcePojo = BookmarkedPojo.sourceFrom(dataFetchingEnvironment);
+
+        val sourcePojoClass = sourcePojo.getClass();
+        val specificationLoader = association.getSpecificationLoader();
+        val objectSpecification = 
specificationLoader.loadSpecification(sourcePojoClass);
+        if (objectSpecification == null) {
+            // not expected
+            return null;
+        }
+
+        // TODO: probably incorrect to adapt as a singular here?
+        val managedObject = ManagedObject.adaptSingular(objectSpecification, 
sourcePojo);
+        val resultManagedObject = association.get(managedObject);
+
+        return resultManagedObject != null
+                ? resultManagedObject.getPojo()
+                : null;
+    }
+
+}
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGetHolder.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGetHolder.java
new file mode 100644
index 0000000000..be3dc7a899
--- /dev/null
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionGetHolder.java
@@ -0,0 +1,26 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.causeway.viewer.graphql.model.domain;
+
+import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation;
+
+public interface GqlvCollectionGetHolder extends GqlvHolder {
+
+    OneToManyAssociation getOneToManyAssociation();
+}
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionSimple.java
similarity index 71%
copy from 
incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
copy to 
incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionSimple.java
index 90fd4e934a..eb4a867652 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollection.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvCollectionSimple.java
@@ -20,21 +20,18 @@ package org.apache.causeway.viewer.graphql.model.domain;
 
 import org.springframework.lang.Nullable;
 
-import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
 import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.causeway.viewer.graphql.model.types.TypeMapper;
-import org.apache.causeway.viewer.graphql.model.util.TypeNames;
 
 import graphql.schema.GraphQLCodeRegistry;
 import graphql.schema.GraphQLFieldDefinition;
 import graphql.schema.GraphQLList;
 
 import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
-import static graphql.schema.GraphQLTypeReference.typeRef;
 
-public class GqlvCollection extends GqlvAssociation<OneToManyAssociation, 
GqlvCollectionHolder> {
+public class GqlvCollectionSimple extends 
GqlvAssociation<OneToManyAssociation, GqlvCollectionHolder> {
 
-    public GqlvCollection(
+    public GqlvCollectionSimple(
             final GqlvCollectionHolder domainObject,
             final OneToManyAssociation oneToManyAssociation,
             final GraphQLCodeRegistry.Builder codeRegistryBuilder
@@ -45,10 +42,8 @@ public class GqlvCollection extends 
GqlvAssociation<OneToManyAssociation, GqlvCo
     @Nullable private static GraphQLFieldDefinition fieldDefinition(
             final GqlvCollectionHolder holder,
             final OneToManyAssociation otom) {
-        ObjectSpecification elementType = otom.getElementType();
-
+        GraphQLList type = TypeMapper.listTypeForElementTypeOf(otom);
         GraphQLFieldDefinition fieldDefinition = null;
-        GraphQLList type = listTypeFor(elementType);
         if (type != null) {
                 fieldDefinition = newFieldDefinition()
                         .name(otom.getId())
@@ -58,17 +53,6 @@ public class GqlvCollection extends 
GqlvAssociation<OneToManyAssociation, GqlvCo
         return fieldDefinition;
     }
 
-    @Nullable private static GraphQLList listTypeFor(ObjectSpecification 
elementType) {
-        switch (elementType.getBeanSort()) {
-            case VIEW_MODEL:
-            case ENTITY:
-                return 
GraphQLList.list(typeRef(TypeNames.objectTypeNameFor(elementType)));
-            case VALUE:
-                return 
GraphQLList.list(TypeMapper.scalarTypeFor(elementType.getCorrespondingClass()));
-        }
-        return null;
-    }
-
     public OneToManyAssociation getOneToManyAssociation() {
         return getObjectAssociation();
     }
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java
index 0e7475df42..13b328cfd9 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/domain/GqlvDomainObject.java
@@ -65,6 +65,7 @@ public class GqlvDomainObject implements GqlvActionHolder, 
GqlvPropertyHolder, G
 
     private final SortedMap<String, GqlvProperty> properties = new TreeMap<>();
     private final SortedMap<String, GqlvCollection> collections = new 
TreeMap<>();
+    private final SortedMap<String, GqlvCollectionSimple> collectionSimples = 
new TreeMap<>();
     private final Map<String, GqlvAction> safeActions = new TreeMap<>();
 
     private GraphQLObjectType gqlObjectType;
@@ -124,13 +125,20 @@ public class GqlvDomainObject implements 
GqlvActionHolder, GqlvPropertyHolder, G
     }
 
     private void addCollection(OneToManyAssociation otom) {
-        GqlvCollection collection = new GqlvCollection(this, otom, 
codeRegistryBuilder);
+        GqlvCollection collection = new GqlvCollection(this, otom, 
codeRegistryBuilder, bookmarkService);
         if (collection.hasFieldDefinition()) {
             String collectionId = collection.getId();
             if (!collections.containsKey(collectionId)) {
                 collections.put(collectionId, collection);
             }
         }
+//        GqlvCollectionSimple collection = new GqlvCollectionSimple(this, 
otom, codeRegistryBuilder);
+//        if (collection.hasFieldDefinition()) {
+//            String collectionId = collection.getId();
+//            if (!collectionSimples.containsKey(collectionId)) {
+//                collectionSimples.put(collectionId, collection);
+//            }
+//        }
     }
 
     private void addAction(final ObjectAction objectAction) {
@@ -169,6 +177,7 @@ public class GqlvDomainObject implements GqlvActionHolder, 
GqlvPropertyHolder, G
         meta.addDataFetchers();
         properties.forEach((id, property) -> property.addDataFetcher());
         collections.forEach((id, collection) -> collection.addDataFetcher());
+//        collectionSimples.forEach((id, collection) -> 
collection.addDataFetcher());
         safeActions.forEach((id, action) -> action.addDataFetcher());
         mutations.addDataFetchers();
     }
diff --git 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java
 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java
index 6b44bf2ce6..0516be22c7 100644
--- 
a/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java
+++ 
b/incubator/viewers/graphql/model/src/main/java/org/apache/causeway/viewer/graphql/model/types/TypeMapper.java
@@ -23,6 +23,7 @@ import java.math.BigInteger;
 import java.util.Map;
 
 import graphql.Scalars;
+import graphql.schema.GraphQLList;
 import graphql.schema.GraphQLOutputType;
 import graphql.schema.GraphQLScalarType;
 
@@ -34,6 +35,7 @@ import javax.ws.rs.NotSupportedException;
 
 import org.apache.causeway.commons.internal.collections._Maps;
 import org.apache.causeway.core.metamodel.spec.ObjectSpecification;
+import org.apache.causeway.core.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.causeway.core.metamodel.spec.feature.OneToOneFeature;
 import org.apache.causeway.viewer.graphql.model.util.TypeNames;
 
@@ -114,4 +116,21 @@ public class TypeMapper {
                 return Scalars.GraphQLString;
         }
     }
+
+    @Nullable public static GraphQLList 
listTypeForElementTypeOf(OneToManyAssociation oneToManyAssociation) {
+        ObjectSpecification elementType = 
oneToManyAssociation.getElementType();
+        return TypeMapper.listTypeFor(elementType);
+    }
+
+    @Nullable public static GraphQLList listTypeFor(ObjectSpecification 
elementType) {
+        switch (elementType.getBeanSort()) {
+            case VIEW_MODEL:
+            case ENTITY:
+                return 
GraphQLList.list(typeRef(TypeNames.objectTypeNameFor(elementType)));
+            case VALUE:
+                return 
GraphQLList.list(TypeMapper.scalarTypeFor(elementType.getCorrespondingClass()));
+        }
+        return null;
+    }
+
 }
diff --git 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json
 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json
index 92a86dfc26..4ce91fc10a 100644
--- 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json
+++ 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema.approved.json
@@ -1023,6 +1023,17 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "objects",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_applib_DomainObjectList__objects__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1261,6 +1272,37 @@
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_DomainObjectList__objects__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "OBJECT",
         "name" : "causeway_applib_DomainObjectList__title__property",
@@ -1344,6 +1386,48 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "childNodes",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_applib_FacetGroupNode__childNodes__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_FacetGroupNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1524,6 +1608,48 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "childNodes",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_applib_ParameterNode__childNodes__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_ParameterNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -1730,6 +1856,17 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "childNodes",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_applib_PropertyNode__childNodes__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         }, {
           "name" : "_gql_mutations",
           "description" : null,
@@ -1746,6 +1883,37 @@
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_PropertyNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "INPUT_OBJECT",
         "name" : "causeway_applib_PropertyNode__gql_input",
@@ -2239,6 +2407,48 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "childNodes",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_applib_TypeNode__childNodes__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_TypeNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -2512,13 +2722,9 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "LIST",
-            "name" : null,
-            "ofType" : {
-              "kind" : "OBJECT",
-              "name" : "causeway_applib_RoleMemento",
-              "ofType" : null
-            }
+            "kind" : "OBJECT",
+            "name" : "causeway_applib_UserMemento__roles__collection",
+            "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
@@ -2982,6 +3188,52 @@
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_UserMemento__roles__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "get",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "LIST",
+            "name" : null,
+            "ofType" : {
+              "kind" : "OBJECT",
+              "name" : "causeway_applib_RoleMemento",
+              "ofType" : null
+            }
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "OBJECT",
         "name" : "causeway_applib_UserMemento__timeFormatLocale__property",
@@ -3135,21 +3387,32 @@
           "isDeprecated" : false,
           "deprecationReason" : null
         }, {
-          "name" : "_gql_mutations",
+          "name" : "childNodes",
           "description" : null,
           "args" : [ ],
           "type" : {
             "kind" : "OBJECT",
-            "name" : "causeway_applib_node_ActionNode__gql_mutations",
+            "name" : "causeway_applib_node_ActionNode__childNodes__collection",
             "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
-        } ],
-        "inputFields" : null,
-        "interfaces" : [ ],
-        "enumValues" : null,
-        "possibleTypes" : null
+        }, {
+          "name" : "_gql_mutations",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_applib_node_ActionNode__gql_mutations",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "OBJECT",
         "name" : "causeway_applib_node_ActionNode__action__property",
@@ -3196,6 +3459,37 @@
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_node_ActionNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "INPUT_OBJECT",
         "name" : "causeway_applib_node_ActionNode__gql_input",
@@ -3459,6 +3753,17 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "childNodes",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : 
"causeway_applib_node_CollectionNode__childNodes__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         }, {
           "name" : "_gql_mutations",
           "description" : null,
@@ -3475,6 +3780,37 @@
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_node_CollectionNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "OBJECT",
         "name" : "causeway_applib_node_CollectionNode__collection__property",
@@ -3773,6 +4109,48 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "childNodes",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : 
"causeway_applib_node_FacetAttrNode__childNodes__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_node_FacetAttrNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -3979,6 +4357,48 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "childNodes",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_applib_node_FacetNode__childNodes__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_applib_node_FacetNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -4445,13 +4865,9 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "LIST",
-            "name" : null,
-            "ofType" : {
-              "kind" : "OBJECT",
-              "name" : "causeway_conf_ConfigurationProperty",
-              "ofType" : null
-            }
+            "kind" : "OBJECT",
+            "name" : 
"causeway_conf_ConfigurationViewmodel__environment__collection",
+            "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
@@ -4460,13 +4876,9 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "LIST",
-            "name" : null,
-            "ofType" : {
-              "kind" : "OBJECT",
-              "name" : "causeway_conf_ConfigurationProperty",
-              "ofType" : null
-            }
+            "kind" : "OBJECT",
+            "name" : 
"causeway_conf_ConfigurationViewmodel__primary__collection",
+            "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
@@ -4474,6 +4886,48 @@
           "name" : "secondary",
           "description" : null,
           "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : 
"causeway_conf_ConfigurationViewmodel__secondary__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : 
"causeway_conf_ConfigurationViewmodel__environment__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "get",
+          "description" : null,
+          "args" : [ ],
           "type" : {
             "kind" : "LIST",
             "name" : null,
@@ -4551,6 +5005,98 @@
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_conf_ConfigurationViewmodel__primary__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "get",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "LIST",
+            "name" : null,
+            "ofType" : {
+              "kind" : "OBJECT",
+              "name" : "causeway_conf_ConfigurationProperty",
+              "ofType" : null
+            }
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_conf_ConfigurationViewmodel__secondary__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "get",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "LIST",
+            "name" : null,
+            "ofType" : {
+              "kind" : "OBJECT",
+              "name" : "causeway_conf_ConfigurationProperty",
+              "ofType" : null
+            }
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "OBJECT",
         "name" : "causeway_feat_ApplicationFeatureViewModel",
@@ -4887,19 +5433,61 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "OBJECT",
-            "name" : 
"causeway_feat_ApplicationNamespace__memberName__property",
+            "kind" : "OBJECT",
+            "name" : 
"causeway_feat_ApplicationNamespace__memberName__property",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "parent",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : "causeway_feat_ApplicationNamespace__parent__property",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "contents",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : 
"causeway_feat_ApplicationNamespace__contents__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_feat_ApplicationNamespace__contents__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
             "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
         }, {
-          "name" : "parent",
+          "name" : "disabled",
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "OBJECT",
-            "name" : "causeway_feat_ApplicationNamespace__parent__property",
+            "kind" : "SCALAR",
+            "name" : "String",
             "ofType" : null
           },
           "isDeprecated" : false,
@@ -5203,13 +5791,9 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "LIST",
-            "name" : null,
-            "ofType" : {
-              "kind" : "OBJECT",
-              "name" : "causeway_feat_ApplicationTypeAction",
-              "ofType" : null
-            }
+            "kind" : "OBJECT",
+            "name" : "causeway_feat_ApplicationType__actions__collection",
+            "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
@@ -5218,13 +5802,9 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "LIST",
-            "name" : null,
-            "ofType" : {
-              "kind" : "OBJECT",
-              "name" : "causeway_feat_ApplicationTypeProperty",
-              "ofType" : null
-            }
+            "kind" : "OBJECT",
+            "name" : "causeway_feat_ApplicationType__properties__collection",
+            "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
@@ -5233,13 +5813,9 @@
           "description" : null,
           "args" : [ ],
           "type" : {
-            "kind" : "LIST",
-            "name" : null,
-            "ofType" : {
-              "kind" : "OBJECT",
-              "name" : "causeway_feat_ApplicationTypeCollection",
-              "ofType" : null
-            }
+            "kind" : "OBJECT",
+            "name" : "causeway_feat_ApplicationType__collections__collection",
+            "ofType" : null
           },
           "isDeprecated" : false,
           "deprecationReason" : null
@@ -6872,6 +7448,98 @@
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_feat_ApplicationType__actions__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "get",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "LIST",
+            "name" : null,
+            "ofType" : {
+              "kind" : "OBJECT",
+              "name" : "causeway_feat_ApplicationTypeAction",
+              "ofType" : null
+            }
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_feat_ApplicationType__collections__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "get",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "LIST",
+            "name" : null,
+            "ofType" : {
+              "kind" : "OBJECT",
+              "name" : "causeway_feat_ApplicationTypeCollection",
+              "ofType" : null
+            }
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "INPUT_OBJECT",
         "name" : "causeway_feat_ApplicationType__gql_input",
@@ -7056,6 +7724,52 @@
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : "causeway_feat_ApplicationType__properties__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "get",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "LIST",
+            "name" : null,
+            "ofType" : {
+              "kind" : "OBJECT",
+              "name" : "causeway_feat_ApplicationTypeProperty",
+              "ofType" : null
+            }
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "OBJECT",
         "name" : "causeway_feat_ApplicationType__typeSimpleName__property",
@@ -12413,6 +13127,48 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "childNodes",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MMNode__childNodes__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MMNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         } ],
         "inputFields" : null,
         "interfaces" : [ ],
@@ -12547,6 +13303,17 @@
           },
           "isDeprecated" : false,
           "deprecationReason" : null
+        }, {
+          "name" : "childNodes",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "OBJECT",
+            "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MemberNode__childNodes__collection",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
         }, {
           "name" : "_gql_mutations",
           "description" : null,
@@ -12563,6 +13330,37 @@
         "interfaces" : [ ],
         "enumValues" : null,
         "possibleTypes" : null
+      }, {
+        "kind" : "OBJECT",
+        "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MemberNode__childNodes__collection",
+        "description" : null,
+        "fields" : [ {
+          "name" : "hidden",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "Boolean",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        }, {
+          "name" : "disabled",
+          "description" : null,
+          "args" : [ ],
+          "type" : {
+            "kind" : "SCALAR",
+            "name" : "String",
+            "ofType" : null
+          },
+          "isDeprecated" : false,
+          "deprecationReason" : null
+        } ],
+        "inputFields" : null,
+        "interfaces" : [ ],
+        "enumValues" : null,
+        "possibleTypes" : null
       }, {
         "kind" : "INPUT_OBJECT",
         "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MemberNode__gql_input",
diff --git 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema_types_name.approved.json
 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema_types_name.approved.json
index 370dd5e27c..773f4214ea 100644
--- 
a/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema_types_name.approved.json
+++ 
b/incubator/viewers/graphql/test/src/test/java/org/apache/causeway/viewer/graphql/viewer/test/e2e/Schema_IntegTest.schema_types_name.approved.json
@@ -41,10 +41,14 @@
         "name" : "causeway_applib_DomainObjectList__gql_input"
       }, {
         "name" : "causeway_applib_DomainObjectList__gql_meta"
+      }, {
+        "name" : "causeway_applib_DomainObjectList__objects__collection"
       }, {
         "name" : "causeway_applib_DomainObjectList__title__property"
       }, {
         "name" : "causeway_applib_FacetGroupNode"
+      }, {
+        "name" : "causeway_applib_FacetGroupNode__childNodes__collection"
       }, {
         "name" : "causeway_applib_FacetGroupNode__facets__property"
       }, {
@@ -55,6 +59,8 @@
         "name" : "causeway_applib_FacetGroupNode__parentNode__property"
       }, {
         "name" : "causeway_applib_ParameterNode"
+      }, {
+        "name" : "causeway_applib_ParameterNode__childNodes__collection"
       }, {
         "name" : "causeway_applib_ParameterNode__gql_input"
       }, {
@@ -65,6 +71,8 @@
         "name" : "causeway_applib_ParameterNode__parentNode__property"
       }, {
         "name" : "causeway_applib_PropertyNode"
+      }, {
+        "name" : "causeway_applib_PropertyNode__childNodes__collection"
       }, {
         "name" : "causeway_applib_PropertyNode__gql_input"
       }, {
@@ -91,6 +99,8 @@
         "name" : "causeway_applib_RoleMemento__name__property"
       }, {
         "name" : "causeway_applib_TypeNode"
+      }, {
+        "name" : "causeway_applib_TypeNode__childNodes__collection"
       }, {
         "name" : "causeway_applib_TypeNode__domainClassDto__property"
       }, {
@@ -123,6 +133,8 @@
         "name" : "causeway_applib_UserMemento__numberFormatLocale__property"
       }, {
         "name" : "causeway_applib_UserMemento__realName__property"
+      }, {
+        "name" : "causeway_applib_UserMemento__roles__collection"
       }, {
         "name" : "causeway_applib_UserMemento__timeFormatLocale__property"
       }, {
@@ -133,6 +145,8 @@
         "name" : "causeway_applib_node_ActionNode"
       }, {
         "name" : "causeway_applib_node_ActionNode__action__property"
+      }, {
+        "name" : "causeway_applib_node_ActionNode__childNodes__collection"
       }, {
         "name" : "causeway_applib_node_ActionNode__gql_input"
       }, {
@@ -147,6 +161,8 @@
         "name" : "causeway_applib_node_ActionNode__streamChildNodes__action"
       }, {
         "name" : "causeway_applib_node_CollectionNode"
+      }, {
+        "name" : "causeway_applib_node_CollectionNode__childNodes__collection"
       }, {
         "name" : "causeway_applib_node_CollectionNode__collection__property"
       }, {
@@ -163,6 +179,8 @@
         "name" : 
"causeway_applib_node_CollectionNode__streamChildNodes__action"
       }, {
         "name" : "causeway_applib_node_FacetAttrNode"
+      }, {
+        "name" : "causeway_applib_node_FacetAttrNode__childNodes__collection"
       }, {
         "name" : "causeway_applib_node_FacetAttrNode__facetAttr__property"
       }, {
@@ -173,6 +191,8 @@
         "name" : "causeway_applib_node_FacetAttrNode__parentNode__property"
       }, {
         "name" : "causeway_applib_node_FacetNode"
+      }, {
+        "name" : "causeway_applib_node_FacetNode__childNodes__collection"
       }, {
         "name" : "causeway_applib_node_FacetNode__facet__property"
       }, {
@@ -199,10 +219,16 @@
         "name" : "causeway_conf_ConfigurationProperty__value__property"
       }, {
         "name" : "causeway_conf_ConfigurationViewmodel"
+      }, {
+        "name" : 
"causeway_conf_ConfigurationViewmodel__environment__collection"
       }, {
         "name" : "causeway_conf_ConfigurationViewmodel__gql_input"
       }, {
         "name" : "causeway_conf_ConfigurationViewmodel__gql_meta"
+      }, {
+        "name" : "causeway_conf_ConfigurationViewmodel__primary__collection"
+      }, {
+        "name" : "causeway_conf_ConfigurationViewmodel__secondary__collection"
       }, {
         "name" : "causeway_feat_ApplicationFeatureViewModel"
       }, {
@@ -219,6 +245,8 @@
         "name" : 
"causeway_feat_ApplicationFeatureViewModel__typeSimpleName__property"
       }, {
         "name" : "causeway_feat_ApplicationNamespace"
+      }, {
+        "name" : "causeway_feat_ApplicationNamespace__contents__collection"
       }, {
         "name" : "causeway_feat_ApplicationNamespace__gql_input"
       }, {
@@ -305,6 +333,10 @@
         "name" : 
"causeway_feat_ApplicationTypeProperty__typeSimpleName__property"
       }, {
         "name" : 
"causeway_feat_ApplicationTypeProperty__typicalLength__property"
+      }, {
+        "name" : "causeway_feat_ApplicationType__actions__collection"
+      }, {
+        "name" : "causeway_feat_ApplicationType__collections__collection"
       }, {
         "name" : "causeway_feat_ApplicationType__gql_input"
       }, {
@@ -315,6 +347,8 @@
         "name" : "causeway_feat_ApplicationType__namespaceName__property"
       }, {
         "name" : "causeway_feat_ApplicationType__parent__property"
+      }, {
+        "name" : "causeway_feat_ApplicationType__properties__collection"
       }, {
         "name" : "causeway_feat_ApplicationType__typeSimpleName__property"
       }, {
@@ -559,6 +593,8 @@
         "name" : "org_apache_causeway_commons_functional_Try__value__property"
       }, {
         "name" : "org_apache_causeway_core_metamodel_inspect_model_MMNode"
+      }, {
+        "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MMNode__childNodes__collection"
       }, {
         "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MMNode__gql_input"
       }, {
@@ -567,6 +603,8 @@
         "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__property"
       }, {
         "name" : "org_apache_causeway_core_metamodel_inspect_model_MemberNode"
+      }, {
+        "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MemberNode__childNodes__collection"
       }, {
         "name" : 
"org_apache_causeway_core_metamodel_inspect_model_MemberNode__gql_input"
       }, {
diff --git a/incubator/viewers/graphql/test/src/test/resources/schema.gql 
b/incubator/viewers/graphql/test/src/test/resources/schema.gql
index 98dcbc22a3..ea7334ef6a 100644
--- a/incubator/viewers/graphql/test/src/test/resources/schema.gql
+++ b/incubator/viewers/graphql/test/src/test/resources/schema.gql
@@ -37,6 +37,7 @@ type causeway_applib_DomainObjectList {
   actionId: causeway_applib_DomainObjectList__actionId__property
   actionOwningFqcn: 
causeway_applib_DomainObjectList__actionOwningFqcn__property
   elementTypeFqcn: causeway_applib_DomainObjectList__elementTypeFqcn__property
+  objects: causeway_applib_DomainObjectList__objects__collection
   title: causeway_applib_DomainObjectList__title__property
 }
 
@@ -69,6 +70,11 @@ type causeway_applib_DomainObjectList__gql_meta {
   logicalTypeName: String!
 }
 
+type causeway_applib_DomainObjectList__objects__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_applib_DomainObjectList__title__property {
   disabled: String
   get: String!
@@ -77,10 +83,16 @@ type causeway_applib_DomainObjectList__title__property {
 
 type causeway_applib_FacetGroupNode {
   _gql_meta: causeway_applib_FacetGroupNode__gql_meta
+  childNodes: causeway_applib_FacetGroupNode__childNodes__collection
   facets: causeway_applib_FacetGroupNode__facets__property
   parentNode: causeway_applib_FacetGroupNode__parentNode__property
 }
 
+type causeway_applib_FacetGroupNode__childNodes__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_applib_FacetGroupNode__facets__property {
   disabled: String
   get: String!
@@ -99,10 +111,16 @@ type causeway_applib_FacetGroupNode__parentNode__property {
 
 type causeway_applib_ParameterNode {
   _gql_meta: causeway_applib_ParameterNode__gql_meta
+  childNodes: causeway_applib_ParameterNode__childNodes__collection
   parameter: causeway_applib_ParameterNode__parameter__property
   parentNode: causeway_applib_ParameterNode__parentNode__property
 }
 
+type causeway_applib_ParameterNode__childNodes__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_applib_ParameterNode__gql_meta {
   id: String!
   logicalTypeName: String!
@@ -123,11 +141,17 @@ type causeway_applib_ParameterNode__parentNode__property {
 type causeway_applib_PropertyNode {
   _gql_meta: causeway_applib_PropertyNode__gql_meta
   _gql_mutations: causeway_applib_PropertyNode__gql_mutations
+  childNodes: causeway_applib_PropertyNode__childNodes__collection
   mixedIn: causeway_applib_PropertyNode__mixedIn__property
   parentNode: causeway_applib_PropertyNode__parentNode__property
   property: causeway_applib_PropertyNode__property__property
 }
 
+type causeway_applib_PropertyNode__childNodes__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_applib_PropertyNode__gql_meta {
   id: String!
   logicalTypeName: String!
@@ -186,10 +210,16 @@ type causeway_applib_RoleMemento__name__property {
 
 type causeway_applib_TypeNode {
   _gql_meta: causeway_applib_TypeNode__gql_meta
+  childNodes: causeway_applib_TypeNode__childNodes__collection
   domainClassDto: causeway_applib_TypeNode__domainClassDto__property
   parentNode: causeway_applib_TypeNode__parentNode__property
 }
 
+type causeway_applib_TypeNode__childNodes__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_applib_TypeNode__domainClassDto__property {
   disabled: String
   get: causeway_schema_metamodel_v2_DomainClassDto!
@@ -217,7 +247,7 @@ type causeway_applib_UserMemento {
   name: causeway_applib_UserMemento__name__property
   numberFormatLocale: causeway_applib_UserMemento__numberFormatLocale__property
   realName: causeway_applib_UserMemento__realName__property
-  roles: [causeway_applib_RoleMemento]
+  roles: causeway_applib_UserMemento__roles__collection
   timeFormatLocale: causeway_applib_UserMemento__timeFormatLocale__property
 }
 
@@ -280,6 +310,12 @@ type causeway_applib_UserMemento__realName__property {
   hidden: Boolean
 }
 
+type causeway_applib_UserMemento__roles__collection {
+  disabled: String
+  get: [causeway_applib_RoleMemento]
+  hidden: Boolean
+}
+
 type causeway_applib_UserMemento__timeFormatLocale__property {
   disabled: String
   get: String
@@ -300,6 +336,7 @@ type causeway_applib_node_ActionNode {
   _gql_meta: causeway_applib_node_ActionNode__gql_meta
   _gql_mutations: causeway_applib_node_ActionNode__gql_mutations
   action: causeway_applib_node_ActionNode__action__property
+  childNodes: causeway_applib_node_ActionNode__childNodes__collection
   mixedIn: causeway_applib_node_ActionNode__mixedIn__property
   parentNode: causeway_applib_node_ActionNode__parentNode__property
 }
@@ -310,6 +347,11 @@ type causeway_applib_node_ActionNode__action__property {
   hidden: Boolean
 }
 
+type causeway_applib_node_ActionNode__childNodes__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_applib_node_ActionNode__gql_meta {
   id: String!
   logicalTypeName: String!
@@ -340,11 +382,17 @@ type 
causeway_applib_node_ActionNode__streamChildNodes__action {
 type causeway_applib_node_CollectionNode {
   _gql_meta: causeway_applib_node_CollectionNode__gql_meta
   _gql_mutations: causeway_applib_node_CollectionNode__gql_mutations
+  childNodes: causeway_applib_node_CollectionNode__childNodes__collection
   collection: causeway_applib_node_CollectionNode__collection__property
   mixedIn: causeway_applib_node_CollectionNode__mixedIn__property
   parentNode: causeway_applib_node_CollectionNode__parentNode__property
 }
 
+type causeway_applib_node_CollectionNode__childNodes__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_applib_node_CollectionNode__collection__property {
   disabled: String
   get: String!
@@ -380,10 +428,16 @@ type 
causeway_applib_node_CollectionNode__streamChildNodes__action {
 
 type causeway_applib_node_FacetAttrNode {
   _gql_meta: causeway_applib_node_FacetAttrNode__gql_meta
+  childNodes: causeway_applib_node_FacetAttrNode__childNodes__collection
   facetAttr: causeway_applib_node_FacetAttrNode__facetAttr__property
   parentNode: causeway_applib_node_FacetAttrNode__parentNode__property
 }
 
+type causeway_applib_node_FacetAttrNode__childNodes__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_applib_node_FacetAttrNode__facetAttr__property {
   disabled: String
   get: String!
@@ -403,11 +457,17 @@ type 
causeway_applib_node_FacetAttrNode__parentNode__property {
 
 type causeway_applib_node_FacetNode {
   _gql_meta: causeway_applib_node_FacetNode__gql_meta
+  childNodes: causeway_applib_node_FacetNode__childNodes__collection
   facet: causeway_applib_node_FacetNode__facet__property
   parentNode: causeway_applib_node_FacetNode__parentNode__property
   shadowed: causeway_applib_node_FacetNode__shadowed__property
 }
 
+type causeway_applib_node_FacetNode__childNodes__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_applib_node_FacetNode__facet__property {
   disabled: String
   get: String!
@@ -465,9 +525,15 @@ type causeway_conf_ConfigurationProperty__value__property {
 
 type causeway_conf_ConfigurationViewmodel {
   _gql_meta: causeway_conf_ConfigurationViewmodel__gql_meta
-  environment: [causeway_conf_ConfigurationProperty]
-  primary: [causeway_conf_ConfigurationProperty]
-  secondary: [causeway_conf_ConfigurationProperty]
+  environment: causeway_conf_ConfigurationViewmodel__environment__collection
+  primary: causeway_conf_ConfigurationViewmodel__primary__collection
+  secondary: causeway_conf_ConfigurationViewmodel__secondary__collection
+}
+
+type causeway_conf_ConfigurationViewmodel__environment__collection {
+  disabled: String
+  get: [causeway_conf_ConfigurationProperty]
+  hidden: Boolean
 }
 
 type causeway_conf_ConfigurationViewmodel__gql_meta {
@@ -475,6 +541,18 @@ type causeway_conf_ConfigurationViewmodel__gql_meta {
   logicalTypeName: String!
 }
 
+type causeway_conf_ConfigurationViewmodel__primary__collection {
+  disabled: String
+  get: [causeway_conf_ConfigurationProperty]
+  hidden: Boolean
+}
+
+type causeway_conf_ConfigurationViewmodel__secondary__collection {
+  disabled: String
+  get: [causeway_conf_ConfigurationProperty]
+  hidden: Boolean
+}
+
 type causeway_feat_ApplicationFeatureViewModel {
   _gql_meta: causeway_feat_ApplicationFeatureViewModel__gql_meta
   memberName: causeway_feat_ApplicationFeatureViewModel__memberName__property
@@ -513,12 +591,18 @@ type 
causeway_feat_ApplicationFeatureViewModel__typeSimpleName__property {
 
 type causeway_feat_ApplicationNamespace {
   _gql_meta: causeway_feat_ApplicationNamespace__gql_meta
+  contents: causeway_feat_ApplicationNamespace__contents__collection
   memberName: causeway_feat_ApplicationNamespace__memberName__property
   namespaceName: causeway_feat_ApplicationNamespace__namespaceName__property
   parent: causeway_feat_ApplicationNamespace__parent__property
   typeSimpleName: causeway_feat_ApplicationNamespace__typeSimpleName__property
 }
 
+type causeway_feat_ApplicationNamespace__contents__collection {
+  disabled: String
+  hidden: Boolean
+}
+
 type causeway_feat_ApplicationNamespace__gql_meta {
   id: String!
   logicalTypeName: String!
@@ -549,12 +633,12 @@ type 
causeway_feat_ApplicationNamespace__typeSimpleName__property {
 
 type causeway_feat_ApplicationType {
   _gql_meta: causeway_feat_ApplicationType__gql_meta
-  actions: [causeway_feat_ApplicationTypeAction]
-  collections: [causeway_feat_ApplicationTypeCollection]
+  actions: causeway_feat_ApplicationType__actions__collection
+  collections: causeway_feat_ApplicationType__collections__collection
   memberName: causeway_feat_ApplicationType__memberName__property
   namespaceName: causeway_feat_ApplicationType__namespaceName__property
   parent: causeway_feat_ApplicationType__parent__property
-  properties: [causeway_feat_ApplicationTypeProperty]
+  properties: causeway_feat_ApplicationType__properties__collection
   typeSimpleName: causeway_feat_ApplicationType__typeSimpleName__property
 }
 
@@ -758,6 +842,18 @@ type 
causeway_feat_ApplicationTypeProperty__typicalLength__property {
   hidden: Boolean
 }
 
+type causeway_feat_ApplicationType__actions__collection {
+  disabled: String
+  get: [causeway_feat_ApplicationTypeAction]
+  hidden: Boolean
+}
+
+type causeway_feat_ApplicationType__collections__collection {
+  disabled: String
+  get: [causeway_feat_ApplicationTypeCollection]
+  hidden: Boolean
+}
+
 type causeway_feat_ApplicationType__gql_meta {
   id: String!
   logicalTypeName: String!
@@ -780,6 +876,12 @@ type causeway_feat_ApplicationType__parent__property {
   hidden: Boolean
 }
 
+type causeway_feat_ApplicationType__properties__collection {
+  disabled: String
+  get: [causeway_feat_ApplicationTypeProperty]
+  hidden: Boolean
+}
+
 type causeway_feat_ApplicationType__typeSimpleName__property {
   disabled: String
   get: String!
@@ -1400,9 +1502,15 @@ type 
org_apache_causeway_commons_functional_Try__value__property {
 
 type org_apache_causeway_core_metamodel_inspect_model_MMNode {
   _gql_meta: org_apache_causeway_core_metamodel_inspect_model_MMNode__gql_meta
+  childNodes: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__childNodes__collection
   parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__property
 }
 
+type 
org_apache_causeway_core_metamodel_inspect_model_MMNode__childNodes__collection 
{
+  disabled: String
+  hidden: Boolean
+}
+
 type org_apache_causeway_core_metamodel_inspect_model_MMNode__gql_meta {
   id: String!
   logicalTypeName: String!
@@ -1416,10 +1524,16 @@ type 
org_apache_causeway_core_metamodel_inspect_model_MMNode__parentNode__proper
 type org_apache_causeway_core_metamodel_inspect_model_MemberNode {
   _gql_meta: 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__gql_meta
   _gql_mutations: 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__gql_mutations
+  childNodes: 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__childNodes__collection
   mixedIn: 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__mixedIn__property
   parentNode: 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__parentNode__property
 }
 
+type 
org_apache_causeway_core_metamodel_inspect_model_MemberNode__childNodes__collection
 {
+  disabled: String
+  hidden: Boolean
+}
+
 type org_apache_causeway_core_metamodel_inspect_model_MemberNode__gql_meta {
   id: String!
   logicalTypeName: String!

Reply via email to