def METHOD_NAME(wires, n_wires):  # pylint: disable=arguments-differ,unused-argument
    r"""Representation of the operator as a product of other operators (static method).
    .. math:: O = O_1 O_2 \dots O_n.
    .. seealso:: :meth:`~.QFT.decomposition`.
    Args:
        wires (Iterable, Wires): wires that the operator acts on
        n_wires (int): number of wires or ``len(wires)``
    Returns:
        list[Operator]: decomposition of the operator
    **Example:**
    >>> qml.QFT.compute_decomposition((0,1,2,4))
    [Toffoli(wires=[1, 2, 4]), CNOT(wires=[1, 2]), Toffoli(wires=[0, 2, 4])]
    """
    shifts = [2 * np.pi * 2**-i for i in range(2, n_wires + 1)]
    decomp_ops = []
    for i, wire in enumerate(wires):
        decomp_ops.append(qml.Hadamard(wire))
        for shift, control_wire in zip(shifts[: len(shifts) - i], wires[i + 1 :]):
            op = qml.ControlledPhaseShift(shift, wires=[control_wire, wire])
            decomp_ops.append(op)
    first_half_wires = wires[: n_wires // 2]
    last_half_wires = wires[-(n_wires // 2) :]
    for wire1, wire2 in zip(first_half_wires, reversed(last_half_wires)):
        swap = qml.SWAP(wires=[wire1, wire2])
        decomp_ops.append(swap)
    return decomp_ops