// $ANTLR start "ruleLookAhead0"
  // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:165:1: ruleLookAhead0 returns [EObject current=null] : (otherlv_0= 'bar' ( (lv_x_1_0= 'a' ) ) ) ;
  public final EObject ruleLookAhead0() throws RecognitionException {
    EObject current = null;

    Token otherlv_0 = null;
    Token lv_x_1_0 = null;

    enterRule();

    try {
      // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:168:28: ( (otherlv_0= 'bar' ( (lv_x_1_0= 'a' ) ) ) )
      // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:169:1: (otherlv_0= 'bar' ( (lv_x_1_0= 'a' ) ) )
      {
        // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:169:1: (otherlv_0= 'bar' ( (lv_x_1_0= 'a' ) ) )
        // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:169:3: otherlv_0= 'bar' ( (lv_x_1_0= 'a' ) )
        {
          otherlv_0 = (Token) match(input, 11, FollowSets000.FOLLOW_11_in_ruleLookAhead0359);

          newLeafNode(otherlv_0, grammarAccess.getLookAhead0Access().getBarKeyword_0());

          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:173:1: ( (lv_x_1_0= 'a' ) )
          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:174:1: (lv_x_1_0= 'a' )
          {
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:174:1: (lv_x_1_0= 'a' )
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:175:3: lv_x_1_0= 'a'
            {
              lv_x_1_0 = (Token) match(input, 12, FollowSets000.FOLLOW_12_in_ruleLookAhead0377);

              newLeafNode(lv_x_1_0, grammarAccess.getLookAhead0Access().getXAKeyword_1_0());

              if (current == null) {
                current = createModelElement(grammarAccess.getLookAhead0Rule());
              }
              setWithLastConsumed(current, "x", lv_x_1_0, "a");
            }
          }
        }
      }

      leaveRule();
    } catch (RecognitionException re) {
      recover(input, re);
      appendSkippedTokens();
    } finally {
    }
    return current;
  }
 /** Constraint: x='a' */
 protected void sequence_LookAhead0(EObject context, LookAhead0 semanticObject) {
   if (errorAcceptor != null) {
     if (transientValues.isValueTransient(semanticObject, LookaheadLangPackage.Literals.ALTS__X)
         == ValueTransient.YES)
       errorAcceptor.accept(
           diagnosticProvider.createFeatureValueMissing(
               semanticObject, LookaheadLangPackage.Literals.ALTS__X));
   }
   INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
   SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
   feeder.accept(grammarAccess.getLookAhead0Access().getXAKeyword_1_0(), semanticObject.getX());
   feeder.finish();
 }