def METHOD_NAME(
    self,
    num_controls: Optional[int] = None,
    control_values: Optional[
        Union[cirq.ops.AbstractControlValues, Sequence[Union[int, Collection[int]]]]
    ] = None,
    control_qid_shape: Optional[Tuple[int, ...]] = None,
) -> 'QubitizationWalkOperator':
    if num_controls is None:
        num_controls = 1
    if control_values is None:
        control_values = [1] * num_controls
    if (
        isinstance(control_values, Sequence)
        and isinstance(control_values[0], int)
        and len(control_values) == 1
        and self.control_val is None
    ):
        c_select = self.select.METHOD_NAME(control_values=control_values)
        assert isinstance(c_select, select_and_prepare.SelectOracle)
        return QubitizationWalkOperator(
            c_select, self.prepare, control_val=control_values[0], power=self.power
        )
    raise NotImplementedError(
        f'Cannot create a controlled version of {self} with control_values={control_values}.'
    )