code: func (p *PhysicalHashSemiJoin) matchProperty(_ *requiredProperty, childPlanInfo ...*physicalPlanInfo) *physicalPlanInfo {
  	lRes, rRes := childPlanInfo[0], childPlanInfo[1]
  	np := *p
  	np.SetChildren(lRes.p, rRes.p)
  	cost := lRes.cost + rRes.cost
  	return &physicalPlanInfo{p: &np, cost: cost}
  }
docs: // matchProperty implements PhysicalPlan matchProperty interface.