@Override
  protected @Nullable Presentation getPresentation(@NotNull ActionContext context, @NotNull PsiSwitchBlock block) {
    if (block != PsiTreeUtil.getParentOfType(context.findLeaf(), PsiSwitchBlock.class, false, PsiCodeBlock.class, PsiStatement.class)) {
      return null;
    }
    PsiExpression expression = PsiUtil.skipParenthesizedExprDown(block.getExpression());
    if (expression == null) return null;
    PsiType type = expression.getType();
    if (type == null) return null;
    boolean isString = TypeUtils.isJavaLangString(type);
    if (type instanceof PsiClassType && !isString) {
      type = PsiPrimitiveType.getUnboxedType(type);
      if (type == null) return null;
    }

    List<Value> values = getPossibleValues(expression, type);
    if (values.isEmpty()) return null;
    List<Value> missingValues = getMissingValues(block, values);
    if (missingValues.isEmpty()) return null;
    myAllValues = values;
    return Presentation.of(CreateSwitchBranchesUtil.getActionName(ContainerUtil.map(missingValues, v -> v.myPresentationName)));
  }
@Override
  protected @Nullable Presentation getPresentation(@NotNull ActionContext context, @NotNull PsiSwitchBlock block)