code: private boolean isStale() {
      long lastRun = outputFile.lastModified();
      long sourcesLastModified = Math.max(
          getLastModifiedTime(this.sourceFileLists),
          getLastModifiedTime(this.sourcePaths));
      long externsLastModified = getLastModifiedTime(this.externFileLists);
  
      return lastRun <= sourcesLastModified || lastRun <= externsLastModified;
    }
docs: Determine if compilation must actually happen, i.e. if any input file
  (extern or source) has changed after the outputFile was last modified.
  
  @return true if compilation should happen