docs: def generate(self):
          '''Generate dendrogram
          '''
          offsets = (0., 0.)
  
          n_previous = 0
  
          # set recursion limit with respect to
          # the max number of nodes on the trees
          old_depth = sys.getrecursionlimit()
          max_depth = old_depth if old_depth > self._max_rec_depth else self._max_rec_depth
          # TODO: This should be fixed so we don't set sys.setrecursionlimit at all
          sys.setrecursionlimit(max_depth)
  
          if isinstance(self._obj, Neurite):
  
              max_diameter = _max_diameter(self._obj.root_node)
  
              dummy_section = Tree()
              dummy_section.add_child(self._obj.root_node)
              self._generate_dendro(dummy_section, (max_diameter, 0.), offsets)
  
              self._groups.append((0, self._n))
  
              self._dims.append(self._max_dims)
  
          else:
  
              for neurite in self._obj.neurites:
  
                  neurite = neurite.root_node
                  max_diameter = _max_diameter(neurite)
                  dummy_section = Tree()
  
                  dummy_section.add_child(neurite)
                  self._generate_dendro(dummy_section, (max_diameter, 0.), offsets)
  
                  # store in trees the indices for the slice which corresponds
                  # to the current neurite
                  self._groups.append((n_previous, self._n))
  
                  # store the max dims per neurite for view positioning
                  self._dims.append(self._max_dims)
  
                  # reset the max dimensions for the next tree in line
                  self._max_dims = [0., 0.]
  
                  # keep track of the next tree start index in list
                  n_previous = self._n
  
          # set it back to its initial value
          sys.setrecursionlimit(old_depth)