docstr: Returns a generator which visits all the nodes in plan tree and yields one
  that matches the passed `expression_type`.
  
  Args:
      plan_type (Any): plan type to match with
  
  Returns:
      the generator object.
docstr_tok: ["Returns","a","generator","which","visits","all","the","nodes","in","plan","tree","and","yields","one","that","matches","the","passed","`","expression_type","`",".","Args",":","plan_type","(","Any",")",":","plan","type","to","match","with","Returns",":","the","generator","object","."]
code: def find_all(self, plan_type: Any):
      """Returns a generator which visits all the nodes in plan tree and yields one
      that matches the passed `expression_type`.
  
      Args:
          plan_type (Any): plan type to match with
  
      Returns:
          the generator object.
      """
  
      for node in self.bfs():
          if isinstance(node, plan_type) or self.opr_type == plan_type:
              yield node
  
imports: from abc import ABC, abstractmethod
  from collections import deque
  from typing import Any, List
  from evadb.plan_nodes.types import PlanOprType
label_desc: Use image node_id 15 for calling the AbstractPlan obj's underlying member method code with example usage: obj.find_all(plan_type) without return types