def METHOD_NAME(array, value, axis=-1, *, highlevel=True, behavior=None):
    """
    Args:
        array: Array-like data (anything #ak.to_layout recognizes).
        value: Data with which to replace None.
        axis (None or int): If None, replace all None values in the array
            with the given value; if an int, The dimension at which this
            operation is applied. The outermost dimension is `0`, followed
            by `1`, etc., and negative values count backward from the
            innermost: `-1` is the innermost  dimension, `-2` is the next
            level up, etc.
        highlevel (bool): If True, return an #ak.Array; otherwise, return
            a low-level #ak.contents.Content subclass.
        behavior (None or dict): Custom #ak.behavior for the output array, if
            high-level.
    Replaces missing values (None) with a given `value`.
    For example, in the following
        >>> array = ak.Array([[1.1, None, 2.2], [], [None, 3.3, 4.4]])
    The None values could be replaced with `0` by
        >>> ak.fill_none(array, 0)
        <Array [[1.1, 0, 2.2], [], [0, 3.3, 4.4]] type='3 * var * float64'>
    The replacement value doesn't strictly need the same type as the
    surrounding data. For example, the None values could also be replaced
    by a string.
        >>> ak.fill_none(array, "hi")
        <Array [[1.1, 'hi', 2.2], [], ['hi', ...]] type='3 * var * union[float64, s...'>
    The list content now has a union type:
        >>> ak.fill_none(array, "hi").type.show()
        3 * var * union[
            float64,
            string
        ]
    The values could be floating-point numbers or strings.
    """
    # Dispatch
    yield array, value
    # Implementation
    return _impl(array, value, axis, highlevel, behavior)