anchor.diff:            }
           });
     }
  +  
  +  void _updateNumberOfType() {
  +    numberOfType=_numberOfType();
  +  }
  +  
     int _numberOfType() {
       int ret=0;
       if (p!=null) {
  -      print("----------------------");
  -      print(" "+root.toString()+" in "+p.toString());
  +      //print("----------------------");
  +      //print(" "+root.toString()+" in "+p.toString());
         for (EdNode n in p.nodes) {
           //print(" "+n.runtimeType.toString()+"?"+root.runtimeType.toString());
           if (identical(n, root)) {
  
positive.code:   @observable int numberOfType=-1;
    
    RenderNodes.created() : super.created();
    
    void attached() {
      changes.listen((List<ChangeRecord> changes) {
        print("-----------------------");
  
negative.code:             if (c is PropertyChangeRecord) {
                if (c.name==new Symbol('root') || c.name==new Symbol('p')) {
                  //print("Change calc numberOfType");
                  _updateNumberOfType();
                } else {
                  print("Skip Change(wrong prop) "+c.toString());
                }
  