code: def conditional_gate(control: Qubit, gate0: Gate, gate1: Gate) -> Gate:
      
      assert gate0.qubits == gate1.qubits  # FIXME
  
      tensor = join_gates(P0(control), gate0).tensor
      tensor += join_gates(P1(control), gate1).tensor
      gate = Gate(tensor=tensor, qubits=[control, *gate0.qubits])
      return gate
docs: Return a conditional unitary gate. Do gate0 on bit 1 if bit 0 is zero,
      else do gate1 on 1