// $ANTLR start "entryRuleChild"
  // InternalBug377311TestLanguage.g:106:1: entryRuleChild returns [EObject current=null] :
  // iv_ruleChild= ruleChild EOF ;
  public final EObject entryRuleChild() throws RecognitionException {
    EObject current = null;

    EObject iv_ruleChild = null;

    HiddenTokens myHiddenTokenState =
        ((XtextTokenStream) input).setHiddenTokens("RULE_WS", "RULE_ID");

    try {
      // InternalBug377311TestLanguage.g:110:2: (iv_ruleChild= ruleChild EOF )
      // InternalBug377311TestLanguage.g:111:2: iv_ruleChild= ruleChild EOF
      {
        newCompositeNode(grammarAccess.getChildRule());
        pushFollow(FollowSets000.FOLLOW_1);
        iv_ruleChild = ruleChild();

        state._fsp--;

        current = iv_ruleChild;
        match(input, EOF, FollowSets000.FOLLOW_2);
      }

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

      myHiddenTokenState.restore();
    }
    return current;
  }
  // $ANTLR start "ruleChild"
  // InternalBug377311TestLanguage.g:121:1: ruleChild returns [EObject current=null] : (otherlv_0=
  // 'child' ( (lv_name_1_0= RULE_STRING ) ) ) ;
  public final EObject ruleChild() throws RecognitionException {
    EObject current = null;

    Token otherlv_0 = null;
    Token lv_name_1_0 = null;

    enterRule();
    HiddenTokens myHiddenTokenState =
        ((XtextTokenStream) input).setHiddenTokens("RULE_WS", "RULE_ID");

    try {
      // InternalBug377311TestLanguage.g:125:28: ( (otherlv_0= 'child' ( (lv_name_1_0= RULE_STRING )
      // ) ) )
      // InternalBug377311TestLanguage.g:126:1: (otherlv_0= 'child' ( (lv_name_1_0= RULE_STRING ) )
      // )
      {
        // InternalBug377311TestLanguage.g:126:1: (otherlv_0= 'child' ( (lv_name_1_0= RULE_STRING )
        // ) )
        // InternalBug377311TestLanguage.g:126:3: otherlv_0= 'child' ( (lv_name_1_0= RULE_STRING ) )
        {
          otherlv_0 = (Token) match(input, 12, FollowSets000.FOLLOW_4);

          newLeafNode(otherlv_0, grammarAccess.getChildAccess().getChildKeyword_0());

          // InternalBug377311TestLanguage.g:130:1: ( (lv_name_1_0= RULE_STRING ) )
          // InternalBug377311TestLanguage.g:131:1: (lv_name_1_0= RULE_STRING )
          {
            // InternalBug377311TestLanguage.g:131:1: (lv_name_1_0= RULE_STRING )
            // InternalBug377311TestLanguage.g:132:3: lv_name_1_0= RULE_STRING
            {
              lv_name_1_0 = (Token) match(input, RULE_STRING, FollowSets000.FOLLOW_2);

              newLeafNode(
                  lv_name_1_0, grammarAccess.getChildAccess().getNameSTRINGTerminalRuleCall_1_0());

              if (current == null) {
                current = createModelElement(grammarAccess.getChildRule());
              }
              setWithLastConsumed(
                  current, "name", lv_name_1_0, "org.eclipse.xtext.common.Terminals.STRING");
            }
          }
        }
      }

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

      myHiddenTokenState.restore();
    }
    return current;
  }