// $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__Model__ElementsAssignment"
  // InternalCrossReferenceProposalTestLanguage.g:309:1: rule__Model__ElementsAssignment : (
  // ruleClass ) ;
  public final void rule__Model__ElementsAssignment() throws RecognitionException {

    int stackSize = keepStackSize();

    try {
      // InternalCrossReferenceProposalTestLanguage.g:313:1: ( ( ruleClass ) )
      // InternalCrossReferenceProposalTestLanguage.g:314:1: ( ruleClass )
      {
        // InternalCrossReferenceProposalTestLanguage.g:314:1: ( ruleClass )
        // InternalCrossReferenceProposalTestLanguage.g:315:1: ruleClass
        {
          before(grammarAccess.getModelAccess().getElementsClassParserRuleCall_0());
          pushFollow(FollowSets000.FOLLOW_2);
          ruleClass();

          state._fsp--;

          after(grammarAccess.getModelAccess().getElementsClassParserRuleCall_0());
        }
      }

    } 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 "ruleModel"
  // InternalCrossReferenceProposalTestLanguage.g:69:1: ruleModel : ( (
  // rule__Model__ElementsAssignment )* ) ;
  public final void ruleModel() throws RecognitionException {

    int stackSize = keepStackSize();

    try {
      // InternalCrossReferenceProposalTestLanguage.g:73:2: ( ( ( rule__Model__ElementsAssignment )*
      // ) )
      // InternalCrossReferenceProposalTestLanguage.g:74:1: ( ( rule__Model__ElementsAssignment )* )
      {
        // InternalCrossReferenceProposalTestLanguage.g:74:1: ( ( rule__Model__ElementsAssignment )*
        // )
        // InternalCrossReferenceProposalTestLanguage.g:75:1: ( rule__Model__ElementsAssignment )*
        {
          before(grammarAccess.getModelAccess().getElementsAssignment());
          // InternalCrossReferenceProposalTestLanguage.g:76:1: ( rule__Model__ElementsAssignment )*
          loop1:
          do {
            int alt1 = 2;
            int LA1_0 = input.LA(1);

            if ((LA1_0 == RULE_ID)) {
              alt1 = 1;
            }

            switch (alt1) {
              case 1:
                // InternalCrossReferenceProposalTestLanguage.g:76:2:
                // rule__Model__ElementsAssignment
                {
                  pushFollow(FollowSets000.FOLLOW_3);
                  rule__Model__ElementsAssignment();

                  state._fsp--;
                }
                break;

              default:
                break loop1;
            }
          } while (true);

          after(grammarAccess.getModelAccess().getElementsAssignment());
        }
      }

    } 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;
  }
  // $ANTLR start "entryRuleModel"
  // InternalCrossReferenceProposalTestLanguage.g:60:1: entryRuleModel : ruleModel EOF ;
  public final void entryRuleModel() throws RecognitionException {
    try {
      // InternalCrossReferenceProposalTestLanguage.g:61:1: ( ruleModel EOF )
      // InternalCrossReferenceProposalTestLanguage.g:62:1: ruleModel EOF
      {
        before(grammarAccess.getModelRule());
        pushFollow(FollowSets000.FOLLOW_1);
        ruleModel();

        state._fsp--;

        after(grammarAccess.getModelRule());
        match(input, EOF, FollowSets000.FOLLOW_2);
      }

    } catch (RecognitionException re) {
      reportError(re);
      recover(input, re);
    } finally {
    }
    return;
  }
 @Override
 protected Grammar getGrammar() {
   return grammarAccess.getGrammar();
 }