public final CatchClauseContext catchClause() throws RecognitionException {
		CatchClauseContext _localctx = new CatchClauseContext(_ctx, getState());
		enterRule(_localctx, 114, RULE_catchClause);
		int _la;
		try {
			int _alt;
			enterOuterAlt(_localctx, 1);
			{
			setState(1177); match(T__31);
			setState(1181);
			_errHandler.sync(this);
			_alt = getInterpreter().adaptivePredict(_input,162,_ctx);
			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
				if ( _alt==1 ) {
					{
					{
					setState(1178); annotation();
					}
					} 
				}
				setState(1183);
				_errHandler.sync(this);
				_alt = getInterpreter().adaptivePredict(_input,162,_ctx);
			}
			setState(1195);
			switch ( getInterpreter().adaptivePredict(_input,166,_ctx) ) {
			case 1:
				{
				setState(1185);
				_la = _input.LA(1);
				if (_la==ID) {
					{
					setState(1184); ((CatchClauseContext)_localctx).var = match(ID);
					}
				}

				setState(1187); match(T__10);
				setState(1188); type();
				}
				break;
			case 2:
				{
				setState(1190);
				switch ( getInterpreter().adaptivePredict(_input,164,_ctx) ) {
				case 1:
					{
					setState(1189); type();
					}
					break;
				}
				setState(1193);
				_la = _input.LA(1);
				if (_la==ID) {
					{
					setState(1192); ((CatchClauseContext)_localctx).var = match(ID);
					}
				}

				}
				break;
			}
			setState(1197); match(T__35);
			setState(1198); match(T__9);
			setState(1199); ((CatchClauseContext)_localctx).from = match(ID);
			setState(1200); match(T__51);
			setState(1201); ((CatchClauseContext)_localctx).to = match(ID);
			setState(1202); match(T__37);
			setState(1203); gotoj();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}