public Object evaluate(final ASTFunctionCall node, final Bindings b, final Map<Node, Object> d) throws TypeErrorException, NotBoundException {
final Literal name = LazyLiteral.getLiteral(node.jjtGetChild(0));
final ExternalFunction externalFunction = EvaluationVisitorImplementation.externalFunctions.get(name);
if(externalFunction!=null){
final Node child1 = node.jjtGetChild(1);
final int number = child1.jjtGetNumChildren();
final Object[] args = new Object[number];
for(int i=0; i<number; i++){
args[i] = child1.jjtGetChild(i).accept(this, b, d);
}
return externalFunction.evaluate(args);