def METHOD_NAME(
    *,
    ndim: Union[int, st.SearchStrategy, None] = None,
    sizes: Union[Dict[str, int], st.SearchStrategy, None] = None,
    unit: Union[str, Unit, st.SearchStrategy, None] = None,
    dtype: Union[str, DType, type, st.SearchStrategy, None] = None,
    with_variances: Union[bool, st.SearchStrategy, None] = None,
    elements: Union[int, float, st.SearchStrategy, None] = None,
    fill: Union[int, float, st.SearchStrategy, None] = None,
    unique: Union[bool, st.SearchStrategy, None] = None,
):
    if ndim is not None:
        if sizes is not None:
            raise InvalidArgument(
                'Arguments `ndim` and `sizes` cannot both be used. '
                f'Got {ndim=}, {sizes=}.'
            )
    if sizes is None:
        sizes = sizes_dicts(ndim)
    if unit is None:
        unit = units()
    if dtype is None:
        # TODO other dtypes?
        dtype = scalar_numeric_dtypes()
    if with_variances is None:
        with_variances = _ConditionallyWithVariances()
    return dict(
        sizes=sizes,
        unit=unit,
        dtype=dtype,
        with_variances=with_variances,
        elements=elements,
        fill=fill,
        unique=unique,
    )