code: function(inDir) {
      var file, entry;
      var ids = Object.keys(this.cache);
      var cache = this.cache;
      var cacheValid = true;
  
      for (var i=0; i<ids.length; i++) {
        entry = cache[ids[i]];
        if (!entry.file) {
          console.log(JSON.stringify(entry, null, 2));
        }
        if (entry.file.slice(0,1) === '.') {
          file = path.join(inDir, entry.file);
        } else {
          file = entry.file;
        }
        if (hashFile(file) !== entry.hash) {
          delete cache[entry.id];
          cacheValid = false;
        }
      }
      return RSVP.resolve(cacheValid);
    }
docs: Due to the way CJS dependencies work, the appearance of a new file in our input trees doesn't invalidate our cache -- because unless one of the existing files changes, nobody depends on the new file.  Therefore we can iterate through only the files we already have in cache.