int _m590 = mark(); synPredMatched590 = true;
int _m409 = mark(); synPredMatched409 = true;
	protected final void mXML_PI(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException {		int _ttype; Token _token=null; int _begin=text.length();		_ttype = XML_PI;		int _saveIndex;				_saveIndex=text.length();		mXML_PI_START(false);		text.setLength(_saveIndex);		mNCNAME(false);		match(' ');		{		int _cnt591=0;		_loop591:		do {			if ((_tokenSet_15.member(LA(1)))) {				{				match(_tokenSet_15);				}			}			else {				boolean synPredMatched590 = false;				if (((LA(1)=='?'))) {					int _m590 = mark();					synPredMatched590 = true;					inputState.guessing++;					try {						{						match('?');						{						match(_tokenSet_16);						}						}					}					catch (RecognitionException pe) {						synPredMatched590 = false;					}					rewind(_m590);					inputState.guessing--;				}				if ( synPredMatched590 ) {					match('?');				}				else {					if ( _cnt591>=1 ) { break _loop591; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}				}				}				_cnt591++;			} while (true);			}			if ( _createToken && _token==null && _ttype!=Token.SKIP ) {				_token = makeToken(_ttype);				_token.setText(new String(text.getBuffer(), _begin, text.length()-_begin));			}			_returnToken = _token;		}