anchor.diff:  /**
    * Modify an existing component [c] of the entity.
    */
  -typedef void ModifyComponent<T>(T c);
  +typedef void ModifyComponent<T>(Entity e, T c);
   
   class ComponentModifier<T> {
     final ComponentType type;
  
positive.code:     if (current == next) {
        // nothing to do
      } else {
        if (current != null) {
          //TODO optimize the computation of component diff
          current.forEach((provider) {
            var np = next.getByType(provider.type);
            if (np == null || np.id() != provider.id()) {
              e.removeComponentByType(provider.type);
            }
          });
        }
  
negative.code:   //(see https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/tests/language/type_parameter_literal_test.dart)
    ComponentModifier(Type ctype, this.modifyComponent) : type = ComponentTypeManager.getTypeFor(ctype);
  
    void apply(Entity e) {
      var c = e.getComponent(type);
      //applyC(e, e.getComponent(type));
      if (c != null) modifyComponent(e, c);
    }
  }
  
  