code: func (p *baseLogicalPlan) PredicatePushDown(predicates []expression.Expression) ([]expression.Expression, LogicalPlan) {
  	if len(p.children) == 0 {
  		return predicates, p.self
  	}
  	child := p.children[0]
  	rest, newChild := child.PredicatePushDown(predicates)
  	addSelection(p.self, newChild, rest, 0)
  	return nil, p.self
  }
docs: // PredicatePushDown implements LogicalPlan interface.