anchor.diff:      onFrameController.add(dt);
     }
   
  -  add(node) {
  +  void add(node) {
       children.add(node);
       node.parent = this;
     }
     
  -  addTo(node) {
  +  void addTo(node) {
       node.add(this);
       this.parent = node;
     }
   
  -  remove(GameNode node) {
  +  void remove(GameNode node) {
       children.removeRange(children.indexOf(node), 1);
       node.parent = null;
     }
  +  
  +  void removeFrom() {
  +    parent = null;
  +  }
   
  -  runAction(Action action) {
  +  void runAction(Action action) {
       action.target = this;
       actions.add(action);
       action.start();
     }
   
  -  stopActions() {
  +  void stopActions() {
       for (var action in new List.from(actions)) {
         action.stop();
         actions.removeRange(actions.indexOf(action), 1);
  
positive.code:     }
    }
  
    draw(context) {
    }
  
    update(dt) {
      for (var child in children) {
        child.update(dt);
      }
  
negative.code:     context.translate(-positionAnchor.x * width, -positionAnchor.y * height);
    }
  
    void drawWithTransform(context) {
        context.save();
        transform(context);
        draw(context);
        context.restore();
    }
  
    void drawWithChildren(context) {
      if (visible) {
        for (var child in children) {
          child.drawWithChildren(context);
  