anchor.diff:        });
       }
   
  -    bool isUpToDate(lastModified, dependencies) {
  -      if (lastModified == null) return false;
  -      for (var dependency in dependencies) {
  -        var dependencyLastModified =
  -          TestUtils.lastModifiedCache.getLastModified(dependency);
  -        if (dependencyLastModified == null ||
  -            dependencyLastModified.isAfter(lastModified)) {
  -          return false;
  -        }
  -      }
  -      return true;
  -    }
  -
       return readDepsFile("$_outputFile.deps").then((dependencies) {
         if (dependencies != null) {
           dependencies.addAll(_bootstrapDependencies);
  -        // We check if the cached output is up to date, if so we return true
  -        var cachedOutputFile = TestUtils.cachedOutputFile(_outputFile);
  -        var cachedOutputUri = new Uri(scheme: 'file', path: cachedOutputFile);
  -        var cachedOutputLastModified = 
  -            TestUtils.lastModifiedCache.getLastModified(cachedOutputUri);
  -        return isUpToDate(cachedOutputLastModified, dependencies);
  +        var jsOutputLastModified = TestUtils.lastModifiedCache.getLastModified(
  +            new Uri(scheme: 'file', path: _outputFile));
  +        if (jsOutputLastModified != null) {
  +          for (var dependency in dependencies) {
  +            var dependencyLastModified =
  +                TestUtils.lastModifiedCache.getLastModified(dependency);
  +            if (dependencyLastModified == null ||
  +                dependencyLastModified.isAfter(jsOutputLastModified)) {
  +              return false;
  +            }
  +          }
  +          return true;
  +        }
         }
         return false;
       });
  
positive.code:   String _outputFile;
    bool _neverSkipCompilation;
    List<Uri> _bootstrapDependencies;
  
    Future writeCachedOutput(CommandOutput output) {
      var file = new io.File(TestUtils.cachedOutputFile(_outputFile));
      return file.writeAsString(output.json)
        .catchError((error) { 
          DebugLogger.warning("Could not write cached output: $error");
          return null;
        });
    }
  
    Future<CommandOutput> get cachedOutput {
      var file = new io.File(TestUtils.cachedOutputFile(_outputFile));
      return file.exists().then((exists) {
        if (exists) return file.readAsString().then((content) {
          return new CompilationCommandOutputImpl.fromJson(this, content);
        });;
      });
    }
  
    CompilationCommand._(String displayName,
                         this._outputFile,
  
negative.code:   }
  
    void _runCommand() {
      command.outputIsUpToDate.then((bool isUpToDate) {
        if (isUpToDate) {
          compilationSkipped = true;
          _commandComplete(0);
        } else {
          var processEnvironment = _createProcessEnvironment();
          Future processFuture =
  