code: public final AntlrDatatypeRuleToken ruleFeatureCallID() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          AntlrDatatypeRuleToken this_ValidID_0 = null;
  
  
  
          	enterRule();
  
          try {
              // InternalPureXbase.g:187:2: (this_ValidID_0= ruleValidID )
              // InternalPureXbase.g:188:2: this_ValidID_0= ruleValidID
              {
              if ( state.backtracking==0 ) {
  
                		newCompositeNode(grammarAccess.getFeatureCallIDAccess().getValidIDParserRuleCall());
                	
              }
              pushFollow(FOLLOW_2);
              this_ValidID_0=ruleValidID();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                		current.merge(this_ValidID_0);
                	
              }
              if ( state.backtracking==0 ) {
  
                		afterParserOrEnumRuleCall();
                	
              }
  
              }
  
              if ( state.backtracking==0 ) {
  
                	leaveRule();
  
              }
          }
  
              catch (RecognitionException re) {
                  recover(input,re);
                  appendSkippedTokens();
              }
          finally {
          }
          return current;
      }
docs: InternalPureXbase.g:181:1: ruleFeatureCallID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ValidID_0= ruleValidID ;