anchor.diff:      });
     }
   
  +  static FileStatus createForDirectory(chrome.Entry entry) {
  +    FileStatus status = new FileStatus();
  +    status.path = entry.fullPath;
  +    return status;
  +  }
  +
     FileStatus.fromMap(Map m) {
       path = m['path'];
       headSha = m['headSha'];
  
positive.code:    * Walks over all the files in the working tree. Returns sha of the
     * working tree.
     */
     Future<List<String>> walkFilesAndUpdateIndex(chrome.DirectoryEntry root,
         bool updateSha) {
       List<String> filePaths = [];
       return FileOps.listFiles(root).then((List<chrome.ChromeFileEntry> entries) {
         if (entries.isEmpty) {
           return filePaths;
         }
  
         return Future.forEach(entries, (chrome.Entry entry) {
           if (entry.name == '.git') {
             return filePaths;
           }
  
           if (entry.isDirectory) {
             return walkFilesAndUpdateIndex(entry, updateSha).then(
                 (List<String> paths) {
               filePaths.addAll(paths);
               return filePaths;
             });
           } else {
             // don't update index for untracked files.
             if (_statusIdx[entry.fullPath] != null) {
               filePaths.add(entry.fullPath);
               if (updateSha) {
                 return getShaForEntry(entry, 'blob').then((String sha) {
                   return entry.getMetadata().then((data) {
  
negative.code: 
    Future updateIndex([bool updateSha=true]) {
      return walkFilesAndUpdateIndex(_store.root, updateSha).then(
          (List<FileStatus> statuses) {
        _updateDeletedFiles(statuses);
        return new Future.value();
      });
    }
  