public RuleBodyContext ruleBody() {
		RuleBodyContext _localctx = new RuleBodyContext(Context, State);
		EnterRule(_localctx, 6, RULE_ruleBody);
		int _la;
		try {
			State = 80;
			switch (TokenStream.La(1)) {
			case BYTES:
			case ITEMS:
			case AS:
			case DESCRIBED:
			case BY:
			case ASCII:
			case UNICODE:
			case UTF8:
			case UINT64:
			case UINT32:
			case UINT16:
			case INT64:
			case INT32:
			case INT16:
			case SINGLE:
			case FLOAT:
			case DOUBLE:
			case ADDITIONAL:
			case PROPERTIES:
			case IDENTIFIED:
			case FROM:
			case DOC_COMMENT:
			case LABEL:
				EnterOuterAlt(_localctx, 1);
				{
				{
				State = 53;
				_la = TokenStream.La(1);
				if (_la==DOC_COMMENT) {
					{
					State = 52; Match(DOC_COMMENT);
					}
				}

				State = 68;
				switch ( Interpreter.AdaptivePredict(TokenStream,5,Context) ) {
				case 1:
					{
					{
					State = 55; label();
					State = 56; Match(LPAREN);
					State = 57; sizeReference();
					State = 58; Match(ITEMS);
					State = 59; Match(RPAREN);
					}
					}
					break;
				case 2:
					{
					{
					State = 61; label();
					State = 66;
					switch ( Interpreter.AdaptivePredict(TokenStream,4,Context) ) {
					case 1:
						{
						State = 62; Match(LPAREN);
						State = 63; ruleOptions();
						State = 64; Match(RPAREN);
						}
						break;
					}
					}
					}
					break;
				}
				}
				}
				break;
			case LPAREN:
				EnterOuterAlt(_localctx, 2);
				{
				{
				State = 70; Match(LPAREN);
				State = 71; Match(ADDITIONAL);
				State = 72; Match(PROPERTIES);
				State = 73; Match(IDENTIFIED);
				State = 74; Match(BY);
				State = 75; propertyName();
				State = 76; Match(FROM);
				State = 77; lookupTableName();
				State = 78; Match(RPAREN);
				}
				}
				break;
			default:
				throw new NoViableAltException(this);
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			ErrorHandler.ReportError(this, re);
			ErrorHandler.Recover(this, re);
		}
		finally {
			ExitRule();
		}
		return _localctx;
	}
	public RuleBodyContext ruleBody() {
		RuleBodyContext _localctx = new RuleBodyContext(Context, State);
		EnterRule(_localctx, 6, RULE_ruleBody);
		int _la;
		try {
			State = 89;
			switch ( Interpreter.AdaptivePredict(TokenStream,6,Context) ) {
			case 1:
				EnterOuterAlt(_localctx, 1);
				{
				{
				State = 53;
				_la = TokenStream.La(1);
				if (_la==DOC_COMMENT) {
					{
					State = 52; Match(DOC_COMMENT);
					}
				}

				State = 68;
				switch ( Interpreter.AdaptivePredict(TokenStream,5,Context) ) {
				case 1:
					{
					{
					State = 55; label();
					State = 56; Match(LPAREN);
					State = 57; sizeReference();
					State = 58; Match(ITEMS);
					State = 59; Match(RPAREN);
					}
					}
					break;
				case 2:
					{
					{
					State = 61; label();
					State = 66;
					switch ( Interpreter.AdaptivePredict(TokenStream,4,Context) ) {
					case 1:
						{
						State = 62; Match(LPAREN);
						State = 63; ruleOptions();
						State = 64; Match(RPAREN);
						}
						break;
					}
					}
					}
					break;
				}
				}
				}
				break;
			case 2:
				EnterOuterAlt(_localctx, 2);
				{
				{
				State = 70; Match(LPAREN);
				State = 71; Match(ADDITIONAL);
				State = 72; Match(PROPERTIES);
				State = 73; Match(IDENTIFIED);
				State = 74; Match(BY);
				State = 75; propertyName();
				State = 76; Match(FROM);
				State = 77; lookupTableName();
				State = 78; Match(RPAREN);
				}
				}
				break;
			case 3:
				EnterOuterAlt(_localctx, 3);
				{
				{
				State = 80; Match(LPAREN);
				State = 81; Match(PADDING);
				State = 82; Match(TO);
				State = 83; Match(MULTIPLE);
				State = 84; Match(OF);
				State = 85; sizeReference();
				State = 86; Match(BYTES);
				State = 87; Match(RPAREN);
				}
				}
				break;
			}
		}
		catch (RecognitionException re) {
			_localctx.exception = re;
			ErrorHandler.ReportError(this, re);
			ErrorHandler.Recover(this, re);
		}
		finally {
			ExitRule();
		}
		return _localctx;
	}