returnAST = functionCall_AST; } finally { traceOut("functionCall");
functionCall_AST.copyLexInfo(l_AST);
	public final void functionCall() throws RecognitionException, TokenStreamException {				traceIn("functionCall");		try { // debugging			returnAST = null;			ASTPair currentAST = new ASTPair();			org.exist.xquery.parser.XQueryAST functionCall_AST = null;			org.exist.xquery.parser.XQueryAST q_AST = null;			org.exist.xquery.parser.XQueryAST params_AST = null;			String fnName= null;						fnName=qName();			q_AST = (org.exist.xquery.parser.XQueryAST)returnAST;			astFactory.addASTChild(currentAST, returnAST);			match(LPAREN);			if ( inputState.guessing==0 ) {				functionCall_AST = (org.exist.xquery.parser.XQueryAST)currentAST.root;								functionCall_AST = (org.exist.xquery.parser.XQueryAST)astFactory.create(FUNCTION,fnName);								currentAST.root = functionCall_AST;				currentAST.child = functionCall_AST!=null &&functionCall_AST.getFirstChild()!=null ?					functionCall_AST.getFirstChild() : functionCall_AST;				currentAST.advanceChildToEnd();			}			{			switch ( LA(1)) {			case LPAREN:			case NCNAME:			case LITERAL_module:			case LITERAL_namespace:			case STRING_LITERAL:			case XQUERY:			case VERSION:			case LITERAL_default:			case LITERAL_function:			case LITERAL_variable:			case LITERAL_element:			case DOLLAR:			case LITERAL_import:			case LITERAL_at:			case LITERAL_as:			case LITERAL_empty:			case STAR:			case PLUS:			case LITERAL_item:			case LITERAL_for:			case LITERAL_let:			case LITERAL_some:			case LITERAL_every:			case LITERAL_if:			case LITERAL_order:			case LITERAL_by:			case LITERAL_then:			case LITERAL_else:			case LITERAL_or:			case LITERAL_and:			case LITERAL_cast:			case LT:			case LITERAL_is:			case LITERAL_isnot:			case MINUS:			case LITERAL_div:			case LITERAL_mod:			case LITERAL_union:			case LITERAL_intersect:			case LITERAL_except:			case SLASH:			case DSLASH:			case LITERAL_text:			case LITERAL_node:			case SELF:			case XML_COMMENT:			case AT:			case PARENT:			case LITERAL_child:			case LITERAL_self:			case LITERAL_attribute:			case LITERAL_descendant:			case 123:			case 124:			case LITERAL_parent:			case LITERAL_ancestor:			case 127:			case 128:			case DOUBLE_LITERAL:			case DECIMAL_LITERAL:			case INTEGER_LITERAL:			case LITERAL_comment:			case 133:			case 134:			case XML_PI:			case LITERAL_document:			case LITERAL_collection:			{				functionParameters();				params_AST = (org.exist.xquery.parser.XQueryAST)returnAST;				astFactory.addASTChild(currentAST, returnAST);				if ( inputState.guessing==0 ) {					functionCall_AST = (org.exist.xquery.parser.XQueryAST)currentAST.root;					functionCall_AST= (org.exist.xquery.parser.XQueryAST)astFactory.make( (new ASTArray(2)).add((org.exist.xquery.parser.XQueryAST)astFactory.create(FUNCTION,fnName)).add(params_AST));					currentAST.root = functionCall_AST;					currentAST.child = functionCall_AST!=null &&functionCall_AST.getFirstChild()!=null ?						functionCall_AST.getFirstChild() : functionCall_AST;					currentAST.advanceChildToEnd();				}				break;			}			case RPAREN:			{				break;			}			default:			{				throw new NoViableAltException(LT(1), getFilename());			}			}			}			if ( inputState.guessing==0 ) {				functionCall_AST = (org.exist.xquery.parser.XQueryAST)currentAST.root;				functionCall_AST.copyLexInfo(q_AST);			}			match(RPAREN);			functionCall_AST = (org.exist.xquery.parser.XQueryAST)currentAST.root;			returnAST = functionCall_AST;		} finally { // debugging			traceOut("functionCall");		}	}