@Override public BindingSet visit(ASTBindingSet node, Object data) throws VisitorException { @SuppressWarnings("unchecked") List<Var> vars = (List<Var>)data; List<String> names = new ArrayList<String>(vars.size()); for (Var var : vars) { names.add(var.getName()); } int numberOfBindingValues = node.jjtGetNumChildren(); if (numberOfBindingValues != vars.size()) { throw new VisitorException( "number of values in bindingset does not match variables in BINDINGS clause"); } Value[] values = new Value[numberOfBindingValues]; for (int i = 0; i < numberOfBindingValues; i++) { ValueExpr ve = (ValueExpr)node.jjtGetChild(i).jjtAccept(this, null); if (ve != null) { Value v = getValueForExpr(ve); values[i] = v; } } BindingSet result = new ListBindingSet(names, values); return result; }