AST tmp1300_AST_in = (AST)_t;
AST tmp1304_AST_in = (AST)_t;
	public final void functionstate(AST _t) throws RecognitionException {				AST functionstate_AST_in = (_t == ASTNULL) ? null : (AST)_t;		AST f = null;		AST id = null;				AST __t863 = _t;		f = _t==ASTNULL ? null :(AST)_t;		match(_t,FUNCTION);		_t = _t.getFirstChild();		id = (AST)_t;		match(_t,ID);		_t = _t.getNextSibling();		if ( inputState.guessing==0 ) {				action.scopeAdd(f);		}		{		if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case RETURNS:		{			AST tmp1295_AST_in = (AST)_t;			match(_t,RETURNS);			_t = _t.getNextSibling();			break;		}		case RETURN:		{			AST tmp1296_AST_in = (AST)_t;			match(_t,RETURN);			_t = _t.getNextSibling();			break;		}		case CHARACTER:		case COMHANDLE:		case DATE:		case DECIMAL:		case HANDLE:		case INTEGER:		case LOGICAL:		case MEMPTR:		case RAW:		case RECID:		case ROWID:		case WIDGETHANDLE:		case DATETIME:		case DATETIMETZ:		case LONGCHAR:		case CLASS:		case TYPE_NAME:		{			break;		}		default:		{			throw new NoViableAltException(_t);		}		}		}		{		if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case CLASS:		{			AST tmp1297_AST_in = (AST)_t;			match(_t,CLASS);			_t = _t.getNextSibling();			AST tmp1298_AST_in = (AST)_t;			match(_t,TYPE_NAME);			_t = _t.getNextSibling();			break;		}		case CHARACTER:		case COMHANDLE:		case DATE:		case DECIMAL:		case HANDLE:		case INTEGER:		case LOGICAL:		case MEMPTR:		case RAW:		case RECID:		case ROWID:		case WIDGETHANDLE:		case DATETIME:		case DATETIMETZ:		case LONGCHAR:		case TYPE_NAME:		{			datatype_var(_t);			_t = _retTree;			break;		}		default:		{			throw new NoViableAltException(_t);		}		}		}		{		if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case PRIVATE:		{			AST tmp1299_AST_in = (AST)_t;			match(_t,PRIVATE);			_t = _t.getNextSibling();			break;		}		case PERIOD:		case FORWARDS:		case IN_KW:		case MAP:		case LEXCOLON:		case Parameter_list:		{			break;		}		default:		{			throw new NoViableAltException(_t);		}		}		}		{		if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case Parameter_list:		{			function_params(_t);			_t = _retTree;			break;		}		case PERIOD:		case FORWARDS:		case IN_KW:		case MAP:		case LEXCOLON:		{			break;		}		default:		{			throw new NoViableAltException(_t);		}		}		}		{		if (_t==null) _t=ASTNULL;		switch ( _t.getType()) {		case FORWARDS:		{			AST tmp1300_AST_in = (AST)_t;			match(_t,FORWARDS);			_t = _t.getNextSibling();			{			if (_t==null) _t=ASTNULL;			switch ( _t.getType()) {			case LEXCOLON:			{				AST tmp1301_AST_in = (AST)_t;				match(_t,LEXCOLON);				_t = _t.getNextSibling();				break;			}			case PERIOD:			{				AST tmp1302_AST_in = (AST)_t;				match(_t,PERIOD);				_t = _t.getNextSibling();				break;			}			case EOF:			{				AST tmp1303_AST_in = (AST)_t;				match(_t,Token.EOF_TYPE);				_t = _t.getNextSibling();				break;			}			default:			{				throw new NoViableAltException(_t);			}			}			}			if ( inputState.guessing==0 ) {				action.funcForward(id);			}			break;		}		case PERIOD:		case LEXCOLON:		{			block_colon(_t);			_t = _retTree;			if ( inputState.guessing==0 ) {				action.funcDef(f, id);			}			code_block(_t);			_t = _retTree;			{			if (_t==null) _t=ASTNULL;			switch ( _t.getType()) {			case EOF:			{				AST tmp1304_AST_in = (AST)_t;				match(_t,Token.EOF_TYPE);				_t = _t.getNextSibling();				break;			}			case END:			{				AST __t877 = _t;				AST tmp1305_AST_in = (AST)_t;				match(_t,END);				_t = _t.getFirstChild();				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case FUNCTION:				{					AST tmp1306_AST_in = (AST)_t;					match(_t,FUNCTION);					_t = _t.getNextSibling();					break;				}				case 3:				{					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				_t = __t877;				_t = _t.getNextSibling();				state_end(_t);				_t = _retTree;				break;			}			default:			{				throw new NoViableAltException(_t);			}			}			}			break;		}		default:			boolean synPredMatched871 = false;			if (_t==null) _t=ASTNULL;			if (((_t.getType()==IN_KW))) {				AST __t871 = _t;				synPredMatched871 = true;				inputState.guessing++;				try {					{					AST tmp1307_AST_in = (AST)_t;					match(_t,IN_KW);					_t = _t.getNextSibling();					AST tmp1308_AST_in = (AST)_t;					match(_t,SUPER);					_t = _t.getNextSibling();					}				}				catch (RecognitionException pe) {					synPredMatched871 = false;				}				_t = __t871;inputState.guessing--;			}			if ( synPredMatched871 ) {				AST tmp1309_AST_in = (AST)_t;				match(_t,IN_KW);				_t = _t.getNextSibling();				AST tmp1310_AST_in = (AST)_t;				match(_t,SUPER);				_t = _t.getNextSibling();				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case LEXCOLON:				{					AST tmp1311_AST_in = (AST)_t;					match(_t,LEXCOLON);					_t = _t.getNextSibling();					break;				}				case PERIOD:				{					AST tmp1312_AST_in = (AST)_t;					match(_t,PERIOD);					_t = _t.getNextSibling();					break;				}				case EOF:				{					AST tmp1313_AST_in = (AST)_t;					match(_t,Token.EOF_TYPE);					_t = _t.getNextSibling();					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				if ( inputState.guessing==0 ) {					action.funcForward(id);				}			}			else if ((_t.getType()==IN_KW||_t.getType()==MAP)) {				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case MAP:				{					AST tmp1314_AST_in = (AST)_t;					match(_t,MAP);					_t = _t.getNextSibling();					{					if (_t==null) _t=ASTNULL;					switch ( _t.getType()) {					case TO:					{						AST tmp1315_AST_in = (AST)_t;						match(_t,TO);						_t = _t.getNextSibling();						break;					}					case ID:					{						break;					}					default:					{						throw new NoViableAltException(_t);					}					}					}					AST tmp1316_AST_in = (AST)_t;					match(_t,ID);					_t = _t.getNextSibling();					break;				}				case IN_KW:				{					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				AST tmp1317_AST_in = (AST)_t;				match(_t,IN_KW);				_t = _t.getNextSibling();				expression(_t);				_t = _retTree;				{				if (_t==null) _t=ASTNULL;				switch ( _t.getType()) {				case LEXCOLON:				{					AST tmp1318_AST_in = (AST)_t;					match(_t,LEXCOLON);					_t = _t.getNextSibling();					break;				}				case PERIOD:				{					AST tmp1319_AST_in = (AST)_t;					match(_t,PERIOD);					_t = _t.getNextSibling();					break;				}				case EOF:				{					AST tmp1320_AST_in = (AST)_t;					match(_t,Token.EOF_TYPE);					_t = _t.getNextSibling();					break;				}				default:				{					throw new NoViableAltException(_t);				}				}				}				if ( inputState.guessing==0 ) {					action.funcForward(id);				}			}		else {			throw new NoViableAltException(_t);		}		}		}		_t = __t863;		_t = _t.getNextSibling();		if ( inputState.guessing==0 ) {				action.scopeClose(f);		}		_retTree = _t;	}