@Override
  public @NotNull ModCommand perform(@NotNull Project project, @NotNull List<ProblemDescriptor> descriptors) {
    PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
    return ModCommand.psiUpdate(ActionContext.from(descriptors.get(0)), updater -> {
      List<PsiElement> writableElements = ContainerUtil.map(descriptors, d -> updater.getWritable(d.getStartElement()));
      MultiMap<PsiFile, PsiElement> groupedElements =
        ContainerUtil.groupBy(writableElements, element -> element.getContainingFile());
      for (Map.Entry<PsiFile, Collection<PsiElement>> entry : groupedElements.entrySet()) {
        PsiFile file = entry.getKey();
        for (PsiElement element : entry.getValue()) {
          if (element.isValid()) {
            replace(element, elementGenerator);
          }
        }
        AddImportHelper.addOrUpdateFromImportStatement(file,
                                                       "__future__",
                                                       "print_function",
                                                       null,
                                                       AddImportHelper.ImportPriority.FUTURE,
                                                       null);
      }
    });
  }
@Override
  public @NotNull ModCommand perform(@NotNull Project project, @NotNull List<ProblemDescriptor> descriptors)