@Override
    public @NotNull DiffRequest process(@NotNull UserDataHolder context,
                                        @NotNull ProgressIndicator indicator) throws DiffRequestProducerException {
      final ContentRevision contentRevision = getContentRevision();
      if (contentRevision == null) {
        throw new DiffRequestProducerException(VcsBundle.message("diff.producer.error.cant.get.revision.content"));
      }

      try {
        DiffContent content1 = createRemote(contentRevision);
        DiffContent content2 = DiffContentFactory.getInstance().create(myProject, mySelectedFile);

        String title = DiffRequestFactory.getInstance().getTitle(mySelectedFile);
        VcsRevisionNumber revisionNumber = contentRevision.getRevisionNumber();

        boolean inverted = false;
        String title1;
        String title2;
        final FileStatus status = ChangeListManager.getInstance(myProject).getStatus(mySelectedFile);
        boolean noLocalChanges = FileStatus.NOT_CHANGED.equals(status) ||
                                 FileStatus.UNKNOWN.equals(status) ||
                                 FileStatus.IGNORED.equals(status);
        final VcsRevisionNumber currentRevision = noLocalChanges ? myDiffProvider.getCurrentRevision(mySelectedFile) : null;
        if (currentRevision != null) {
          inverted = revisionNumber.compareTo(currentRevision) > 0;
          title1 = revisionNumber.asString();
          title2 = VcsBundle.message("diff.title.local.with.number", currentRevision.asString());
        }
        else {
          title1 = revisionNumber.asString();
          title2 = VcsBundle.message("diff.title.local");
        }

        if (inverted) {
          SimpleDiffRequest request = new SimpleDiffRequest(title, content2, content1, title2, title1);
          if (mySelectedLine != null) request.putUserData(DiffUserDataKeys.SCROLL_TO_LINE, Pair.create(Side.LEFT, mySelectedLine));
          request.putUserData(DiffUserDataKeys.MASTER_SIDE, Side.LEFT);
          return request;
        }
        else {
          SimpleDiffRequest request = new SimpleDiffRequest(title, content1, content2, title1, title2);
          if (mySelectedLine != null) request.putUserData(DiffUserDataKeys.SCROLL_TO_LINE, Pair.create(Side.RIGHT, mySelectedLine));
          request.putUserData(DiffUserDataKeys.MASTER_SIDE, Side.RIGHT);
          return request;
        }
      }
      catch (VcsException | IOException e) {
        throw new DiffRequestProducerException(e);
      }
    }
@Override
    public @NotNull DiffRequest process(@NotNull UserDataHolder context,
                                        @NotNull ProgressIndicator indicator)