anchor.diff:  }
   
   class SetDataAttr extends AttrCore{
  +    var key;
   
       SetDataAttr(){
         this.meta('id','SetDataAttr');
   
  -      this.makePort('in:set');
  -      this.makePort('out:val');
  -
  -      this.port('in:set').forceCondition(Elements.elementExist(this.elem));
  -      this.port('in:set').forceCondition(Valids.isString);
  -
  -      this.port('in:set').tap((n){
  -          
  +      this.makePort('in:key');
  +      this.makePort('in:val');
  +
  +      this.port('in:val').forceCondition(Elements.elementExist(this.elem));
  +      this.port('in:key').forceCondition(Valids.isString);
  +
  +      this.port('in:key').tap((n){
  +        this.key = key;
  +      });
  +
  +      this.port('in:val').tap((n){
  +        this.elem.setAttribute(this.key,n.data);
         });
   
       }
  
positive.code:     static create() => new SetAttr();
  
      SetAttr(){
        this.meta('id','SetAttr');
  
        this.makePort('in:set');
        this.makePort('in:attr');
  
        this.port('in:set').forceCondition((n){ return Valids.exist(this.elem); });
        this.port('in:set').forceCondition(Valids.isString);
  
        this.port('in:set').tap((n){
          var parts = Enums.nthFor(n.data.split(':'));
          this.elem.setAttribute(parts(0),parts(1));
        });
  
      }
  
  }
  
negative.code: 
        this.makePort('in:class');
        
        this.port('in:val').forceCondition(Elements.elementExist(this.elem));
        this.port('in:val').forceCondition(Valids.isString);
        this.port('in:val').tap((n){
          this.elem.classes.add(n.data);
  