code: def traverse(self, fn=None, specs=None, full_breadth=True):
          
          accumulator = []
          matches = specs is None
          if not matches:
              for spec in specs:
                  matches = self.matches(spec)
                  if matches: break
          if matches:
              accumulator.append(fn(self) if fn else self)
  
          # Assumes composite objects are iterables
          if hasattr(self, 'subplots') and self.subplots:
              for el in self.subplots.values():
                  if el is None:
                      continue
                  accumulator += el.traverse(fn, specs, full_breadth)
                  if not full_breadth: break
          return accumulator
docs: Traverses any nested DimensionedPlot returning a list
          of all plots that match the specs. The specs should
          be supplied as a list of either Plot types or callables,
          which should return a boolean given the plot class.