def available_state(self, state: State) -> Tuple[State, ...]:
        """ Return the state reachable from a given state. """
        result = []
        for gene in self.genes:
            result.extend(self.available_state_for_gene(gene, state))
        if len(result) > 1 and state in result:
            result.remove(state)
        return tuple(result)