anchor.diff:  part of cocos;
   
   abstract class GameNode {
  +  vec2 position = new vec2(0, 0);
     vec2 positionAnchor = new vec2(0.5, 0.5);
     vec2 rotationAnchor = new vec2(0.5, 0.5);
     vec2 scale = new vec2(1, 1);
  
positive.code:   num get width;
    num get height;
  
    vec2 _position = new vec2(0, 0);
    vec2 get position => _position;
    void set position(p) {
      if (p is List) {
        _position = new vec2(p[0], p[1]);
      } else {
        _position = p;
      }
    }
  
    transform(CanvasRenderingContext2D context) {
      context.globalAlpha = opacity;
      context.translate(position.x, position.y);
  
  
negative.code:     onFrameController.add(dt);
    }
  
    void add(node) {
      children.add(node);
      node.parent = this;
    }
    
    void addTo(node) {
      node.add(this);
      this.parent = node;
    }
  
    void remove(GameNode node) {
      children.removeRange(children.indexOf(node), 1);
      node.parent = null;
    }
    
    void removeFrom() {
      parent = null;
    }
  
    void runAction(Action action) {
      action.target = this;
      actions.add(action);
      action.start();
    }
  
    void stopActions() {
      for (var action in new List.from(actions)) {
        action.stop();
        actions.removeRange(actions.indexOf(action), 1);
  