def METHOD_NAME(select):
    """ Demultiplexes a wire of arbitrary bitwidth
    :param WireVector select: indicates which wire to set on
    :return (WireVector, ...): a tuple of wires corresponding to each demultiplexed wire
    """
    if len(select) == 1:
        return _demux_2(select)
    wires = METHOD_NAME(select[:-1])
    sel = select[-1]
    not_select = ~sel
    zero_wires = tuple(not_select & w for w in wires)
    one_wires = tuple(sel & w for w in wires)
    return zero_wires + one_wires