docs: public final EObject ruleXPostfixOperation() throws RecognitionException {
          EObject current = null;
  
          EObject this_XMemberFeatureCall_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalSARL.g:13159:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
              // InternalSARL.g:13160:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
              {
              // InternalSARL.g:13160:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
              // InternalSARL.g:13161:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
              {
              if ( state.backtracking==0 ) {
  
                			newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0());
                		
              }
              pushFollow(FOLLOW_124);
              this_XMemberFeatureCall_0=ruleXMemberFeatureCall();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			current = this_XMemberFeatureCall_0;
                			afterParserOrEnumRuleCall();
                		
              }
              // InternalSARL.g:13169:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
              int alt314=2;
              int LA314_0 = input.LA(1);
  
              if ( (LA314_0==125) ) {
                  int LA314_1 = input.LA(2);
  
                  if ( (synpred40_InternalSARL()) ) {
                      alt314=1;
                  }
              }
              else if ( (LA314_0==126) ) {
                  int LA314_2 = input.LA(2);
  
                  if ( (synpred40_InternalSARL()) ) {
                      alt314=1;
                  }
              }
              switch (alt314) {
                  case 1 :
                      // InternalSARL.g:13170:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
                      {
                      // InternalSARL.g:13180:4: ( () ( ( ruleOpPostfix ) ) )
                      // InternalSARL.g:13181:5: () ( ( ruleOpPostfix ) )
                      {
                      // InternalSARL.g:13181:5: ()
                      // InternalSARL.g:13182:6: 
                      {
                      if ( state.backtracking==0 ) {
  
                        						current = forceCreateModelElementAndSet(
                        							grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
                        							current);
                        					
                      }
  
                      }
  
                      // InternalSARL.g:13188:5: ( ( ruleOpPostfix ) )
                      // InternalSARL.g:13189:6: ( ruleOpPostfix )
                      {
                      // InternalSARL.g:13189:6: ( ruleOpPostfix )
                      // InternalSARL.g:13190:7: ruleOpPostfix
                      {
                      if ( state.backtracking==0 ) {
  
                        							if (current==null) {
                        								current = createModelElement(grammarAccess.getXPostfixOperationRule());
                        							}
                        						
                      }
                      if ( state.backtracking==0 ) {
  
                        							newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0());
                        						
                      }
                      pushFollow(FOLLOW_2);
                      ruleOpPostfix();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        							afterParserOrEnumRuleCall();
                        						
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }