private @Nullable SoftReference<Int2IntMap> doGetLineMapping(boolean oldToNew) {
    if (myOldContent == null && ApplicationManager.getApplication().isDispatchThread()) return null;
    final byte[] oldContent;
    synchronized (myLock) {
      if (myOldContent == null) {
        byte[] byteContent = loadFromLocalHistory();

        if (byteContent == null && myFile.getTimeStamp() > myDate) {
          byteContent = loadFromVersionControl();
        }
        myOldContent = new SoftReference<>(byteContent);
      }
      oldContent = myOldContent.get();
    }

    if (oldContent == null) return new SoftReference<>(null);
    String[] historyLines = getLinesFromBytes(oldContent);
    String[] currentLines = getUpToDateLines();

    String[] oldLines = oldToNew ? historyLines : currentLines;
    String[] newLines = oldToNew ? currentLines : historyLines;

    Diff.Change change;
    try {
      change = Diff.buildChanges(oldLines, newLines);
    }
    catch (FilesTooBigForDiffException e) {
      LOG.info(e);
      return new SoftReference<>(null);
    }
    return new SoftReference<>(buildMapping(change, oldLines.length));
  }
private @Nullable SoftReference<Int2IntMap> doGetLineMapping(boolean oldToNew)