class_docstr: This plan is used for storing information required for a nested loop join.
code: def __init__(
      self,
      join_type: JoinType,
      join_predicate: AbstractExpression = None,
  ):
      self._join_predicate = join_predicate
      super().__init__(
          PlanOprType.NESTED_LOOP_JOIN, join_type, join_predicate
      )
  
file_path: evadb/evadb/plan_nodes/nested_loop_join_plan.py
imports: from evadb.expression.abstract_expression import AbstractExpression
  from evadb.parser.types import JoinType
  from evadb.plan_nodes.abstract_join_plan import AbstractJoin
  from evadb.plan_nodes.types import PlanOprType
label_desc: Use image node_id 1 to create a new NestedLoopJoinPlan object from inherited base classes: AbstractJoin with example: obj = NestedLoopJoinPlan(join_type, join_predicate)