docs: def autocorrelated_relaxed_clock(self, root_rate, autocorrel,
                                       distribution='lognormal'):
          """
          Attaches rates to each node according to autocorrelated lognormal
          model from Kishino et al.(2001), or autocorrelated exponential
          """
          optioncheck(distribution, ['exponential', 'lognormal'])
  
          if autocorrel == 0:
              for node in self._tree.preorder_node_iter():
                  node.rate = root_rate
              return
  
          for node in self._tree.preorder_node_iter():
              if node == self._tree.seed_node:
                  node.rate = root_rate
              else:
                  parent_rate = node.parent_node.rate
                  bl = node.edge_length
                  if distribution == 'lognormal':
                      node.rate = logn_correlated_rate(parent_rate, bl,
                                                       autocorrel)
                  else:
                      node.rate = np.random.exponential(parent_rate)