public static void copyToClipboard(@NotNull Editor editor,
                                     @NotNull DataContext dataContext,
                                     @NotNull TransferableProvider transferableProvider) {
    SelectionToCopy selectionToCopy = SelectionToCopy.fromDataContext(dataContext);
    if (selectionToCopy == null) {  // a genuine "Copy", not "Cut"
      selectionToCopy = prepareSelectionToCopy(editor);
      if (selectionToCopy == null) {
        return;
      }
      if (selectionToCopy.copyPasteOptions().isCopiedFromEmptySelection()) {
        FeatureUsageTracker.getInstance().triggerFeatureUsed("editing.copy.line");
      }
    }
    copyToClipboard(editor, transferableProvider, selectionToCopy);
  }
public static void copyToClipboard(@NotNull Editor editor,
                                     @NotNull DataContext dataContext,
                                     @NotNull TransferableProvider transferableProvider)