anchor.diff:    static String _canonicalRecipeOfAny() =>
         Recipe.pushAnyExtensionString + Recipe.extensionOpString;
   
  +  static String _canonicalRecipeOfStar(Rti baseType) =>
  +      Rti._getCanonicalRecipe(baseType) + Recipe.wrapStarString;
  +  static String _canonicalRecipeOfQuestion(Rti baseType) =>
  +      Rti._getCanonicalRecipe(baseType) + Recipe.wrapQuestionString;
     static String _canonicalRecipeOfFutureOr(Rti baseType) =>
         Rti._getCanonicalRecipe(baseType) + Recipe.wrapFutureOrString;
   
  
positive.code:             handleExtendedOperations(parser, stack);
              break;
  
            case Recipe.wrapFutureOr:
              Object u = universe(parser);
              push(
  
negative.code:     return _finishRti(universe, rti);
    }
  
    static Rti _lookupStarRti(universe, Rti baseType) => _lookupUnaryRti(
        universe, Rti.kindStar, baseType, _canonicalRecipeOfStar(baseType));
  
    static Rti _lookupQuestionRti(universe, Rti baseType) => _lookupUnaryRti(
        universe,
        Rti.kindQuestion,
        baseType,
        _canonicalRecipeOfQuestion(baseType));
  
    static Rti _lookupFutureOrRti(universe, Rti baseType) => _lookupUnaryRti(
        universe,
        Rti.kindFutureOr,
        baseType,
        _canonicalRecipeOfFutureOr(baseType));
  
    static Rti _lookupUnaryRti(
        universe, int kind, Rti baseType, String canonicalRecipe) {
      var cache = evalCache(universe);
      var probe = _cacheGet(cache, canonicalRecipe);
      if (probe != null) return _castToRti(probe);
      return _createUnaryRti(universe, kind, baseType, canonicalRecipe);
    }
  
    static Rti _createUnaryRti(
        universe, int kind, Rti baseType, String canonicalRecipe) {
      Rti rti = Rti.allocate();
      Rti._setKind(rti, kind);
      Rti._setPrimary(rti, baseType);
      Rti._setCanonicalRecipe(rti, canonicalRecipe);
      return _finishRti(universe, rti);
  