if ( synPredMatched501 ) {
if ( synPredMatched503 ) {
	protected final void mXML_CDATA(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {		int _ttype; Token _token=null; int _begin=text.length();		_ttype = XML_CDATA;		int _saveIndex;				_saveIndex=text.length();		mXML_CDATA_START(false);		text.setLength(_saveIndex);		{		_loop503:		do {			boolean synPredMatched498 = false;			if (((LA(1)==']') && ((LA(2) >= '\u0003' && LA(2) <= '\ufffe')) && ((LA(3) >= '\u0003' && LA(3) <= '\ufffe')) && ((LA(4) >= '\u0003' && LA(4) <= '\ufffe')))) {				int _m498 = mark();				synPredMatched498 = true;				inputState.guessing++;				try {					{					match(']');					{					match(_tokenSet_18);					}					}				}				catch (RecognitionException pe) {					synPredMatched498 = false;				}				rewind(_m498);				inputState.guessing--;			}			if ( synPredMatched498 ) {				match(']');			}			else {				boolean synPredMatched501 = false;				if (((LA(1)==']') && (LA(2)==']') && ((LA(3) >= '\u0003' && LA(3) <= '\ufffe')) && ((LA(4) >= '\u0003' && LA(4) <= '\ufffe')))) {					int _m501 = mark();					synPredMatched501 = true;					inputState.guessing++;					try {						{						match(']');						match(']');						{						match(_tokenSet_17);						}						}					}					catch (RecognitionException pe) {						synPredMatched501 = false;					}					rewind(_m501);					inputState.guessing--;				}				if ( synPredMatched501 ) {					{					match(']');					match(']');					}				}				else if ((_tokenSet_18.member(LA(1)))) {					{					match(_tokenSet_18);					}				}				else {					break _loop503;				}				}			} while (true);			}			_saveIndex=text.length();			mXML_CDATA_END(false);			text.setLength(_saveIndex);			if ( _createToken && _token==null && _ttype!=Token.SKIP ) {				_token = makeToken(_ttype);				_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));			}			_returnToken = _token;		}