@Nullable
  public static I18nQuickFixHandler<?> getHandler(@NotNull Editor editor, @NotNull PsiFile psiFile) {
    TextRange range = JavaI18nUtil.getSelectedRange(editor, psiFile);
    if (range == null) return null;

    final UInjectionHost literalExpression = getEnclosingStringLiteral(psiFile, editor);
    NlsInfo.Localized localized = NlsInfo.localized();
    if (literalExpression != null) {
      NlsInfo info = NlsInfo.forExpression(literalExpression);
      if (info instanceof NlsInfo.Localized) {
        localized = (NlsInfo.Localized)info;
      }
    }
    PsiElement element = psiFile.findElementAt(editor.getCaretModel().getOffset());
    if (I18nizeConcatenationQuickFix.getEnclosingLiteralConcatenation(element) != null) {
      return new I18nizeConcatenationQuickFix(localized);
    }
    else if (Optional.ofNullable(literalExpression).map(UastUtils::getTextRange).map(it -> it.contains(range)).orElse(false)) {
      return new I18nizeQuickFix(localized);
    }

    for (I18nizeHandlerProvider handlerProvider : I18nizeHandlerProvider.EP_NAME.getExtensions()) {
      I18nQuickFixHandler<?> handler = handlerProvider.getHandler(psiFile, editor, range);
      if (handler != null) {
        return handler;
      }
    }

    return null;
  }
@Nullable
  public static I18nQuickFixHandler<?> getHandler(@NotNull Editor editor, @NotNull PsiFile psiFile)