anchor.diff:        push(stack, _Universe._lookupInterfaceRti(universe, name, arguments));
       } else {
         Rti base = toType(universe, environment(parser), head);
  -      push(stack, _Universe._lookupBindingRti(universe, base, arguments));
  +      switch (Rti._getKind(base)) {
  +        case Rti.kindFunction:
  +          push(stack,
  +              _Universe._lookupGenericFunctionRti(universe, base, arguments));
  +          break;
  +
  +        default:
  +          push(stack, _Universe._lookupBindingRti(universe, base, arguments));
  +          break;
  +      }
       }
     }
   
  
positive.code:                 toType(universe(parser), environment(parser), pop(stack)));
              break;
  
            case Recipe.pushDynamic:
              push(stack, _Universe._lookupDynamicRti(universe(parser)));
              break;
  
negative.code:       return _castToRti(_Utils.arrayAt(typeArguments, index - 1));
      }
      throw AssertionError('Bad index $index for $environment');
    }
  
    static Rti toGenericFunctionParameter(Object universe, Object item) {
      assert(_Utils.isNum(item));
      return _Universe._lookupGenericFunctionParameterRti(
          universe, _Utils.asInt(item));
    }
  }
  
  