docs: def _generate_dendro(self, current_section, spacing, offsets):
          '''Recursive function for dendrogram line computations
          '''
          max_dims = self._max_dims
          start_x = _spacingx(current_section, max_dims, offsets[0], spacing[0])
  
          for child in current_section.children:
  
              segments = child.points
  
              # number of leaves in child
              terminations = _n_terminations(child)
  
              # segement lengths
              seg_lengths = np.linalg.norm(np.subtract(segments[:-1, COLS.XYZ],
                                                       segments[1:, COLS.XYZ]), axis=1)
  
              # segment radii
              radii = np.vstack((segments[:-1, COLS.R], segments[1:, COLS.R])).T \
                  if self._show_diameters else np.zeros((seg_lengths.shape[0], 2))
  
              y_offset = offsets[1]
              for i, slen in enumerate(seg_lengths):
  
                  # offset update for the vertical segments
                  new_offsets = _update_offsets(start_x, spacing, terminations,
                                                (offsets[0], y_offset), slen)
  
                  # segments are drawn vertically, thus only y_offset changes from init offsets
                  self._rectangles[self._n] = _vertical_segment((offsets[0], y_offset),
                                                                new_offsets, spacing, radii[i, :])
                  self._n += 1
                  y_offset = new_offsets[1]
  
              if y_offset + spacing[1] * 2 + sum(seg_lengths) > max_dims[1]:
                  max_dims[1] = y_offset + spacing[1] * 2. + sum(seg_lengths)
  
              self._max_dims = max_dims
              # recursive call to self.
              self._generate_dendro(child, spacing, new_offsets)
  
              # update the starting position for the next child
              start_x += terminations * spacing[0]
  
              # write the horizontal lines only for bifurcations, where the are actual horizontal
              # lines and not zero ones
              if offsets[0] != new_offsets[0]:
  
                  # horizontal segment. Thickness is either 0 if show_diameters is false
                  # or 1. if show_diameters is true
                  self._rectangles[self._n] = _horizontal_segment(offsets, new_offsets, spacing, 0.)
                  self._n += 1