private static boolean matchContainer(@Nullable PyCallableParameter container, @NotNull List<? extends PyExpression> arguments,
                                        @NotNull GenericSubstitutions substitutions, @NotNull TypeEvalContext context) {
    if (container == null) {
      return true;
    }
    final List<PyType> actualArgumentTypes = ContainerUtil.map(arguments, context::getType);
    final PyType expectedArgumentType = container.getArgumentType(context);
    if (container.isPositionalContainer() && expectedArgumentType instanceof PyVariadicType variadicType) {
      return match(variadicType, PyUnpackedTupleTypeImpl.create(actualArgumentTypes),
                   new MatchContext(context, substitutions, false));
    }
    return match(expectedArgumentType, PyUnionType.union(actualArgumentTypes), context, substitutions);
  }
private static boolean matchContainer(@Nullable PyCallableParameter container, @NotNull List<? extends PyExpression> arguments,
                                        @NotNull GenericSubstitutions substitutions, @NotNull TypeEvalContext context)