private List<Diagnostic> identifyInputType(SchemaNode node) {
        List<Diagnostic> ret = new ArrayList<>();

        if (!node.isASTInstance(inputElm.class) || node.size() == 0) {
            return ret;
        }

        SchemaNode valueTypeNode = null;
        for (Node child : node) {
            if (child.isASTInstance(valueType.class)) {
                valueTypeNode = child.getSchemaNode();
                break;
            }
        }

        if (valueTypeNode == null) {
            return ret;
        }

        Node typeToken = valueTypeNode.findFirstLeaf();
        String identifierName = node.get(0).getText();
        String warningMessage = null;
        if (typeToken.isASTInstance(LONG_KEYWORD.class)) {
            warningMessage = "Input " + identifierName + ": 'long' is not possible, treated as 'double'";
        }

        if (typeToken.isASTInstance(FLOAT_KEYWORD.class)) {
            warningMessage = "Input " + identifierName + ": 'float' is not possible, treated as 'double'"; 
        }

        if (warningMessage != null) {
            ret.add(new SchemaDiagnostic.Builder()
                .setRange(valueTypeNode.getRange())
                .setMessage(warningMessage)
                .setSeverity(DiagnosticSeverity.Warning)
                .build());
        }

        return ret;
    }
IdentifyType identifies types in the schema document
integration/schema-language-server/language-server/src/main/java/ai/vespa/schemals/schemadocument/parser/schema/IdentifyType.java