def METHOD_NAME(
    self,
    *,
    context: cirq.DecompositionContext,
    **quregs: NDArray[cirq.Qid],  # type:ignore[type-var]
) -> cirq.OP_TREE:
    selection, less_than_equal = quregs['selection'], quregs['less_than_equal']
    sigma_mu, alt, keep = quregs['sigma_mu'], quregs['alt'], quregs['keep']
    N = self.selection_registers[0].iteration_length
    yield prepare_uniform_superposition.PrepareUniformSuperposition(N).on(*selection)
    yield cirq.H.on_each(*sigma_mu)
    qrom_gate = qrom.QROM(
        [self.alt, self.keep],
        (self.selection_bitsize,),
        (self.alternates_bitsize, self.keep_bitsize),
    )
    yield qrom_gate.on_registers(selection=selection, target0=alt, target1=keep)
    yield arithmetic_gates.LessThanEqualGate(self.mu, self.mu).on(
        *keep, *sigma_mu, *less_than_equal
    )
    yield swap_network.MultiTargetCSwap.make_on(
        control=less_than_equal, target_x=alt, target_y=selection
    )