void beforeContentChange(@NotNull VFileContentChangeEvent event) {
    if (event.isFromSave()) return;

    VirtualFile file = event.getFile();
    if (!file.isValid() || hasConflict(file)) return;

    Document document = FileDocumentManager.getInstance().getCachedDocument(file);
    if (document == null || !FileDocumentManager.getInstance().isDocumentUnsaved(document)) return;

    long documentStamp = document.getModificationStamp();
    long oldFileStamp = event.getOldModificationStamp();
    if (documentStamp != oldFileStamp) {
      LOG.info("reload " + file.getName() + " from disk?");
      LOG.info("  documentStamp:" + documentStamp);
      LOG.info("  oldFileStamp:" + oldFileStamp);
      if (myConflicts.isEmpty()) {
        if (ApplicationManager.getApplication().isUnitTestMode()) {
          LOG.info("  fileStamp:" + event.getModificationStamp());
          LOG.info("  document content:" + document.getText());
          myConflictAppeared = new Throwable();
        }
        ApplicationManager.getApplication().invokeLater(() -> processConflicts());
      }
      myConflicts.add(file);
    }
  }
void beforeContentChange(@NotNull VFileContentChangeEvent event)