// $ANTLR start "entryRuleSecond"
  // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:67:1: entryRuleSecond returns [EObject current=null] : iv_ruleSecond= ruleSecond EOF ;
  public final EObject entryRuleSecond() throws RecognitionException {
    EObject current = null;

    EObject iv_ruleSecond = null;

    try {
      // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:68:2: (iv_ruleSecond= ruleSecond EOF )
      // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:69:2: iv_ruleSecond= ruleSecond EOF
      {
        newCompositeNode(grammarAccess.getSecondRule());
        pushFollow(FollowSets000.FOLLOW_ruleSecond_in_entryRuleSecond75);
        iv_ruleSecond = ruleSecond();

        state._fsp--;

        current = iv_ruleSecond;
        match(input, EOF, FollowSets000.FOLLOW_EOF_in_entryRuleSecond85);
      }

    } catch (RecognitionException re) {
      recover(input, re);
      appendSkippedTokens();
    } finally {
    }
    return current;
  }
 public InternalEcoreFragmentTestLanguageParser(
     TokenStream input, EcoreFragmentTestLanguageGrammarAccess grammarAccess) {
   this(input);
   this.grammarAccess = grammarAccess;
   registerRules(grammarAccess.getGrammar());
 }
  // $ANTLR start "ruleSecond"
  // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:76:1: ruleSecond returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'first' ( (otherlv_2= RULE_ID ) ) ) ;
  public final EObject ruleSecond() throws RecognitionException {
    EObject current = null;

    Token lv_name_0_0 = null;
    Token otherlv_1 = null;
    Token otherlv_2 = null;

    enterRule();

    try {
      // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:79:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'first' ( (otherlv_2= RULE_ID ) ) ) )
      // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:80:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'first' ( (otherlv_2= RULE_ID ) ) )
      {
        // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:80:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'first' ( (otherlv_2= RULE_ID ) ) )
        // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:80:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'first' ( (otherlv_2= RULE_ID ) )
        {
          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:80:2: ( (lv_name_0_0= RULE_ID ) )
          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:81:1: (lv_name_0_0= RULE_ID )
          {
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:81:1: (lv_name_0_0= RULE_ID )
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:82:3: lv_name_0_0= RULE_ID
            {
              lv_name_0_0 =
                  (Token) match(input, RULE_ID, FollowSets000.FOLLOW_RULE_ID_in_ruleSecond127);

              newLeafNode(
                  lv_name_0_0, grammarAccess.getSecondAccess().getNameIDTerminalRuleCall_0_0());

              if (current == null) {
                current = createModelElement(grammarAccess.getSecondRule());
              }
              setWithLastConsumed(current, "name", lv_name_0_0, "ID");
            }
          }

          otherlv_1 = (Token) match(input, 11, FollowSets000.FOLLOW_11_in_ruleSecond144);

          newLeafNode(otherlv_1, grammarAccess.getSecondAccess().getFirstKeyword_1());

          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:102:1: ( (otherlv_2= RULE_ID ) )
          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:103:1: (otherlv_2= RULE_ID )
          {
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:103:1: (otherlv_2= RULE_ID )
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/generator/ecore/parser/antlr/internal/InternalEcoreFragmentTestLanguage.g:104:3: otherlv_2= RULE_ID
            {
              if (current == null) {
                current = createModelElement(grammarAccess.getSecondRule());
              }

              otherlv_2 =
                  (Token) match(input, RULE_ID, FollowSets000.FOLLOW_RULE_ID_in_ruleSecond164);

              newLeafNode(
                  otherlv_2, grammarAccess.getSecondAccess().getFirstFirstCrossReference_2_0());
            }
          }
        }
      }

      leaveRule();
    } catch (RecognitionException re) {
      recover(input, re);
      appendSkippedTokens();
    } finally {
    }
    return current;
  }