anchor.diff:    else {
       // it must be dynamic
       map[keyModule] = "\$";
  -    map[keyName] = isCovariant ? "Anything" : "Nothing";
  +    // Use "Anything" for both returns and parameters. The other idea was to use
  +    // "Nothing" for returns, which would be indicated by !isCovariant
  +    map[keyName] = isCovariant ? "Anything" : "Anything";
       map[keyPackage] = "\$";
     }
     return map;
  
positive.code:         && MirrorSystem.getName(t.owner.qualifiedName) != "dart._internal";
      })
      // - don't erase in typeToMap...
      // - contravariant (i.e. dynamic=Nothing) type arguments for satisfied
      //   types! The assumption is that most type parameters are covariant,
      //   i.e. producers, and we use Nothing for return types.
      .map((m) => typeToMap(m, from, false, false, false)).toList();
  
    // print("satisfies (i): " + map[keySatisfies].toString());
  
negative.code:       map[keyType] = typeToMap(pt.returnType, from, false, false, true);
        map[keyMetatype] = metatypeParameter;
        map[keyName] = MirrorSystem.getName(pm.simpleName);
        // TODO these param types should be contravariant (i.e. Nothing, if we were
        //      still doing that)...
        List plist = parametersToList(pt.parameters, from);
        if (plist.isNotEmpty) {
          map[keyParams] = [plist];
  