code: func savePredicatesMorphism(isIn bool, tag string) morphism {
  	return morphism{
  		Reversal: func(ctx *pathContext) (morphism, *pathContext) {
  			return savePredicatesMorphism(isIn, tag), ctx
  		},
  		Apply: func(in shape.Shape, ctx *pathContext) (shape.Shape, *pathContext) {
  			return shape.SavePredicates(in, isIn, tag), ctx
  		},
  	}
  }
docs: // savePredicatesMorphism tags either forward or reverse predicates from current node
  // without affecting path.