public final NormalClassDeclarationContext normalClassDeclaration() throws RecognitionException {
		NormalClassDeclarationContext _localctx = new NormalClassDeclarationContext(_ctx, getState());
		enterRule(_localctx, 12, RULE_normalClassDeclaration);
		int _la;
		try {
			enterOuterAlt(_localctx, 1);
			{
			setState(250); match(30);
			setState(251); match(Identifier);
			setState(253);
			_la = _input.LA(1);
			if (_la==5) {
				{
				setState(252); typeParameters();
				}
			}

			setState(257);
			_la = _input.LA(1);
			if (_la==60) {
				{
				setState(255); match(60);
				setState(256); typeRef();
				}
			}

			setState(261);
			_la = _input.LA(1);
			if (_la==82) {
				{
				setState(259); match(82);
				setState(260); typeList();
				}
			}

			setState(263); classBody();
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			_errHandler.reportError(this, re);
			_errHandler.recover(this, re);
		}
		finally {
			exitRule();
		}
		return _localctx;
	}