def diffusion_operator(self):
        """Creates the diffusion operator I - 2|0><0| which reflects about the initial state
        with all qubits in |0>.
        """
        qubits = [self.ancilla] + self.register + [self.memory]
        c = cirq.Circuit()
        c.append(cirq.X.on_each(qubits))
        c.append(cirq.ControlledGate(cirq.Z, num_controls=self.register_size + 1).on(*qubits))
        c.append(cirq.X.on_each(qubits))
        return c
Creates the diffusion operator I - 2|0><0| which reflects about the initial state
        with all qubits in |0>.
        
examples/hhl.py