AST __t342 = _t; AST tmp70_AST_in = (AST)_t;
AST __t356 = _t; AST tmp75_AST_in = (AST)_t;
	public final Expression  constructor(AST _t,		PathExpr path	) throws RecognitionException, PermissionDeniedException,EXistException,XPathException {		Expression step;				AST constructor_AST_in = (AST)_t;		AST e = null;		AST attrName = null;		AST attrVal = null;		AST pcdata = null;		AST cdata = null;		AST p = null;					step= null;			PathExpr elementContent= null;						if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case ELEMENT:		{			AST __t330 = _t;			e = _t==ASTNULL ? null :(AST)_t;			match(_t,ELEMENT);			_t = _t.getFirstChild();									ElementConstructor c= new ElementConstructor(context, e.getText());						path.add(c);						step= c;								{			_loop336:			do {				if (_t==null) _t=ASTNULL;				if ((_t.getType()==ATTRIBUTE)) {					AST __t332 = _t;					attrName = _t==ASTNULL ? null :(AST)_t;					match(_t,ATTRIBUTE);					_t = _t.getFirstChild();															AttributeConstructor attrib= new AttributeConstructor(context, attrName.getText());										c.addAttribute(attrib);														{					int _cnt335=0;					_loop335:					do {						if (_t==null) _t=ASTNULL;						switch ( _t.getType()) {						case ATTRIBUTE_CONTENT:						{							attrVal = (AST)_t;							match(_t,ATTRIBUTE_CONTENT);							_t = _t.getNextSibling();							attrib.addValue(attrVal.getText());							break;						}						case LCURLY:						{							AST __t334 = _t;							AST tmp69_AST_in = (AST)_t;							match(_t,LCURLY);							_t = _t.getFirstChild();							PathExpr enclosed= new PathExpr(context);							expr(_t,enclosed);							_t = _retTree;							attrib.addEnclosedExpr(enclosed);							_t = __t334;							_t = _t.getNextSibling();							break;						}						default:						{							if ( _cnt335>=1 ) { break _loop335; } else {throw new NoViableAltException(_t);}						}						}						_cnt335++;					} while (true);					}					_t = __t332;					_t = _t.getNextSibling();				}				else {					break _loop336;				}							} while (true);			}			{			_loop338:			do {				if (_t==null) _t=ASTNULL;				if ((_tokenSet_1.member(_t.getType()))) {														if (elementContent == null) {										elementContent= new PathExpr(context);										c.setContent(elementContent);									}													step=constructor(_t,elementContent);					_t = _retTree;				}				else {					break _loop338;				}							} while (true);			}			_t = __t330;			_t = _t.getNextSibling();			break;		}		case TEXT:		{			AST __t339 = _t;			pcdata = _t==ASTNULL ? null :(AST)_t;			match(_t,TEXT);			_t = _t.getFirstChild();									TextConstructor text= new TextConstructor(context, pcdata.getText());						path.add(text);						step= text;								_t = __t339;			_t = _t.getNextSibling();			break;		}		case XML_COMMENT:		{			AST __t340 = _t;			cdata = _t==ASTNULL ? null :(AST)_t;			match(_t,XML_COMMENT);			_t = _t.getFirstChild();									CommentConstructor comment= new CommentConstructor(context, cdata.getText());						path.add(comment);						step= comment;								_t = __t340;			_t = _t.getNextSibling();			break;		}		case XML_PI:		{			AST __t341 = _t;			p = _t==ASTNULL ? null :(AST)_t;			match(_t,XML_PI);			_t = _t.getFirstChild();									PIConstructor pi= new PIConstructor(context, p.getText());						path.add(pi);						step= pi;								_t = __t341;			_t = _t.getNextSibling();			break;		}		case LCURLY:		{			AST __t342 = _t;			AST tmp70_AST_in = (AST)_t;			match(_t,LCURLY);			_t = _t.getFirstChild();			EnclosedExpr subexpr= new EnclosedExpr(context);			expr(_t,subexpr);			_t = _retTree;									path.addPath(subexpr);						step= subexpr;								_t = __t342;			_t = _t.getNextSibling();			break;		}		default:		{			throw new NoViableAltException(_t);		}		}		_retTree = _t;		return step;	}