Return the state reachable from a given state for a particular gene.

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)