anchor.diff:      });
     }
   
  -  Future selectFolder() {
  +  /**
  +   * Allows a user to select a folder on disk. Returns the selected folder
  +   * entry. Returns null in case the user cancels the action.
  +   */
  +  Future<chrome.ChromeFileEntry> selectFolder() {
       Completer completer = new Completer();
       chrome.ChooseEntryOptions options = new chrome.ChooseEntryOptions(
           type: chrome.ChooseEntryType.OPEN_DIRECTORY);
  
positive.code:   _GitCloneJob(this.url, this.cloneDir, this.spark)
        : super("Cloning …") {
      projectName = url.split('/').last;
      if (!url.endsWith('.git'))
        url = url + '.git';
    }
  
    Future<Job> run(ProgressMonitor monitor) {
  
negative.code:   void _invoke([Object context]) {
      _dialog.element.querySelector("#selectCloneFolder").onClick.listen((_) {
        spark.selectFolder().then((entry) {
          if (entry != null) {
            chrome.fileSystem.getDisplayPath(entry).then((path) {
              _cloneDir = entry;
              path = path + spark.getPathSeparator()
                  + _repoUrlElement.value.split('/').last;
              (_dialog.element.querySelector("#cloneFolderPath")
                  as InputElement).value = path;
            });
          }
        });
      });
      _show();
  