code: function _mergeContentsIntoChildren(children, contents) {
  
          // We keep track of the names we've seen among the current directory entries to make
          // it easy to spot the names that we *haven't* seen (in other words, files that have
          // been deleted).
          var keysSeen = [];
  
          children = children.withMutations(function (children) {
  
              // Loop through the directory entries
              contents.forEach(function (entry) {
                  keysSeen.push(entry.name);
  
                  var match = children.get(entry.name);
                  if (match) {
                      // Confirm that a name that used to represent a file and now represents a
                      // directory (or vice versa) isn't what we've encountered here. If we have
                      // hit this situation, pretend the current child of treeData doesn't exist
                      // so we can replace it.
                      var matchIsFile = isFile(match);
                      if (matchIsFile !== entry.isFile) {
                          match = undefined;
                      }
                  }
  
                  // We've got a new entry that we need to add.
                  if (!match) {
                      if (entry.isFile) {
                          children.set(entry.name, Immutable.Map());
                      } else {
                          children.set(entry.name, Immutable.Map({
                              children: null
                          }));
                      }
                  }
              });
  
              // Look at the list of names that we currently have in the treeData that no longer
              // appear in the directory and delete those.
              var currentEntries = children.keySeq().toJS(),
                  deletedEntries = _.difference(currentEntries, keysSeen);
  
              deletedEntries.forEach(function (name) {
                  children.delete(name);
              });
          });
          return children;
      }
docs: @private
  
  Takes an array of file system entries and merges them into the children map
  of a directory in the view model treeData.
  
  @param {Immutable.Map} children current children in the directory
  @param {Array.<FileSystemEntry>} contents FileSystemEntry objects currently in the directory
  @return {Immutable.Map} updated children