// $ANTLR start "rule__Class__NameAssignment_1"
  // InternalCrossReferenceProposalTestLanguage.g:343:1: rule__Class__NameAssignment_1 : ( RULE_ID )
  // ;
  public final void rule__Class__NameAssignment_1() throws RecognitionException {

    int stackSize = keepStackSize();

    try {
      // InternalCrossReferenceProposalTestLanguage.g:347:1: ( ( RULE_ID ) )
      // InternalCrossReferenceProposalTestLanguage.g:348:1: ( RULE_ID )
      {
        // InternalCrossReferenceProposalTestLanguage.g:348:1: ( RULE_ID )
        // InternalCrossReferenceProposalTestLanguage.g:349:1: RULE_ID
        {
          before(grammarAccess.getClassAccess().getNameIDTerminalRuleCall_1_0());
          match(input, RULE_ID, FollowSets000.FOLLOW_2);
          after(grammarAccess.getClassAccess().getNameIDTerminalRuleCall_1_0());
        }
      }

    } catch (RecognitionException re) {
      reportError(re);
      recover(input, re);
    } finally {

      restoreStackSize(stackSize);
    }
    return;
  }
  // $ANTLR start "rule__Class__Group_0__1__Impl"
  // InternalCrossReferenceProposalTestLanguage.g:285:1: rule__Class__Group_0__1__Impl : ( '<-' ) ;
  public final void rule__Class__Group_0__1__Impl() throws RecognitionException {

    int stackSize = keepStackSize();

    try {
      // InternalCrossReferenceProposalTestLanguage.g:289:1: ( ( '<-' ) )
      // InternalCrossReferenceProposalTestLanguage.g:290:1: ( '<-' )
      {
        // InternalCrossReferenceProposalTestLanguage.g:290:1: ( '<-' )
        // InternalCrossReferenceProposalTestLanguage.g:291:1: '<-'
        {
          before(grammarAccess.getClassAccess().getLessThanSignHyphenMinusKeyword_0_1());
          match(input, 13, FollowSets000.FOLLOW_2);
          after(grammarAccess.getClassAccess().getLessThanSignHyphenMinusKeyword_0_1());
        }
      }

    } catch (RecognitionException re) {
      reportError(re);
      recover(input, re);
    } finally {

      restoreStackSize(stackSize);
    }
    return;
  }
  // $ANTLR start "rule__Class__Group__3__Impl"
  // InternalCrossReferenceProposalTestLanguage.g:218:1: rule__Class__Group__3__Impl : ( '}' ) ;
  public final void rule__Class__Group__3__Impl() throws RecognitionException {

    int stackSize = keepStackSize();

    try {
      // InternalCrossReferenceProposalTestLanguage.g:222:1: ( ( '}' ) )
      // InternalCrossReferenceProposalTestLanguage.g:223:1: ( '}' )
      {
        // InternalCrossReferenceProposalTestLanguage.g:223:1: ( '}' )
        // InternalCrossReferenceProposalTestLanguage.g:224:1: '}'
        {
          before(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_3());
          match(input, 12, FollowSets000.FOLLOW_2);
          after(grammarAccess.getClassAccess().getRightCurlyBracketKeyword_3());
        }
      }

    } catch (RecognitionException re) {
      reportError(re);
      recover(input, re);
    } finally {

      restoreStackSize(stackSize);
    }
    return;
  }
  // $ANTLR start "rule__Class__Group__1__Impl"
  // InternalCrossReferenceProposalTestLanguage.g:159:1: rule__Class__Group__1__Impl : ( (
  // rule__Class__NameAssignment_1 ) ) ;
  public final void rule__Class__Group__1__Impl() throws RecognitionException {

    int stackSize = keepStackSize();

    try {
      // InternalCrossReferenceProposalTestLanguage.g:163:1: ( ( ( rule__Class__NameAssignment_1 ) )
      // )
      // InternalCrossReferenceProposalTestLanguage.g:164:1: ( ( rule__Class__NameAssignment_1 ) )
      {
        // InternalCrossReferenceProposalTestLanguage.g:164:1: ( ( rule__Class__NameAssignment_1 ) )
        // InternalCrossReferenceProposalTestLanguage.g:165:1: ( rule__Class__NameAssignment_1 )
        {
          before(grammarAccess.getClassAccess().getNameAssignment_1());
          // InternalCrossReferenceProposalTestLanguage.g:166:1: ( rule__Class__NameAssignment_1 )
          // InternalCrossReferenceProposalTestLanguage.g:166:2: rule__Class__NameAssignment_1
          {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Class__NameAssignment_1();

            state._fsp--;
          }

          after(grammarAccess.getClassAccess().getNameAssignment_1());
        }
      }

    } catch (RecognitionException re) {
      reportError(re);
      recover(input, re);
    } finally {

      restoreStackSize(stackSize);
    }
    return;
  }
  // $ANTLR start "ruleClass"
  // InternalCrossReferenceProposalTestLanguage.g:97:1: ruleClass : ( ( rule__Class__Group__0 ) ) ;
  public final void ruleClass() throws RecognitionException {

    int stackSize = keepStackSize();

    try {
      // InternalCrossReferenceProposalTestLanguage.g:101:2: ( ( ( rule__Class__Group__0 ) ) )
      // InternalCrossReferenceProposalTestLanguage.g:102:1: ( ( rule__Class__Group__0 ) )
      {
        // InternalCrossReferenceProposalTestLanguage.g:102:1: ( ( rule__Class__Group__0 ) )
        // InternalCrossReferenceProposalTestLanguage.g:103:1: ( rule__Class__Group__0 )
        {
          before(grammarAccess.getClassAccess().getGroup());
          // InternalCrossReferenceProposalTestLanguage.g:104:1: ( rule__Class__Group__0 )
          // InternalCrossReferenceProposalTestLanguage.g:104:2: rule__Class__Group__0
          {
            pushFollow(FollowSets000.FOLLOW_2);
            rule__Class__Group__0();

            state._fsp--;
          }

          after(grammarAccess.getClassAccess().getGroup());
        }
      }

    } catch (RecognitionException re) {
      reportError(re);
      recover(input, re);
    } finally {

      restoreStackSize(stackSize);
    }
    return;
  }
  // $ANTLR start "rule__Class__Group__0__Impl"
  // InternalCrossReferenceProposalTestLanguage.g:130:1: rule__Class__Group__0__Impl : ( (
  // rule__Class__Group_0__0 )? ) ;
  public final void rule__Class__Group__0__Impl() throws RecognitionException {

    int stackSize = keepStackSize();

    try {
      // InternalCrossReferenceProposalTestLanguage.g:134:1: ( ( ( rule__Class__Group_0__0 )? ) )
      // InternalCrossReferenceProposalTestLanguage.g:135:1: ( ( rule__Class__Group_0__0 )? )
      {
        // InternalCrossReferenceProposalTestLanguage.g:135:1: ( ( rule__Class__Group_0__0 )? )
        // InternalCrossReferenceProposalTestLanguage.g:136:1: ( rule__Class__Group_0__0 )?
        {
          before(grammarAccess.getClassAccess().getGroup_0());
          // InternalCrossReferenceProposalTestLanguage.g:137:1: ( rule__Class__Group_0__0 )?
          int alt2 = 2;
          int LA2_0 = input.LA(1);

          if ((LA2_0 == RULE_ID)) {
            int LA2_1 = input.LA(2);

            if ((LA2_1 == 13)) {
              alt2 = 1;
            }
          }
          switch (alt2) {
            case 1:
              // InternalCrossReferenceProposalTestLanguage.g:137:2: rule__Class__Group_0__0
              {
                pushFollow(FollowSets000.FOLLOW_2);
                rule__Class__Group_0__0();

                state._fsp--;
              }
              break;
          }

          after(grammarAccess.getClassAccess().getGroup_0());
        }
      }

    } catch (RecognitionException re) {
      reportError(re);
      recover(input, re);
    } finally {

      restoreStackSize(stackSize);
    }
    return;
  }