// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/AbstractASTNode.java
// public abstract class AbstractASTNode implements ASTNode {
// 
//     protected abstract String describe();
// 
//     @Override
//     public String toString() {
//         return "AST_" + describe();
//     }
// }
// 
// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/FunctionCall.java
// public class FunctionCall extends PrimaryExpr {
//     final QNameW functionName;
//     final List<? extends ASTNode> arguments; //TODO(AR) should be ExprSingle?
// 
//     public FunctionCall(final QNameW functionName, final List<? extends ASTNode> arguments) {
//         this.functionName = functionName;
//         this.arguments = arguments;
//     }
// 
//     public FunctionCall(final QNameW functionName, final ASTNode... arguments) {
//         this.functionName = functionName;
//         this.arguments = Arrays.asList(arguments);
//     }
// 
//     @Override
//     protected String describe() {
//         final  StringBuilder builder = new StringBuilder();
//         for(final ASTNode argument : arguments) {
//             if(builder.length() > 0) {
//                 builder.append(", ");
//             }
//             builder.append(argument.toString());
//         }
//         return "FunctionCall(" + functionName + "(" + builder.toString() + "))";
//     }
// 
//     @Override
//     public boolean equals(final Object obj) {
//         if(obj != null && obj instanceof FunctionCall) {
//             final FunctionCall other = (FunctionCall)obj;
//             return other.functionName.equals(functionName)
//                     && other.arguments.equals(arguments);
//         }
// 
//         return false;
//     }
// }
// 
// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/QNameW.java
// public class QNameW extends AbstractASTNode {
//     public final static String WILDCARD = "*";
// 
//     @Nullable private final String prefix;
//     private final String localPart;
// 
//     public QNameW(final String localPart) {
//         this(null, localPart);
//     }
// 
//     public QNameW(final String prefix, final String localPart) {
//         this.prefix = prefix;
//         this.localPart = localPart;
//     }
// 
//     @Override
//     public final String describe() {
//         if(prefix != null) {
//             return "QNameW(" + prefix + ":" + localPart + ")";
//         } else {
//             return "QNameW(" + localPart + ")";
//         }
//     }
// 
//     @Override
//     public boolean equals(final Object obj) {
//         if(obj != null && obj instanceof QNameW) {
//             final QNameW other = (QNameW)obj;
// 
//             return other.localPart.equals(this.localPart) &&
//                     (other.prefix == null ? "" : other.prefix).equals(this.prefix == null ? "" : this.prefix);
//         }
// 
//         return false;
//     }
// 
//     @Nullable
//     public String getPrefix() {
//         return prefix;
//     }
// 
//     public String getLocalPart() {
//         return localPart;
//     }
// }


import java.util.List;
import com.evolvedbinary.xpath.parser.ast.AbstractASTNode;
import com.evolvedbinary.xpath.parser.ast.FunctionCall;
import com.evolvedbinary.xpath.parser.ast.QNameW;
/**
 * XPath 2 Parser
 * A Parser for XPath 2
 * Copyright (C) 2016 Evolved Binary Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
package com.evolvedbinary.xpath.parser.ast.partial;



/**
 * Created by aretter on 11/02/2016.
 */
public class PartialFunctionCall extends AbstractPartialASTNode<FunctionCall, List<AbstractASTNode>> {
    final QNameW functionName;

// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/AbstractASTNode.java
// public abstract class AbstractASTNode implements ASTNode {
// 
//     protected abstract String describe();
// 
//     @Override
//     public String toString() {
//         return "AST_" + describe();
//     }
// }
// 
// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/FunctionCall.java
// public class FunctionCall extends PrimaryExpr {
//     final QNameW functionName;
//     final List<? extends ASTNode> arguments; //TODO(AR) should be ExprSingle?
// 
//     public FunctionCall(final QNameW functionName, final List<? extends ASTNode> arguments) {
//         this.functionName = functionName;
//         this.arguments = arguments;
//     }
// 
//     public FunctionCall(final QNameW functionName, final ASTNode... arguments) {
//         this.functionName = functionName;
//         this.arguments = Arrays.asList(arguments);
//     }
// 
//     @Override
//     protected String describe() {
//         final  StringBuilder builder = new StringBuilder();
//         for(final ASTNode argument : arguments) {
//             if(builder.length() > 0) {
//                 builder.append(", ");
//             }
//             builder.append(argument.toString());
//         }
//         return "FunctionCall(" + functionName + "(" + builder.toString() + "))";
//     }
// 
//     @Override
//     public boolean equals(final Object obj) {
//         if(obj != null && obj instanceof FunctionCall) {
//             final FunctionCall other = (FunctionCall)obj;
//             return other.functionName.equals(functionName)
//                     && other.arguments.equals(arguments);
//         }
// 
//         return false;
//     }
// }
// 
// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/QNameW.java
// public class QNameW extends AbstractASTNode {
//     public final static String WILDCARD = "*";
// 
//     @Nullable private final String prefix;
//     private final String localPart;
// 
//     public QNameW(final String localPart) {
//         this(null, localPart);
//     }
// 
//     public QNameW(final String prefix, final String localPart) {
//         this.prefix = prefix;
//         this.localPart = localPart;
//     }
// 
//     @Override
//     public final String describe() {
//         if(prefix != null) {
//             return "QNameW(" + prefix + ":" + localPart + ")";
//         } else {
//             return "QNameW(" + localPart + ")";
//         }
//     }
// 
//     @Override
//     public boolean equals(final Object obj) {
//         if(obj != null && obj instanceof QNameW) {
//             final QNameW other = (QNameW)obj;
// 
//             return other.localPart.equals(this.localPart) &&
//                     (other.prefix == null ? "" : other.prefix).equals(this.prefix == null ? "" : this.prefix);
//         }
// 
//         return false;
//     }
// 
//     @Nullable
//     public String getPrefix() {
//         return prefix;
//     }
// 
//     public String getLocalPart() {
//         return localPart;
//     }
// }


// Path: src/main/java/com/evolvedbinary/xpath/parser/ast/partial/PartialFunctionCall.java
import java.util.List;
import com.evolvedbinary.xpath.parser.ast.AbstractASTNode;
import com.evolvedbinary.xpath.parser.ast.FunctionCall;
import com.evolvedbinary.xpath.parser.ast.QNameW;

/**
 * XPath 2 Parser
 * A Parser for XPath 2
 * Copyright (C) 2016 Evolved Binary Ltd.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
package com.evolvedbinary.xpath.parser.ast.partial;



/**
 * Created by aretter on 11/02/2016.
 */
public class PartialFunctionCall extends AbstractPartialASTNode<FunctionCall, List<AbstractASTNode>> {
    final QNameW functionName;

    public PartialFunctionCall(final QNameW functionName) {