/** Constraint: (x='b' z=LookAhead4) */
 protected void sequence_LookAhead3(EObject context, LookAhead3 semanticObject) {
   if (errorAcceptor != null) {
     if (transientValues.isValueTransient(semanticObject, LookaheadLangPackage.Literals.ALTS__X)
         == ValueTransient.YES)
       errorAcceptor.accept(
           diagnosticProvider.createFeatureValueMissing(
               semanticObject, LookaheadLangPackage.Literals.ALTS__X));
     if (transientValues.isValueTransient(
             semanticObject, LookaheadLangPackage.Literals.LOOK_AHEAD3__Z)
         == ValueTransient.YES)
       errorAcceptor.accept(
           diagnosticProvider.createFeatureValueMissing(
               semanticObject, LookaheadLangPackage.Literals.LOOK_AHEAD3__Z));
   }
   INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
   SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
   feeder.accept(grammarAccess.getLookAhead3Access().getXBKeyword_2_0(), semanticObject.getX());
   feeder.accept(
       grammarAccess.getLookAhead3Access().getZLookAhead4ParserRuleCall_3_0(),
       semanticObject.getZ());
   feeder.finish();
 }
  // $ANTLR start "ruleLookAhead3"
  // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:334:1: ruleLookAhead3 returns [EObject current=null] : (otherlv_0= 'foo' otherlv_1= 'bar' ( (lv_x_2_0= 'b' ) ) ( (lv_z_3_0= ruleLookAhead4 ) ) ) ;
  public final EObject ruleLookAhead3() throws RecognitionException {
    EObject current = null;

    Token otherlv_0 = null;
    Token otherlv_1 = null;
    Token lv_x_2_0 = null;
    EObject lv_z_3_0 = null;

    enterRule();

    try {
      // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:337:28: ( (otherlv_0= 'foo' otherlv_1= 'bar' ( (lv_x_2_0= 'b' ) ) ( (lv_z_3_0= ruleLookAhead4 ) ) ) )
      // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:338:1: (otherlv_0= 'foo' otherlv_1= 'bar' ( (lv_x_2_0= 'b' ) ) ( (lv_z_3_0= ruleLookAhead4 ) ) )
      {
        // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:338:1: (otherlv_0= 'foo' otherlv_1= 'bar' ( (lv_x_2_0= 'b' ) ) ( (lv_z_3_0= ruleLookAhead4 ) ) )
        // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:338:3: otherlv_0= 'foo' otherlv_1= 'bar' ( (lv_x_2_0= 'b' ) ) ( (lv_z_3_0= ruleLookAhead4 ) )
        {
          otherlv_0 = (Token) match(input, 13, FollowSets000.FOLLOW_13_in_ruleLookAhead3792);

          newLeafNode(otherlv_0, grammarAccess.getLookAhead3Access().getFooKeyword_0());

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

          newLeafNode(otherlv_1, grammarAccess.getLookAhead3Access().getBarKeyword_1());

          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:346:1: ( (lv_x_2_0= 'b' ) )
          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:347:1: (lv_x_2_0= 'b' )
          {
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:347:1: (lv_x_2_0= 'b' )
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:348:3: lv_x_2_0= 'b'
            {
              lv_x_2_0 = (Token) match(input, 14, FollowSets000.FOLLOW_14_in_ruleLookAhead3822);

              newLeafNode(lv_x_2_0, grammarAccess.getLookAhead3Access().getXBKeyword_2_0());

              if (current == null) {
                current = createModelElement(grammarAccess.getLookAhead3Rule());
              }
              setWithLastConsumed(current, "x", lv_x_2_0, "b");
            }
          }

          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:361:2: ( (lv_z_3_0= ruleLookAhead4 ) )
          // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:362:1: (lv_z_3_0= ruleLookAhead4 )
          {
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:362:1: (lv_z_3_0= ruleLookAhead4 )
            // ../org.eclipse.xtext.tests/src-gen/org/eclipse/xtext/testlanguages/parser/antlr/internal/InternalLookaheadTestLanguage.g:363:3: lv_z_3_0= ruleLookAhead4
            {
              newCompositeNode(
                  grammarAccess.getLookAhead3Access().getZLookAhead4ParserRuleCall_3_0());

              pushFollow(FollowSets000.FOLLOW_ruleLookAhead4_in_ruleLookAhead3856);
              lv_z_3_0 = ruleLookAhead4();

              state._fsp--;

              if (current == null) {
                current = createModelElementForParent(grammarAccess.getLookAhead3Rule());
              }
              set(current, "z", lv_z_3_0, "LookAhead4");
              afterParserOrEnumRuleCall();
            }
          }
        }
      }

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