docs: def available_state_for_gene(self, gene: Gene, state: State) -> Tuple[State, ...]:
          """ Return the state reachable from a given state for a particular gene. """
          result: List[State] = []
          active_multiplex: Tuple[Multiplex] = gene.active_multiplex(state)
          transition: Transition = self.find_transition(gene, active_multiplex)
          current_state: int = state[gene]
          done = set()
          for target_state in transition.states:
              target_state: int = self._state_after_transition(current_state, target_state)
              if target_state not in done:
                  done.add(target_state)
                  new_state: State = state.copy()
                  new_state[gene] = target_state
                  result.append(new_state)
          return tuple(result)