anchor.diff:    //(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 applyE(Entity e) {
  +  void apply(Entity e) {
       var c = e.getComponent(type);
  -    applyC(e.getComponent(type));
  -  }
  -  void applyC(T c) {
  -    if (c != null) modifyComponent(c);
  +    //applyC(e, e.getComponent(type));
  +    if (c != null) modifyComponent(e, c);
     }
   }
   
  
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:         var components = world.componentManager.getComponentsByType(provider.type);
          if (components == null || !components.isIndexWithinBounds(e.id) || components[e.id] == null) {
            e.addComponent(provider.createComponent(e));
            addOrRemove = true;
          }
        });
        next.modifiers.forEach((modifier){
          modifier.apply(e);
        });
        if (addOrRemove) e.changedInWorld();
      }
    }
  }
  