public static List<Pair<PyCallExpression, PyCallableType>> findCallCandidates(PyArgumentList argumentList) {
    if (argumentList != null) {
      final PyCallExpression call = argumentList.getCallExpression();
      if (call != null) {
        final TypeEvalContext typeEvalContext = TypeEvalContext.userInitiated(argumentList.getProject(), argumentList.getContainingFile());
        final PyResolveContext resolveContext = PyResolveContext.defaultContext(typeEvalContext).withRemote();

        return call.multiResolveCallee(resolveContext)
          .stream()
          .filter(callableType -> callableType.getParameters(typeEvalContext) != null)
          .map(callableType -> Pair.createNonNull(call, callableType))
          .collect(Collectors.toList());
      }
    }
    return null;
  }
public static List<Pair<PyCallExpression, PyCallableType>> findCallCandidates(PyArgumentList argumentList)