protected boolean hasIdRule(final CrossReference crossRef) {
   AbstractElement _terminal = crossRef.getTerminal();
   if ((_terminal instanceof RuleCall)) {
     AbstractElement _terminal_1 = crossRef.getTerminal();
     AbstractRule _rule = ((RuleCall) _terminal_1).getRule();
     final String ruleName = _rule.getName();
     boolean _or = false;
     boolean _or_1 = false;
     boolean _equals = Objects.equal(ruleName, "IdOrSuper");
     if (_equals) {
       _or_1 = true;
     } else {
       boolean _equals_1 = Objects.equal(ruleName, "ValidID");
       _or_1 = _equals_1;
     }
     if (_or_1) {
       _or = true;
     } else {
       boolean _equals_2 = Objects.equal(ruleName, "FeatureCallID");
       _or = _equals_2;
     }
     return _or;
   }
   return false;
 }
 protected String _toXtext(final CrossReference cr) {
   AbstractElement _terminal = cr.getTerminal();
   return this.toXtext(_terminal);
 }