docs: def checkTransitionType(self,state):
          """
          Check whether the transition function returns output of the correct types.
          This can be either a dictionary with as keys ints/tuples and values floats.
          Or a tuple consisting of a 2d integer numpy array with states and a 1d numpy array with rates.  
          """        
          test = self.transition(state)
          assert isinstance(test,(dict,tuple)), "Transition function does not return a dict or tuple"
          
          if isinstance(test,dict):
              assert all(isinstance(states, (int,tuple)) for states in test.keys()), "Transition function returns a dict, but states are not represented as tuples or integers"
              assert all(isinstance(rates, float) for rates in test.values()), "Transition function returns a dict, but the rates should be floats."
              usesNumpy=False
              
          if isinstance(test,tuple):
              assert len(test)==2, "The transition function should return two variables: states and rates."
              states,rates = test
              assert isinstance(states, np.ndarray) and states.ndim==2 and issubclass(states.dtype.type, np.integer), "The states returned by the transition function need to be an integer 2d numpy array: %r" %states
              assert isinstance(rates, np.ndarray) and rates.ndim==1, "The rates returned by the transition function need to be a 1d numpy array: %r" % rates
              usesNumpy = True
              
          return usesNumpy