public static void showDiffForChange(@Nullable Project project,
                                       @NotNull ListSelection<? extends Change> changes,
                                       @NotNull ShowDiffContext context) {
    ListSelection<ChangeDiffRequestProducer> presentables =
      changes.map(change -> ChangeDiffRequestProducer.create(project, change, context.getChangeContext(change)));
    if (presentables.isEmpty()) return;

    DiffRequestChain chain = new ChangeDiffRequestChain(presentables);

    for (Map.Entry<Key<?>, Object> entry : context.getChainContext().entrySet()) {
      //noinspection unchecked,rawtypes
      chain.putUserData((Key)entry.getKey(), entry.getValue());
    }
    chain.putUserData(DiffUserDataKeys.CONTEXT_ACTIONS, context.getActions());

    DiffManager.getInstance().showDiff(project, chain, context.getDialogHints());
  }
public static void showDiffForChange(@Nullable Project project,
                                       @NotNull ListSelection<? extends Change> changes,
                                       @NotNull ShowDiffContext context)