public ArrayList<Diagnostic> identify(SchemaNode node) {
        if (node.hasSymbol()) return new ArrayList<Diagnostic>();

        if (node.getLanguageType() == LanguageType.SCHEMA || node.getLanguageType() == LanguageType.CUSTOM) {
            return identifySchemaLanguage(node);
        }

        if (node.getLanguageType() == LanguageType.RANK_EXPRESSION) {
            return identifyRankExpressionLanguage(node);
        }

        return new ArrayList<Diagnostic>();
    }
If the parent of an identifier belongs to one of these classes
it will be handled by the {@link IdentifySymbolReferences#handleFieldReference} method.

This involves splitting the identifierStr node into several nodes based on the dot-syntax for fields.
integration/schema-language-server/language-server/src/main/java/ai/vespa/schemals/schemadocument/parser/schema/IdentifySymbolReferences.java