class_docstr: Abstract class for all the join based planners
  
  Arguments:
      join_type: JoinType
          type of join, INNER, OUTER , LATERAL etc
      join_predicate: AbstractExpression
          An expression used for joining
code: def join_predicate(self) -> AbstractExpression:
      return self._join_predicate
  
file_path: evadb/evadb/plan_nodes/abstract_join_plan.py
imports: from evadb.expression.abstract_expression import AbstractExpression
  from evadb.parser.types import JoinType
  from evadb.plan_nodes.abstract_plan import AbstractPlan
  from evadb.plan_nodes.types import PlanOprType
label_desc: Use image node_id 3 for calling the AbstractJoin obj's underlying member method code with example usage: obj.join_predicate() and returns: self