boolean synPredMatched325 = false;
boolean synPredMatched327 = false;
	public final void compElemConstructor() throws RecognitionException, TokenStreamException, XPathException {				returnAST = null;		ASTPair currentAST = new ASTPair();		org.exist.xquery.parser.XQueryAST compElemConstructor_AST = null;		org.exist.xquery.parser.XQueryAST e3_AST = null;					String qn;						boolean synPredMatched325 = false;		if (((LA(1)==LITERAL_element))) {			int _m325 = mark();			synPredMatched325 = true;			inputState.guessing++;			try {				{				match(LITERAL_element);				match(LCURLY);				}			}			catch (RecognitionException pe) {				synPredMatched325 = false;			}			rewind(_m325);			inputState.guessing--;		}		if ( synPredMatched325 ) {			match(LITERAL_element);			match(LCURLY);			expr();			astFactory.addASTChild(currentAST, returnAST);			match(RCURLY);			match(LCURLY);			{			switch ( LA(1)) {			case LPAREN:			case NCNAME:			case LITERAL_xquery:			case LITERAL_version:			case LITERAL_module:			case LITERAL_namespace:			case STRING_LITERAL:			case LITERAL_declare:			case LITERAL_default:			case 64:			case LITERAL_ordering:			case LITERAL_construction:			case 67:			case LITERAL_option:			case LITERAL_function:			case LITERAL_variable:			case LITERAL_import:			case LITERAL_encoding:			case LITERAL_collation:			case LITERAL_element:			case LITERAL_order:			case LITERAL_empty:			case LITERAL_preserve:			case LITERAL_strip:			case LITERAL_ordered:			case LITERAL_unordered:			case 85:			case LITERAL_inherit:			case 87:			case DOLLAR:			case LITERAL_external:			case LITERAL_at:			case LITERAL_schema:			case LITERAL_as:			case STAR:			case PLUS:			case LITERAL_item:			case LITERAL_for:			case LITERAL_let:			case LITERAL_some:			case LITERAL_every:			case LITERAL_if:			case LITERAL_typeswitch:			case LITERAL_update:			case LITERAL_replace:			case LITERAL_value:			case LITERAL_insert:			case LITERAL_delete:			case LITERAL_rename:			case LITERAL_with:			case LITERAL_into:			case LITERAL_preceding:			case LITERAL_following:			case LITERAL_return:			case LITERAL_by:			case LITERAL_group:			case LITERAL_case:			case LITERAL_then:			case LITERAL_else:			case LITERAL_or:			case LITERAL_and:			case LITERAL_instance:			case LITERAL_of:			case LITERAL_treat:			case LITERAL_cast:			case LT:			case LITERAL_eq:			case LITERAL_ne:			case LITERAL_lt:			case LITERAL_le:			case LITERAL_gt:			case LITERAL_ge:			case LITERAL_is:			case LITERAL_isnot:			case LITERAL_to:			case MINUS:			case LITERAL_div:			case LITERAL_mod:			case PRAGMA_START:			case LITERAL_union:			case LITERAL_intersect:			case LITERAL_except:			case SLASH:			case DSLASH:			case LITERAL_text:			case LITERAL_node:			case LITERAL_attribute:			case LITERAL_comment:			case 167:			case 168:			case LITERAL_document:			case SELF:			case XML_COMMENT:			case XML_PI:			case AT:			case PARENT:			case LITERAL_child:			case LITERAL_self:			case LITERAL_descendant:			case 180:			case 181:			case LITERAL_parent:			case LITERAL_ancestor:			case 184:			case 185:			case DOUBLE_LITERAL:			case DECIMAL_LITERAL:			case INTEGER_LITERAL:			case LITERAL_collection:			case LITERAL_validate:			{				compElemBody();				astFactory.addASTChild(currentAST, returnAST);				break;			}			case RCURLY:			{				break;			}			default:			{				throw new NoViableAltException(LT(1), getFilename());			}			}			}			match(RCURLY);			if ( inputState.guessing==0 ) {				compElemConstructor_AST = (org.exist.xquery.parser.XQueryAST)currentAST.root;				compElemConstructor_AST = (org.exist.xquery.parser.XQueryAST)astFactory.make( (new ASTArray(2)).add((org.exist.xquery.parser.XQueryAST)astFactory.create(COMP_ELEM_CONSTRUCTOR)).add(compElemConstructor_AST));				currentAST.root = compElemConstructor_AST;				currentAST.child = compElemConstructor_AST!=null &&compElemConstructor_AST.getFirstChild()!=null ?					compElemConstructor_AST.getFirstChild() : compElemConstructor_AST;				currentAST.advanceChildToEnd();			}			compElemConstructor_AST = (org.exist.xquery.parser.XQueryAST)currentAST.root;		}		else if ((LA(1)==LITERAL_element)) {			match(LITERAL_element);			qn=qName();			astFactory.addASTChild(currentAST, returnAST);			match(LCURLY);			{			switch ( LA(1)) {			case LPAREN:			case NCNAME:			case LITERAL_xquery:			case LITERAL_version:			case LITERAL_module:			case LITERAL_namespace:			case STRING_LITERAL:			case LITERAL_declare:			case LITERAL_default:			case 64:			case LITERAL_ordering:			case LITERAL_construction:			case 67:			case LITERAL_option:			case LITERAL_function:			case LITERAL_variable:			case LITERAL_import:			case LITERAL_encoding:			case LITERAL_collation:			case LITERAL_element:			case LITERAL_order:			case LITERAL_empty:			case LITERAL_preserve:			case LITERAL_strip:			case LITERAL_ordered:			case LITERAL_unordered:			case 85:			case LITERAL_inherit:			case 87:			case DOLLAR:			case LITERAL_external:			case LITERAL_at:			case LITERAL_schema:			case LITERAL_as:			case STAR:			case PLUS:			case LITERAL_item:			case LITERAL_for:			case LITERAL_let:			case LITERAL_some:			case LITERAL_every:			case LITERAL_if:			case LITERAL_typeswitch:			case LITERAL_update:			case LITERAL_replace:			case LITERAL_value:			case LITERAL_insert:			case LITERAL_delete:			case LITERAL_rename:			case LITERAL_with:			case LITERAL_into:			case LITERAL_preceding:			case LITERAL_following:			case LITERAL_return:			case LITERAL_by:			case LITERAL_group:			case LITERAL_case:			case LITERAL_then:			case LITERAL_else:			case LITERAL_or:			case LITERAL_and:			case LITERAL_instance:			case LITERAL_of:			case LITERAL_treat:			case LITERAL_cast:			case LT:			case LITERAL_eq:			case LITERAL_ne:			case LITERAL_lt:			case LITERAL_le:			case LITERAL_gt:			case LITERAL_ge:			case LITERAL_is:			case LITERAL_isnot:			case LITERAL_to:			case MINUS:			case LITERAL_div:			case LITERAL_mod:			case PRAGMA_START:			case LITERAL_union:			case LITERAL_intersect:			case LITERAL_except:			case SLASH:			case DSLASH:			case LITERAL_text:			case LITERAL_node:			case LITERAL_attribute:			case LITERAL_comment:			case 167:			case 168:			case LITERAL_document:			case SELF:			case XML_COMMENT:			case XML_PI:			case AT:			case PARENT:			case LITERAL_child:			case LITERAL_self:			case LITERAL_descendant:			case 180:			case 181:			case LITERAL_parent:			case LITERAL_ancestor:			case 184:			case 185:			case DOUBLE_LITERAL:			case DECIMAL_LITERAL:			case INTEGER_LITERAL:			case LITERAL_collection:			case LITERAL_validate:			{				compElemBody();				e3_AST = (org.exist.xquery.parser.XQueryAST)returnAST;				astFactory.addASTChild(currentAST, returnAST);				break;			}			case RCURLY:			{				break;			}			default:			{				throw new NoViableAltException(LT(1), getFilename());			}			}			}			match(RCURLY);			if ( inputState.guessing==0 ) {				compElemConstructor_AST = (org.exist.xquery.parser.XQueryAST)currentAST.root;				compElemConstructor_AST = (org.exist.xquery.parser.XQueryAST)astFactory.make( (new ASTArray(3)).add((org.exist.xquery.parser.XQueryAST)astFactory.create(COMP_ELEM_CONSTRUCTOR,qn)).add((org.exist.xquery.parser.XQueryAST)astFactory.create(STRING_LITERAL,qn)).add(e3_AST));				currentAST.root = compElemConstructor_AST;				currentAST.child = compElemConstructor_AST!=null &&compElemConstructor_AST.getFirstChild()!=null ?					compElemConstructor_AST.getFirstChild() : compElemConstructor_AST;				currentAST.advanceChildToEnd();			}			compElemConstructor_AST = (org.exist.xquery.parser.XQueryAST)currentAST.root;		}		else {			throw new NoViableAltException(LT(1), getFilename());		}				returnAST = compElemConstructor_AST;	}