anchor.diff:          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.applyE(e);
  +        modifier.apply(e);
         });
  -      e.changedInWorld();
  +      if (addOrRemove) e.changedInWorld();
       }
     }
   }
  
positive.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 applyE(Entity e) {
      var c = e.getComponent(type);
      applyC(e.getComponent(type));
    }
    void applyC(T c) {
      if (c != null) modifyComponent(c);
    }
  }
  
  
negative.code:     if (current == next) {
        // nothing to do
      } else {
        var addOrRemove = false;
        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);
              addOrRemove = true;
            }
          });
        }
  