anchor.diff:  
   
       list.onDragStart.listen((MouseEvent ev){
  -      var target = ev.target;
  -      if(!list.children.contains(target) || !(target is LIElement)){
  +      var target = _getTargetFromEvent(ev);
  +      if(target == null){
           return;
         }
  +
         LIElement li = target;
         ev.dataTransfer..setData("Text", li.hashCode.toString())
                        ..effectAllowed = "move";
  
positive.code:     });
  
      list.onDragEnd.listen((MouseEvent ev){
        var target = ev.target;
        if(!list.children.contains(target) || !(target is LIElement)){
          return;
        }
        LIElement li = target;
        _dragging_li = null;
        li.classes.remove("dragging");
  
negative.code: 
  
      list.onDrop.listen((MouseEvent ev){
        var li = _getTargetFromEvent(ev);
        if(li == null ||  _currently_expanded == null){
          return;
        }
  
        if(li == _dragging_li || _dragging_li.nextElementSibling == li || _dragging_li.previousElementSibling == li){
          return;
        }
  