anchor.diff:     * determine the context directories.
      */
     void setRoots(List<String> includedPaths, List<String> excludedPaths) {
  +    List<Folder> contextFolders = _contexts.keys.toList();
       // included
       Set<Folder> includedFolders = new HashSet<Folder>();
       for (int i = 0; i < includedPaths.length; i++) {
  
positive.code:       throw new UnimplementedError('Excluded paths are not supported yet');
      }
      Set<Folder> excludedFolders = new HashSet<Folder>();
      // diff
      Set<Folder> currentFolders = _contexts.keys.toSet();
      Set<Folder> newFolders = new HashSet<Folder>();
      Set<Folder> oldFolders = new HashSet<Folder>();
      for (Folder currentFolder in currentFolders) {
        bool isIncluded = includedFolders.any((folder) {
          return folder.contains(currentFolder.path);
        });
        if (!isIncluded) {
          oldFolders.add(currentFolder);
        }
      }
      for (Folder includedFolder in includedFolders) {
        bool wasIncluded = currentFolders.any((folder) {
          return folder.contains(includedFolder.path);
        });
        if (!wasIncluded) {
          newFolders.add(includedFolder);
        }
      }
      // destroy old contexts
      for (Folder folder in oldFolders) {
        _destroyContext(folder);
      }
      // create new contexts
      for (Folder folder in newFolders) {
        _createContexts(folder, false);
      }
    }
  
  
negative.code:     if (parentInfo != null) {
        parentInfo.children.remove(info);
        ChangeSet changeSet = new ChangeSet();
        info.sources.forEach((path, source) {
          parentInfo.sources[path] = source;
          changeSet.addedSource(source);
        });
        applyChangesToContext(parentInfo.folder, changeSet);
      }
    }
  