protected void readShaderNode(List<Statement> statements) throws IOException {

        final ShaderGenerationInfo generationInfo = techniqueDef.getShaderGenerationInfo();
        final List<String> unusedNodes = generationInfo.getUnusedNodes();

        for (Statement statement : statements) {

            String line = statement.getLine();
            String[] split = statement.getLine().split("[ \\{]");

            if (line.startsWith("Definition")) {
                ShaderNodeDefinition def = findDefinition(statement);
                shaderNode.setDefinition(def);
                if(def.isNoOutput()){
                    unusedNodes.remove(shaderNode.getName());
                }
            } else if (line.startsWith("Condition")) {
                String condition = line.substring(line.lastIndexOf(":") + 1).trim();
                extractCondition(condition, statement);
                shaderNode.setCondition(conditionParser.getFormattedExpression());
            } else if (line.startsWith("InputMappings")) {
                for (final Statement subStatement : statement.getContents()) {

                    VariableMapping mapping = readInputMapping(subStatement);

                    final ShaderNodeVariable rightVariable = mapping.getRightVariable();
                    if (rightVariable != null) {
                        unusedNodes.remove(rightVariable.getNameSpace());
                    }

                    shaderNode.getInputMapping().add(mapping);
                }
            } else if (line.startsWith("OutputMappings")) {
                for (Statement statement1 : statement.getContents()) {
                    VariableMapping mapping = readOutputMapping(statement1);
                    unusedNodes.remove(shaderNode.getName());
                    shaderNode.getOutputMapping().add(mapping);
                }
            } else {
                throw new MatParseException("ShaderNodeDefinition", split[0], statement);
            }
        }
    }
reads a list of ShaderNode{} blocks

@param statements the list of statements to parse
@throws IOException if an I/O error occurs
jme3-core/src/plugins/java/com/jme3/material/plugins/ShaderNodeLoaderDelegate.java