private @NotNull List<PySmartStepIntoVariant> removePossiblyUnreachableVariants(@NotNull Document document, int line,
                                                                                  @NotNull List<Pair<String, Boolean>> variantsFromPython,
                                                                                  @NotNull PySmartStepIntoContext context) {
    PsiElement expression = findSmartStepIntoBaseExpression(document, line);
    if (expression == null) return Collections.emptyList();

    List<PySmartStepIntoVariant> result = new ArrayList<>();

    // We are going to filter the variants that PyCharm cannot resolve to be sure we don't suggest stepping into a native function.
    expression.accept(new PySmartStepIntoVariantVisitor(result, variantsFromPython, context));

    return result;
  }
private @NotNull List<PySmartStepIntoVariant> removePossiblyUnreachableVariants(@NotNull Document document, int line,
                                                                                  @NotNull List<Pair<String, Boolean>> variantsFromPython,
                                                                                  @NotNull PySmartStepIntoContext context)