code: func (p *Path) HasFilter(via interface{}, rev bool, filt ...shape.ValueFilter) *Path {
  	np := p.clone()
  	np.stack = append(np.stack, hasFilterMorphism(via, rev, filt))
  	return np
  }
docs: // HasFilter limits the paths to be ones where the current nodes have some linkage
  // to some nodes that pass provided filters.