code: protected void pushDownExpressions(List<AbstractExpression> noneList)
      {
          JoinType joinType = getJoinType();
          if (joinType == JoinType.FULL) {
              return;
          }
          JoinNode outerNode = getLeftNode();
          if (outerNode instanceof BranchNode) {
              ((BranchNode)outerNode).pushDownExpressionsRecursively(m_whereOuterList, noneList);
          }
          JoinNode innerNode = getRightNode();
          if (innerNode instanceof BranchNode && joinType == JoinType.INNER) {
              ((BranchNode)innerNode).pushDownExpressionsRecursively(m_whereInnerList, noneList);
          }
      }
docs: Push down each WHERE expression on a given join node to the most specific child join
  or table the expression applies to.
  1. The OUTER WHERE expressions can be pushed down to the outer (left) child for all joins
  (INNER and LEFT).
  2. The INNER WHERE expressions can be pushed down to the inner (right) child for the INNER joins.
  3. The WHERE expressions must be preserved for the FULL join type.
  @param joinNode JoinNode