AST __t141 = _t;
AST __t143 = _t;
	public final Expression  numericExpr(AST _t,		PathExpr path	) throws RecognitionException, PermissionDeniedException,EXistException,XPathException {		Expression step;				org.exist.xquery.parser.XQueryAST numericExpr_AST_in = (_t == ASTNULL) ? null : (org.exist.xquery.parser.XQueryAST)_t;		org.exist.xquery.parser.XQueryAST plus = null;		org.exist.xquery.parser.XQueryAST minus = null;		org.exist.xquery.parser.XQueryAST uminus = null;		org.exist.xquery.parser.XQueryAST uplus = null;		org.exist.xquery.parser.XQueryAST div = null;		org.exist.xquery.parser.XQueryAST idiv = null;		org.exist.xquery.parser.XQueryAST mod = null;		org.exist.xquery.parser.XQueryAST mult = null;					step= null;			PathExpr left= new PathExpr(context);			PathExpr right= new PathExpr(context);						if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case PLUS:		{			AST __t140 = _t;			plus = _t==ASTNULL ? null :(org.exist.xquery.parser.XQueryAST)_t;			match(_t,PLUS);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t140;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.PLUS);			op.setASTNode(plus);					path.addPath(op);					step= op;							break;		}		case MINUS:		{			AST __t141 = _t;			minus = _t==ASTNULL ? null :(org.exist.xquery.parser.XQueryAST)_t;			match(_t,MINUS);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t141;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.MINUS);			op.setASTNode(minus);					path.addPath(op);					step= op;							break;		}		case UNARY_MINUS:		{			AST __t142 = _t;			uminus = _t==ASTNULL ? null :(org.exist.xquery.parser.XQueryAST)_t;			match(_t,UNARY_MINUS);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			_t = __t142;			_t = _t.getNextSibling();								UnaryExpr unary= new UnaryExpr(context, Constants.MINUS);			unary.setASTNode(uminus);					unary.add(left);					path.addPath(unary);					step= unary;							break;		}		case UNARY_PLUS:		{			AST __t143 = _t;			uplus = _t==ASTNULL ? null :(org.exist.xquery.parser.XQueryAST)_t;			match(_t,UNARY_PLUS);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			_t = __t143;			_t = _t.getNextSibling();								UnaryExpr unary= new UnaryExpr(context, Constants.PLUS);			unary.setASTNode(uplus);					unary.add(left);					path.addPath(unary);					step= unary;							break;		}		case LITERAL_div:		{			AST __t144 = _t;			div = _t==ASTNULL ? null :(org.exist.xquery.parser.XQueryAST)_t;			match(_t,LITERAL_div);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t144;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.DIV);			op.setASTNode(div);					path.addPath(op);					step= op;							break;		}		case LITERAL_idiv:		{			AST __t145 = _t;			idiv = _t==ASTNULL ? null :(org.exist.xquery.parser.XQueryAST)_t;			match(_t,LITERAL_idiv);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t145;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.IDIV);			op.setASTNode(idiv);					path.addPath(op);					step= op;							break;		}		case LITERAL_mod:		{			AST __t146 = _t;			mod = _t==ASTNULL ? null :(org.exist.xquery.parser.XQueryAST)_t;			match(_t,LITERAL_mod);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t146;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.MOD);			op.setASTNode(mod);					path.addPath(op);					step= op;							break;		}		case STAR:		{			AST __t147 = _t;			mult = _t==ASTNULL ? null :(org.exist.xquery.parser.XQueryAST)_t;			match(_t,STAR);			_t = _t.getFirstChild();			step=expr(_t,left);			_t = _retTree;			step=expr(_t,right);			_t = _retTree;			_t = __t147;			_t = _t.getNextSibling();								OpNumeric op= new OpNumeric(context, left, right, Constants.MULT);			op.setASTNode(mult);					path.addPath(op);					step= op;							break;		}		default:		{			throw new NoViableAltException(_t);		}		}		_retTree = _t;		return step;	}