docs: def evolve_states(self, parent_states, categories, probs):
          """
          Evolve states from parent to child. States are sampled
          from gamma categories passed in the array 'categories'.
          The branch length information is encoded in the probability
          matrix, 'probs', generated in __init__.
          """
          child_states = np.empty(parent_states.shape, dtype=np.intc)
          _evolve_states(self.state_indices, parent_states, categories, probs, child_states)
          return child_states