anchor.diff:        });
         reader.readAsArrayBuffer(file);
       }
  +    
  +    //wait and listen for all files to be available after calling destinationFolder.createNewFile(...)
  +    new Timer.periodic(const Duration(milliseconds: 100),  (Timer t) {
  +      List<String> existing_nuids = new List<String>();
  +      Iterable<Resource> child_files = destinationFolder.getChildren().where((Resource e) => e.isFile);
  +      for(Resource child_file in child_files) {
  +        existing_nuids.add(child_file.uuid);
  +      }
  +      
  +      bool ready = true;
  +      new_selection.forEach((String nuid) {
  +        if(!existing_nuids.contains(nuid)) {
  +          ready = false;
  +        }
  +      });
  +      
  +      if(ready) {
  +        setSelection(new_selection);
  +        t.cancel();
  +      }
  +    });
     }
     
     bool _isDifferentProject(List<String> nodesUIDs, String targetNodeUID) {
  
positive.code:      });
      return resources;
    }
  
    ListViewCell treeViewCellForNode(TreeView view, String nodeUID) {
      Resource resource = _filesMap[nodeUID];
  
negative.code:   
    void treeViewDrop(TreeView view, String nodeUID, html.DataTransfer dataTransfer) {
      Folder destinationFolder = _filesMap[nodeUID] as Folder;
      List<String> new_selection = new List<String>();
      
      for(html.File file in dataTransfer.files) {
        new_selection.add("${nodeUID}/${file.name}");
        html.FileReader reader = new html.FileReader();
        reader.onLoadEnd.listen((html.ProgressEvent event) {
          destinationFolder.createNewFile(file.name).then((File file) {
  