@NotNull
  private static List<PyCallable> multiResolveCalledFunction(@Nullable Object expression, @Nullable String functionName, int index) {
    if (!isCallArgument(expression, functionName, index)) {
      return Collections.emptyList();
    }

    final PyCallExpression call = (PyCallExpression)((PyExpression)expression).getParent().getParent();

    // TODO is it better or worse to allow implicits here?
    final var context = TypeEvalContext.codeAnalysis(call.getProject(), call.getContainingFile());

    return call.multiResolveCalleeFunction(PyResolveContext.defaultContext(context));
  }
@NotNull
  private static List<PyCallable> multiResolveCalledFunction(@Nullable Object expression, @Nullable String functionName, int index)