docs: def transform_qubits(self: TSelf_Operation,
                           func: Callable[[Qid], Qid]) -> TSelf_Operation:
          """Returns the same operation, but with different qubits.
  
          Args:
              func: The function to use to turn each current qubit into a desired
                  new qubit.
  
          Returns:
              The receiving operation but with qubits transformed by the given
                  function.
          """
          return self.with_qubits(*(func(q) for q in self.qubits))