path.add(fun);
p.addPath(fun); path.add(p);
	public final void xpointer(AST _t,		PathExpr path	) throws RecognitionException, XPathException {				org.exist.xquery.parser.XQueryAST xpointer_AST_in = (_t == ASTNULL) ? null : (org.exist.xquery.parser.XQueryAST)_t;		org.exist.xquery.parser.XQueryAST nc = null;		Expression step = null;				try {      // for error handling			if (_t==null) _t=ASTNULL;			switch ( _t.getType()) {			case XPOINTER:			{				AST __t2 = _t;				org.exist.xquery.parser.XQueryAST tmp1_AST_in = (org.exist.xquery.parser.XQueryAST)_t;				match(_t,XPOINTER);				_t = _t.getFirstChild();				step=expr(_t,path);				_t = _retTree;				_t = __t2;				_t = _t.getNextSibling();				break;			}			case XPOINTER_ID:			{				AST __t3 = _t;				org.exist.xquery.parser.XQueryAST tmp2_AST_in = (org.exist.xquery.parser.XQueryAST)_t;				match(_t,XPOINTER_ID);				_t = _t.getFirstChild();				nc = (org.exist.xquery.parser.XQueryAST)_t;				match(_t,NCNAME);				_t = _t.getNextSibling();				_t = __t3;				_t = _t.getNextSibling();										RootNode root = new RootNode(context);						path.add(root);						Function fun= new FunId(context, FunId.signature[0]);						List params= new ArrayList(1);						params.add(new LiteralValue(context, new StringValue(nc.getText())));						fun.setArguments(params);						path.add(fun);									break;			}			default:			{				throw new NoViableAltException(_t);			}			}		}		catch (EXistException e) {			handleException(e);		}		catch (PermissionDeniedException e) {			handleException(e);		}		_retTree = _t;	}