docs: public final EObject ruleXMemberFeatureCall() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_2=null;
          Token lv_explicitStatic_3_0=null;
          Token otherlv_8=null;
          Token lv_nullSafe_9_0=null;
          Token lv_explicitStatic_10_0=null;
          Token otherlv_11=null;
          Token otherlv_13=null;
          Token otherlv_15=null;
          Token lv_explicitOperationCall_17_0=null;
          Token otherlv_20=null;
          Token otherlv_22=null;
          EObject this_XPrimaryExpression_0 = null;
  
          EObject lv_value_6_0 = null;
  
          EObject lv_typeArguments_12_0 = null;
  
          EObject lv_typeArguments_14_0 = null;
  
          EObject lv_memberCallArguments_18_0 = null;
  
          EObject lv_memberCallArguments_19_0 = null;
  
          EObject lv_memberCallArguments_21_0 = null;
  
          EObject lv_memberCallArguments_23_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:13253:2: ( (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* ) )
              // InternalSARL.g:13254:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
              {
              // InternalSARL.g:13254:2: (this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )* )
              // InternalSARL.g:13255:3: this_XPrimaryExpression_0= ruleXPrimaryExpression ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
              {
              if ( state.backtracking==0 ) {
  
                			newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getXPrimaryExpressionParserRuleCall_0());
                		
              }
              pushFollow(FOLLOW_125);
              this_XPrimaryExpression_0=ruleXPrimaryExpression();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			current = this_XPrimaryExpression_0;
                			afterParserOrEnumRuleCall();
                		
              }
              // InternalSARL.g:13263:3: ( ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) ) | ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? ) )*
              loop324:
              do {
                  int alt324=3;
                  switch ( input.LA(1) ) {
                  case 77:
                      {
                      int LA324_2 = input.LA(2);
  
                      if ( (synpred41_InternalSARL()) ) {
                          alt324=1;
                      }
                      else if ( (synpred42_InternalSARL()) ) {
                          alt324=2;
                      }
  
  
                      }
                      break;
                  case 127:
                      {
                      int LA324_3 = input.LA(2);
  
                      if ( (synpred41_InternalSARL()) ) {
                          alt324=1;
                      }
                      else if ( (synpred42_InternalSARL()) ) {
                          alt324=2;
                      }
  
  
                      }
                      break;
                  case 128:
                      {
                      int LA324_4 = input.LA(2);
  
                      if ( (synpred42_InternalSARL()) ) {
                          alt324=2;
                      }
  
  
                      }
                      break;
  
                  }
  
                  switch (alt324) {
              	case 1 :
              	    // InternalSARL.g:13264:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
              	    {
              	    // InternalSARL.g:13264:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
              	    // InternalSARL.g:13265:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
              	    {
              	    // InternalSARL.g:13265:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
              	    // InternalSARL.g:13266:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
              	    {
              	    // InternalSARL.g:13286:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
              	    // InternalSARL.g:13287:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
              	    {
              	    // InternalSARL.g:13287:7: ()
              	    // InternalSARL.g:13288:8: 
              	    {
              	    if ( state.backtracking==0 ) {
  
              	      								current = forceCreateModelElementAndSet(
              	      									grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
              	      									current);
              	      							
              	    }
  
              	    }
  
              	    // InternalSARL.g:13294:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
              	    int alt316=2;
              	    int LA316_0 = input.LA(1);
  
              	    if ( (LA316_0==77) ) {
              	        alt316=1;
              	    }
              	    else if ( (LA316_0==127) ) {
              	        alt316=2;
              	    }
              	    else {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        NoViableAltException nvae =
              	            new NoViableAltException("", 316, 0, input);
  
              	        throw nvae;
              	    }
              	    switch (alt316) {
              	        case 1 :
              	            // InternalSARL.g:13295:8: otherlv_2= '.'
              	            {
              	            otherlv_2=(Token)match(input,77,FOLLOW_126); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
              	              							
              	            }
  
              	            }
              	            break;
              	        case 2 :
              	            // InternalSARL.g:13300:8: ( (lv_explicitStatic_3_0= '::' ) )
              	            {
              	            // InternalSARL.g:13300:8: ( (lv_explicitStatic_3_0= '::' ) )
              	            // InternalSARL.g:13301:9: (lv_explicitStatic_3_0= '::' )
              	            {
              	            // InternalSARL.g:13301:9: (lv_explicitStatic_3_0= '::' )
              	            // InternalSARL.g:13302:10: lv_explicitStatic_3_0= '::'
              	            {
              	            lv_explicitStatic_3_0=(Token)match(input,127,FOLLOW_126); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              										newLeafNode(lv_explicitStatic_3_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0());
              	              									
              	            }
              	            if ( state.backtracking==0 ) {
  
              	              										if (current==null) {
              	              											current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
              	              										}
              	              										setWithLastConsumed(current, "explicitStatic", true, "::");
              	              									
              	            }
  
              	            }
  
  
              	            }
  
  
              	            }
              	            break;
  
              	    }
  
              	    // InternalSARL.g:13315:7: ( ( ruleFeatureCallID ) )
              	    // InternalSARL.g:13316:8: ( ruleFeatureCallID )
              	    {
              	    // InternalSARL.g:13316:8: ( ruleFeatureCallID )
              	    // InternalSARL.g:13317:9: ruleFeatureCallID
              	    {
              	    if ( state.backtracking==0 ) {
  
              	      									if (current==null) {
              	      										current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
              	      									}
              	      								
              	    }
              	    if ( state.backtracking==0 ) {
  
              	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0());
              	      								
              	    }
              	    pushFollow(FOLLOW_83);
              	    ruleFeatureCallID();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      									afterParserOrEnumRuleCall();
              	      								
              	    }
  
              	    }
  
  
              	    }
  
              	    if ( state.backtracking==0 ) {
  
              	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3());
              	      						
              	    }
              	    pushFollow(FOLLOW_45);
              	    ruleOpSingleAssign();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      							afterParserOrEnumRuleCall();
              	      						
              	    }
  
              	    }
  
  
              	    }
  
              	    // InternalSARL.g:13340:5: ( (lv_value_6_0= ruleXAssignment ) )
              	    // InternalSARL.g:13341:6: (lv_value_6_0= ruleXAssignment )
              	    {
              	    // InternalSARL.g:13341:6: (lv_value_6_0= ruleXAssignment )
              	    // InternalSARL.g:13342:7: lv_value_6_0= ruleXAssignment
              	    {
              	    if ( state.backtracking==0 ) {
  
              	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0());
              	      						
              	    }
              	    pushFollow(FOLLOW_125);
              	    lv_value_6_0=ruleXAssignment();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      							if (current==null) {
              	      								current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
              	      							}
              	      							set(
              	      								current,
              	      								"value",
              	      								lv_value_6_0,
              	      								"org.eclipse.xtext.xbase.Xbase.XAssignment");
              	      							afterParserOrEnumRuleCall();
              	      						
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 2 :
              	    // InternalSARL.g:13361:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
              	    {
              	    // InternalSARL.g:13361:4: ( ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )? )
              	    // InternalSARL.g:13362:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) ) (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )? ( ( ruleIdOrSuper ) ) ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )? ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
              	    {
              	    // InternalSARL.g:13362:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
              	    // InternalSARL.g:13363:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
              	    {
              	    // InternalSARL.g:13383:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
              	    // InternalSARL.g:13384:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
              	    {
              	    // InternalSARL.g:13384:7: ()
              	    // InternalSARL.g:13385:8: 
              	    {
              	    if ( state.backtracking==0 ) {
  
              	      								current = forceCreateModelElementAndSet(
              	      									grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
              	      									current);
              	      							
              	    }
  
              	    }
  
              	    // InternalSARL.g:13391:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
              	    int alt317=3;
              	    switch ( input.LA(1) ) {
              	    case 77:
              	        {
              	        alt317=1;
              	        }
              	        break;
              	    case 128:
              	        {
              	        alt317=2;
              	        }
              	        break;
              	    case 127:
              	        {
              	        alt317=3;
              	        }
              	        break;
              	    default:
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        NoViableAltException nvae =
              	            new NoViableAltException("", 317, 0, input);
  
              	        throw nvae;
              	    }
  
              	    switch (alt317) {
              	        case 1 :
              	            // InternalSARL.g:13392:8: otherlv_8= '.'
              	            {
              	            otherlv_8=(Token)match(input,77,FOLLOW_127); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
              	              							
              	            }
  
              	            }
              	            break;
              	        case 2 :
              	            // InternalSARL.g:13397:8: ( (lv_nullSafe_9_0= '?.' ) )
              	            {
              	            // InternalSARL.g:13397:8: ( (lv_nullSafe_9_0= '?.' ) )
              	            // InternalSARL.g:13398:9: (lv_nullSafe_9_0= '?.' )
              	            {
              	            // InternalSARL.g:13398:9: (lv_nullSafe_9_0= '?.' )
              	            // InternalSARL.g:13399:10: lv_nullSafe_9_0= '?.'
              	            {
              	            lv_nullSafe_9_0=(Token)match(input,128,FOLLOW_127); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              										newLeafNode(lv_nullSafe_9_0, grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0());
              	              									
              	            }
              	            if ( state.backtracking==0 ) {
  
              	              										if (current==null) {
              	              											current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
              	              										}
              	              										setWithLastConsumed(current, "nullSafe", true, "?.");
              	              									
              	            }
  
              	            }
  
  
              	            }
  
  
              	            }
              	            break;
              	        case 3 :
              	            // InternalSARL.g:13412:8: ( (lv_explicitStatic_10_0= '::' ) )
              	            {
              	            // InternalSARL.g:13412:8: ( (lv_explicitStatic_10_0= '::' ) )
              	            // InternalSARL.g:13413:9: (lv_explicitStatic_10_0= '::' )
              	            {
              	            // InternalSARL.g:13413:9: (lv_explicitStatic_10_0= '::' )
              	            // InternalSARL.g:13414:10: lv_explicitStatic_10_0= '::'
              	            {
              	            lv_explicitStatic_10_0=(Token)match(input,127,FOLLOW_127); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              										newLeafNode(lv_explicitStatic_10_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0());
              	              									
              	            }
              	            if ( state.backtracking==0 ) {
  
              	              										if (current==null) {
              	              											current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
              	              										}
              	              										setWithLastConsumed(current, "explicitStatic", true, "::");
              	              									
              	            }
  
              	            }
  
  
              	            }
  
  
              	            }
              	            break;
  
              	    }
  
  
              	    }
  
  
              	    }
  
              	    // InternalSARL.g:13429:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
              	    int alt319=2;
              	    int LA319_0 = input.LA(1);
  
              	    if ( (LA319_0==40) ) {
              	        alt319=1;
              	    }
              	    switch (alt319) {
              	        case 1 :
              	            // InternalSARL.g:13430:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
              	            {
              	            otherlv_11=(Token)match(input,40,FOLLOW_92); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
              	              					
              	            }
              	            // InternalSARL.g:13434:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
              	            // InternalSARL.g:13435:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
              	            {
              	            // InternalSARL.g:13435:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
              	            // InternalSARL.g:13436:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
              	            {
              	            if ( state.backtracking==0 ) {
  
              	              								newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0());
              	              							
              	            }
              	            pushFollow(FOLLOW_28);
              	            lv_typeArguments_12_0=ruleJvmArgumentTypeReference();
  
              	            state._fsp--;
              	            if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              								if (current==null) {
              	              									current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
              	              								}
              	              								add(
              	              									current,
              	              									"typeArguments",
              	              									lv_typeArguments_12_0,
              	              									"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
              	              								afterParserOrEnumRuleCall();
              	              							
              	            }
  
              	            }
  
  
              	            }
  
              	            // InternalSARL.g:13453:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
              	            loop318:
              	            do {
              	                int alt318=2;
              	                int LA318_0 = input.LA(1);
  
              	                if ( (LA318_0==32) ) {
              	                    alt318=1;
              	                }
  
  
              	                switch (alt318) {
              	            	case 1 :
              	            	    // InternalSARL.g:13454:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
              	            	    {
              	            	    otherlv_13=(Token)match(input,32,FOLLOW_92); if (state.failed) return current;
              	            	    if ( state.backtracking==0 ) {
  
              	            	      							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
              	            	      						
              	            	    }
              	            	    // InternalSARL.g:13458:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
              	            	    // InternalSARL.g:13459:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
              	            	    {
              	            	    // InternalSARL.g:13459:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
              	            	    // InternalSARL.g:13460:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
              	            	    {
              	            	    if ( state.backtracking==0 ) {
  
              	            	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0());
              	            	      								
              	            	    }
              	            	    pushFollow(FOLLOW_28);
              	            	    lv_typeArguments_14_0=ruleJvmArgumentTypeReference();
  
              	            	    state._fsp--;
              	            	    if (state.failed) return current;
              	            	    if ( state.backtracking==0 ) {
  
              	            	      									if (current==null) {
              	            	      										current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
              	            	      									}
              	            	      									add(
              	            	      										current,
              	            	      										"typeArguments",
              	            	      										lv_typeArguments_14_0,
              	            	      										"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
              	            	      									afterParserOrEnumRuleCall();
              	            	      								
              	            	    }
  
              	            	    }
  
  
              	            	    }
  
  
              	            	    }
              	            	    break;
  
              	            	default :
              	            	    break loop318;
              	                }
              	            } while (true);
  
              	            otherlv_15=(Token)match(input,41,FOLLOW_127); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
              	              					
              	            }
  
              	            }
              	            break;
  
              	    }
  
              	    // InternalSARL.g:13483:5: ( ( ruleIdOrSuper ) )
              	    // InternalSARL.g:13484:6: ( ruleIdOrSuper )
              	    {
              	    // InternalSARL.g:13484:6: ( ruleIdOrSuper )
              	    // InternalSARL.g:13485:7: ruleIdOrSuper
              	    {
              	    if ( state.backtracking==0 ) {
  
              	      							if (current==null) {
              	      								current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
              	      							}
              	      						
              	    }
              	    if ( state.backtracking==0 ) {
  
              	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0());
              	      						
              	    }
              	    pushFollow(FOLLOW_128);
              	    ruleIdOrSuper();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      							afterParserOrEnumRuleCall();
              	      						
              	    }
  
              	    }
  
  
              	    }
  
              	    // InternalSARL.g:13499:5: ( ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')' )?
              	    int alt322=2;
              	    alt322 = dfa322.predict(input);
              	    switch (alt322) {
              	        case 1 :
              	            // InternalSARL.g:13500:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) ) ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )? otherlv_22= ')'
              	            {
              	            // InternalSARL.g:13500:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
              	            // InternalSARL.g:13501:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
              	            {
              	            // InternalSARL.g:13505:7: (lv_explicitOperationCall_17_0= '(' )
              	            // InternalSARL.g:13506:8: lv_explicitOperationCall_17_0= '('
              	            {
              	            lv_explicitOperationCall_17_0=(Token)match(input,49,FOLLOW_97); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              								newLeafNode(lv_explicitOperationCall_17_0, grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0());
              	              							
              	            }
              	            if ( state.backtracking==0 ) {
  
              	              								if (current==null) {
              	              									current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
              	              								}
              	              								setWithLastConsumed(current, "explicitOperationCall", true, "(");
              	              							
              	            }
  
              	            }
  
  
              	            }
  
              	            // InternalSARL.g:13518:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
              	            int alt321=3;
              	            alt321 = dfa321.predict(input);
              	            switch (alt321) {
              	                case 1 :
              	                    // InternalSARL.g:13519:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
              	                    {
              	                    // InternalSARL.g:13519:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
              	                    // InternalSARL.g:13520:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
              	                    {
              	                    // InternalSARL.g:13545:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
              	                    // InternalSARL.g:13546:9: lv_memberCallArguments_18_0= ruleXShortClosure
              	                    {
              	                    if ( state.backtracking==0 ) {
  
              	                      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0());
              	                      								
              	                    }
              	                    pushFollow(FOLLOW_81);
              	                    lv_memberCallArguments_18_0=ruleXShortClosure();
  
              	                    state._fsp--;
              	                    if (state.failed) return current;
              	                    if ( state.backtracking==0 ) {
  
              	                      									if (current==null) {
              	                      										current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
              	                      									}
              	                      									add(
              	                      										current,
              	                      										"memberCallArguments",
              	                      										lv_memberCallArguments_18_0,
              	                      										"org.eclipse.xtext.xbase.Xbase.XShortClosure");
              	                      									afterParserOrEnumRuleCall();
              	                      								
              	                    }
  
              	                    }
  
  
              	                    }
  
  
              	                    }
              	                    break;
              	                case 2 :
              	                    // InternalSARL.g:13564:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
              	                    {
              	                    // InternalSARL.g:13564:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
              	                    // InternalSARL.g:13565:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
              	                    {
              	                    // InternalSARL.g:13565:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
              	                    // InternalSARL.g:13566:9: (lv_memberCallArguments_19_0= ruleXExpression )
              	                    {
              	                    // InternalSARL.g:13566:9: (lv_memberCallArguments_19_0= ruleXExpression )
              	                    // InternalSARL.g:13567:10: lv_memberCallArguments_19_0= ruleXExpression
              	                    {
              	                    if ( state.backtracking==0 ) {
  
              	                      										newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0());
              	                      									
              	                    }
              	                    pushFollow(FOLLOW_51);
              	                    lv_memberCallArguments_19_0=ruleXExpression();
  
              	                    state._fsp--;
              	                    if (state.failed) return current;
              	                    if ( state.backtracking==0 ) {
  
              	                      										if (current==null) {
              	                      											current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
              	                      										}
              	                      										add(
              	                      											current,
              	                      											"memberCallArguments",
              	                      											lv_memberCallArguments_19_0,
              	                      											"org.eclipse.xtext.xbase.Xbase.XExpression");
              	                      										afterParserOrEnumRuleCall();
              	                      									
              	                    }
  
              	                    }
  
  
              	                    }
  
              	                    // InternalSARL.g:13584:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
              	                    loop320:
              	                    do {
              	                        int alt320=2;
              	                        int LA320_0 = input.LA(1);
  
              	                        if ( (LA320_0==32) ) {
              	                            alt320=1;
              	                        }
  
  
              	                        switch (alt320) {
              	                    	case 1 :
              	                    	    // InternalSARL.g:13585:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
              	                    	    {
              	                    	    otherlv_20=(Token)match(input,32,FOLLOW_45); if (state.failed) return current;
              	                    	    if ( state.backtracking==0 ) {
  
              	                    	      									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
              	                    	      								
              	                    	    }
              	                    	    // InternalSARL.g:13589:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
              	                    	    // InternalSARL.g:13590:10: (lv_memberCallArguments_21_0= ruleXExpression )
              	                    	    {
              	                    	    // InternalSARL.g:13590:10: (lv_memberCallArguments_21_0= ruleXExpression )
              	                    	    // InternalSARL.g:13591:11: lv_memberCallArguments_21_0= ruleXExpression
              	                    	    {
              	                    	    if ( state.backtracking==0 ) {
  
              	                    	      											newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0());
              	                    	      										
              	                    	    }
              	                    	    pushFollow(FOLLOW_51);
              	                    	    lv_memberCallArguments_21_0=ruleXExpression();
  
              	                    	    state._fsp--;
              	                    	    if (state.failed) return current;
              	                    	    if ( state.backtracking==0 ) {
  
              	                    	      											if (current==null) {
              	                    	      												current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
              	                    	      											}
              	                    	      											add(
              	                    	      												current,
              	                    	      												"memberCallArguments",
              	                    	      												lv_memberCallArguments_21_0,
              	                    	      												"org.eclipse.xtext.xbase.Xbase.XExpression");
              	                    	      											afterParserOrEnumRuleCall();
              	                    	      										
              	                    	    }
  
              	                    	    }
  
  
              	                    	    }
  
  
              	                    	    }
              	                    	    break;
  
              	                    	default :
              	                    	    break loop320;
              	                        }
              	                    } while (true);
  
  
              	                    }
  
  
              	                    }
              	                    break;
  
              	            }
  
              	            otherlv_22=(Token)match(input,50,FOLLOW_129); if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
              	              					
              	            }
  
              	            }
              	            break;
  
              	    }
  
              	    // InternalSARL.g:13616:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
              	    int alt323=2;
              	    alt323 = dfa323.predict(input);
              	    switch (alt323) {
              	        case 1 :
              	            // InternalSARL.g:13617:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
              	            {
              	            // InternalSARL.g:13623:6: (lv_memberCallArguments_23_0= ruleXClosure )
              	            // InternalSARL.g:13624:7: lv_memberCallArguments_23_0= ruleXClosure
              	            {
              	            if ( state.backtracking==0 ) {
  
              	              							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0());
              	              						
              	            }
              	            pushFollow(FOLLOW_125);
              	            lv_memberCallArguments_23_0=ruleXClosure();
  
              	            state._fsp--;
              	            if (state.failed) return current;
              	            if ( state.backtracking==0 ) {
  
              	              							if (current==null) {
              	              								current = createModelElementForParent(grammarAccess.getXMemberFeatureCallRule());
              	              							}
              	              							add(
              	              								current,
              	              								"memberCallArguments",
              	              								lv_memberCallArguments_23_0,
              	              								"org.eclipse.xtext.xbase.Xbase.XClosure");
              	              							afterParserOrEnumRuleCall();
              	              						
              	            }
  
              	            }
  
  
              	            }
              	            break;
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop324;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }