public ShaderNodeDefinition findDefinition(Statement statement) throws IOException {

        final String defLine[] = statement.getLine().split(":");

        if (defLine.length != 3) {
            throw new MatParseException("Can't find shader node definition for: ", statement);
        }

        final Map<String, ShaderNodeDefinition> nodeDefinitions = getNodeDefinitions();
        final String definitionName = defLine[1].trim();
        final String definitionPath = defLine[2].trim();
        final String fullName = definitionName + ":" + definitionPath;

        ShaderNodeDefinition def = nodeDefinitions.get(fullName);
        if (def != null) {
            return def;
        }

        List<ShaderNodeDefinition> defs;
        try {
            defs = assetManager.loadAsset(new ShaderNodeDefinitionKey(definitionPath));
        } catch (final AssetNotFoundException e) {
            throw new MatParseException("Couldn't find " + definitionPath, statement, e);
        }

        for (final ShaderNodeDefinition definition : defs) {
            if (definitionName.equals(definition.getName())) {
                def = definition;
            }
            final String key = definition.getName() + ":" + definitionPath;
            if (!(nodeDefinitions.containsKey(key))) {
                nodeDefinitions.put(key, definition);
            }
        }

        if (def == null) {
            throw new MatParseException(definitionName + " is not a declared as Shader Node Definition", statement);
        }

        return def;
    }
Find the definition from this statement (loads it if necessary)

@param statement the statement being read
@return the definition
@throws IOException if an I/O error occurs
jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java