// $ANTLR start "entryRuleRoot"
  // InternalBug377311TestLanguage.g:67:1: entryRuleRoot returns [EObject current=null] :
  // iv_ruleRoot= ruleRoot EOF ;
  public final EObject entryRuleRoot() throws RecognitionException {
    EObject current = null;

    EObject iv_ruleRoot = null;

    try {
      // InternalBug377311TestLanguage.g:68:2: (iv_ruleRoot= ruleRoot EOF )
      // InternalBug377311TestLanguage.g:69:2: iv_ruleRoot= ruleRoot EOF
      {
        newCompositeNode(grammarAccess.getRootRule());
        pushFollow(FollowSets000.FOLLOW_1);
        iv_ruleRoot = ruleRoot();

        state._fsp--;

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

    } catch (RecognitionException re) {
      recover(input, re);
      appendSkippedTokens();
    } finally {
    }
    return current;
  }
  // $ANTLR start "ruleRoot"
  // InternalBug377311TestLanguage.g:76:1: ruleRoot returns [EObject current=null] : (
  // (lv_childs_0_0= ruleChild ) )* ;
  public final EObject ruleRoot() throws RecognitionException {
    EObject current = null;

    EObject lv_childs_0_0 = null;

    enterRule();

    try {
      // InternalBug377311TestLanguage.g:79:28: ( ( (lv_childs_0_0= ruleChild ) )* )
      // InternalBug377311TestLanguage.g:80:1: ( (lv_childs_0_0= ruleChild ) )*
      {
        // InternalBug377311TestLanguage.g:80:1: ( (lv_childs_0_0= ruleChild ) )*
        loop1:
        do {
          int alt1 = 2;
          int LA1_0 = input.LA(1);

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

          switch (alt1) {
            case 1:
              // InternalBug377311TestLanguage.g:81:1: (lv_childs_0_0= ruleChild )
              {
                // InternalBug377311TestLanguage.g:81:1: (lv_childs_0_0= ruleChild )
                // InternalBug377311TestLanguage.g:82:3: lv_childs_0_0= ruleChild
                {
                  newCompositeNode(grammarAccess.getRootAccess().getChildsChildParserRuleCall_0());

                  pushFollow(FollowSets000.FOLLOW_3);
                  lv_childs_0_0 = ruleChild();

                  state._fsp--;

                  if (current == null) {
                    current = createModelElementForParent(grammarAccess.getRootRule());
                  }
                  add(
                      current,
                      "childs",
                      lv_childs_0_0,
                      "org.eclipse.xtext.ui.tests.editor.contentassist.Bug377311TestLanguage.Child");
                  afterParserOrEnumRuleCall();
                }
              }
              break;

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

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