// Path: cssdroid/src/main/java/com/manolovn/cssdroid/parser/visitor/NodeVisitor.java
// public interface NodeVisitor {
// 
//     void visit(FunctionNode node);
// 
//     void visit(PropertyNode node);
// 
//     void visit(SelectorNode node);
// 
//     void visit(ValueNode node);
// 
//     void visit(VariableNode node);
// 
// }


import com.manolovn.cssdroid.parser.visitor.NodeVisitor;
import java.util.ArrayList;
import java.util.List;
package com.manolovn.cssdroid.parser.domain;



/**
 * Function node
 */
public class FunctionNode implements Node {

    private final FunctionType functionType;

    private List<Node> arguments;
    private String value;

    public FunctionNode(FunctionType functionType) {
        this.functionType = functionType;
        this.arguments = new ArrayList<>();
    }

    @Override
    public String getName() {
        return functionType.name();
    }

    @Override
    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @Override
    public void addChild(Node node) {
        arguments.add(node);
    }

    @Override
    public List<Node> children() {
        return arguments;
    }

    @Override
// Path: cssdroid/src/main/java/com/manolovn/cssdroid/parser/visitor/NodeVisitor.java
// public interface NodeVisitor {
// 
//     void visit(FunctionNode node);
// 
//     void visit(PropertyNode node);
// 
//     void visit(SelectorNode node);
// 
//     void visit(ValueNode node);
// 
//     void visit(VariableNode node);
// 
// }


// Path: cssdroid/src/main/java/com/manolovn/cssdroid/parser/domain/FunctionNode.java
import com.manolovn.cssdroid.parser.visitor.NodeVisitor;
import java.util.ArrayList;
import java.util.List;

package com.manolovn.cssdroid.parser.domain;



/**
 * Function node
 */
public class FunctionNode implements Node {

    private final FunctionType functionType;

    private List<Node> arguments;
    private String value;

    public FunctionNode(FunctionType functionType) {
        this.functionType = functionType;
        this.arguments = new ArrayList<>();
    }

    @Override
    public String getName() {
        return functionType.name();
    }

    @Override
    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @Override
    public void addChild(Node node) {
        arguments.add(node);
    }

    @Override
    public List<Node> children() {
        return arguments;
    }

    @Override
    public void accept(NodeVisitor visitor) {