code: public synchronized void update(final TargetInfo linkTarget) {
      final File outputFile = linkTarget.getOutput();
      final String outputName = outputFile.getName();
      //
      // if output file doesn't exist or predates the start of the
      // compile or link step (most likely a compilation error) then
      // do not write add a history entry
      //
      if (outputFile.exists() && !CUtil.isSignificantlyBefore(outputFile.lastModified(), this.historyFile.lastModified())) {
        this.dirty = true;
        this.history.remove(outputName);
        final SourceHistory[] sourceHistories = linkTarget.getSourceHistories(this.outputDirPath);
        final TargetHistory newHistory = new TargetHistory(linkTarget.getConfiguration().getIdentifier(), outputName,
            outputFile.lastModified(), sourceHistories);
        this.history.put(outputName, newHistory);
      }
    }
docs: FREEHEP added synchronized