docs: def _ite(test: str, in1: str, in0: str, output: str = None):
      r"test -> in1 /\ ~test -> in0"
      assert len({test, in0, in1}) == 3
  
      true_out = bit_flipper([test]) >> or_gate([test, in1], 'true_out')
      false_out = or_gate([test, in0], 'false_out')
      return (true_out | false_out) >> and_gate(['true_out', 'false_out'],
                                                output)