def METHOD_NAME(V: typing.Union[dolfinx.fem.FunctionSpace, typing.Iterable[dolfinx.fem.FunctionSpace]],
                            marker: typing.Callable) -> np.ndarray:
    """Locate degrees-of-freedom geometrically using a marker function.
    Args:
        V: Function space(s) in which to search for degree-of-freedom indices.
        marker: A function that takes an array of points ``x`` with shape
            ``(gdim, num_points)`` and returns an array of booleans of
            length ``num_points``, evaluating to ``True`` for entities whose
            degree-of-freedom should be returned.
    Returns:
        An array of degree-of-freedom indices (local to the process)
        for degrees-of-freedom whose coordinate evaluates to True for the
        marker function.
        If ``V`` is a list of two function spaces, then a 2-D array of
        shape (number of dofs, 2) is returned.
        Returned degree-of-freedom indices are unique and ordered by the
        first column.
    """
    try:
        return _cpp.fem.METHOD_NAME(V._cpp_object, marker)  # type: ignore
    except AttributeError:
        _V = [space._cpp_object for space in V]
        return _cpp.fem.METHOD_NAME(_V, marker)