private static void traverse(ParseContext context, SchemaNode node, List<Diagnostic> diagnostics) {
        if (node.getParent() != null && node.isASTInstance(identifierStr.class) && node.getParent().getASTClass() == structFieldElm.class) {
            handleStructField(context, node, diagnostics);
        }
        for (Node child : node) {
            traverse(context, child.getSchemaNode(), diagnostics);
        }
    }
StructFieldDefinitionResolver
Finds struct-field declarations and turns them into definitions of fields
integration/schema-language-server/language-server/src/main/java/ai/vespa/schemals/schemadocument/resolvers/StructFieldDefinitionResolver.java