public final ModifierContext modifier() throws RecognitionException {
		ModifierContext _localctx = new ModifierContext(_ctx, getState());
		enterRule(_localctx, 84, RULE_modifier);
		try {
			setState(616);
			switch (_input.LA(1)) {
			case 24:
				enterOuterAlt(_localctx, 1);
				{
				setState(604); annotation();
				}
				break;
			case 39:
				enterOuterAlt(_localctx, 2);
				{
				setState(605); match(39);
				}
				break;
			case 73:
				enterOuterAlt(_localctx, 3);
				{
				setState(606); match(73);
				}
				break;
			case 50:
				enterOuterAlt(_localctx, 4);
				{
				setState(607); match(50);
				}
				break;
			case 66:
				enterOuterAlt(_localctx, 5);
				{
				setState(608); match(66);
				}
				break;
			case 11:
				enterOuterAlt(_localctx, 6);
				{
				setState(609); match(11);
				}
				break;
			case 62:
				enterOuterAlt(_localctx, 7);
				{
				setState(610); match(62);
				}
				break;
			case 58:
				enterOuterAlt(_localctx, 8);
				{
				setState(611); match(58);
				}
				break;
			case 41:
				enterOuterAlt(_localctx, 9);
				{
				setState(612); match(41);
				}
				break;
			case 33:
				enterOuterAlt(_localctx, 10);
				{
				setState(613); match(33);
				}
				break;
			case 76:
				enterOuterAlt(_localctx, 11);
				{
				setState(614); match(76);
				}
				break;
			case 16:
				enterOuterAlt(_localctx, 12);
				{
				setState(615); match(16);
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}