break _loop211;
break _loop238;
	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 __t203 = _t;			e = _t==ASTNULL ? null :(AST)_t;			match(_t,ELEMENT);			_t = _t.getFirstChild();									ElementConstructor c= new ElementConstructor(e.getText());						path.add(c);						step= c;								{			_loop209:			do {				if (_t==null) _t=ASTNULL;				if ((_t.getType()==ATTRIBUTE)) {					AST __t205 = _t;					attrName = _t==ASTNULL ? null :(AST)_t;					match(_t,ATTRIBUTE);					_t = _t.getFirstChild();															AttributeConstructor attrib= new AttributeConstructor(attrName.getText());										c.addAttribute(attrib);														{					int _cnt208=0;					_loop208:					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 __t207 = _t;							AST tmp40_AST_in = (AST)_t;							match(_t,LCURLY);							_t = _t.getFirstChild();							PathExpr enclosed= new PathExpr();							expr(_t,enclosed);							_t = _retTree;							attrib.addEnclosedExpr(enclosed);							_t = __t207;							_t = _t.getNextSibling();							break;						}						default:						{							if ( _cnt208>=1 ) { break _loop208; } else {throw new NoViableAltException(_t);}						}						}						_cnt208++;					} while (true);					}					_t = __t205;					_t = _t.getNextSibling();				}				else {					break _loop209;				}							} while (true);			}			{			_loop211:			do {				if (_t==null) _t=ASTNULL;				if ((_tokenSet_0.member(_t.getType()))) {														if (elementContent == null) {										elementContent= new PathExpr();										c.setContent(elementContent);									}													constructor(_t,elementContent);					_t = _retTree;				}				else {					break _loop211;				}							} while (true);			}			_t = __t203;			_t = _t.getNextSibling();			break;		}		case TEXT:		{			AST __t212 = _t;			pcdata = _t==ASTNULL ? null :(AST)_t;			match(_t,TEXT);			_t = _t.getFirstChild();									TextConstructor text= new TextConstructor(pcdata.getText());						path.add(text);						step= text;								_t = __t212;			_t = _t.getNextSibling();			break;		}		case XML_COMMENT:		{			AST __t213 = _t;			cdata = _t==ASTNULL ? null :(AST)_t;			match(_t,XML_COMMENT);			_t = _t.getFirstChild();									CommentConstructor comment= new CommentConstructor(cdata.getText());						path.add(comment);						step= comment;								_t = __t213;			_t = _t.getNextSibling();			break;		}		case XML_PI:		{			AST __t214 = _t;			p = _t==ASTNULL ? null :(AST)_t;			match(_t,XML_PI);			_t = _t.getFirstChild();									PIConstructor pi = new PIConstructor(p.getText());						path.add(pi);						step = pi;								_t = __t214;			_t = _t.getNextSibling();			break;		}		case LCURLY:		{			AST __t215 = _t;			AST tmp41_AST_in = (AST)_t;			match(_t,LCURLY);			_t = _t.getFirstChild();			EnclosedExpr subexpr= new EnclosedExpr();			expr(_t,subexpr);			_t = _retTree;									path.addPath(subexpr);						step= subexpr;								_t = __t215;			_t = _t.getNextSibling();			break;		}		default:		{			throw new NoViableAltException(_t);		}		}		_retTree = _t;		return step;	}