code: func (p *Path) And(path *Path) *Path {
  	np := p.clone()
  	np.stack = append(np.stack, andMorphism(path))
  	return np
  }
docs: // And updates the current Path to represent the nodes that match both the
  // current Path so far, and the given Path.