docstr: Traverses the supplied plot and searches for any Links on
  the plotted objects.
docstr_tok: ["Traverses","the","supplied","plot","and","searches","for","any","Links","on","the","plotted","objects","."]
code: def find_links(cls, root_plot):
      """
      Traverses the supplied plot and searches for any Links on
      the plotted objects.
      """
      plot_fn = lambda x: isinstance(
          x, (GenericElementPlot, 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
  
imports: import numpy
  from bokeh.models import CustomJS, Toolbar
  from bokeh.models.tools import RangeTool
  from ...core.util import isscalar
  from ..links import DataLink, Link, RangeToolLink, RectanglesTableLink, SelectionLink, VertexTableLink
  from ..plot import GenericElementPlot, GenericOverlayPlot
label_desc: Use image node_id 2 for calling the LinkCallback obj's underlying member method code with example usage: obj.find_links(cls, root_plot) and returns: found