code: def find_links(cls, root_plot):
          
          plot_fn = lambda x: isinstance(x, GenericElementPlot) and not isinstance(x, GenericOverlayPlot)
          plots = root_plot.traverse(lambda x: x, [plot_fn])
          potentials = [cls.find_link(plot) for plot in plots]
          source_links = [p for p in potentials if p is not None]
          found = []
          for plot, links in source_links:
              for link in links:
                  if not link._requires_target:
                      # If link has no target don't look further
                      found.append((link, plot, None))
                      continue
                  potentials = [cls.find_link(p, link) for p in plots]
                  tgt_links = [p for p in potentials if p is not None]
                  if tgt_links:
                      found.append((link, plot, tgt_links[0][0]))
          return found
docs: Traverses the supplied plot and searches for any Links on
          the plotted objects.