def _decompose_(self, qubits: Sequence[cirq.Qid]) -> Iterator[cirq.OP_TREE]:
        """Decomposes the gate into a sequence of standard gates.
        Implements the construction from https://arxiv.org/pdf/2306.11747.
        """
        qreg = list(qubits)
        qreg.reverse()

        if self._m_value == 1:  #  if m_value is 1, do nothing
            return
        if (self._m_value & (self._m_value - 1)) == 0:  # if m_value is an integer power of 2
            m = self._m_value.bit_length() - 1
            yield H.on_each(qreg[:m])
            return
        k = self._m_value.bit_length()
        l_value = []
        for i in range(self._m_value.bit_length()):
            if (self._m_value >> i) & 1:
                l_value.append(i)  # Locations of '1's

        yield X.on_each(qreg[q_bit] for q_bit in l_value[1:k])
        m_current = 2 ** (l_value[0])
        theta = -2 * np.arccos(np.sqrt(m_current / self._m_value))
        if l_value[0] > 0:  # if m_value is even
            yield H.on_each(qreg[: l_value[0]])

        yield ry(theta).on(qreg[l_value[1]])

        for i in range(l_value[0], l_value[1]):
            yield H(qreg[i]).controlled_by(qreg[l_value[1]], control_values=[False])

        for m in range(1, len(l_value) - 1):
            theta = -2 * np.arccos(np.sqrt(2 ** l_value[m] / (self._m_value - m_current)))
            yield ry(theta).on(qreg[l_value[m + 1]]).controlled_by(
                qreg[l_value[m]], control_values=[0]
            )
            for i in range(l_value[m], l_value[m + 1]):
                yield H.on(qreg[i]).controlled_by(qreg[l_value[m + 1]], control_values=[0])

            m_current = m_current + 2 ** (l_value[m])
Decomposes the gate into a sequence of standard gates.
        Implements the construction from https://arxiv.org/pdf/2306.11747.
        
cirq-core/cirq/ops/uniform_superposition_gate.py