cmp/cmpopts/xform.go
func AcyclicTransformer(name string, xformFunc interface{}) cmp.Option {
	xf := xformFilter{cmp.Transformer(name, xformFunc)}
	return cmp.FilterPath(xf.filter, xf.xform)
}
func AcyclicTransformer(name string, xformFunc interface{}) cmp.Option {
	xf := xformFilter{cmp.Transformer(name, xformFunc)}
	return cmp.FilterPath(xf.filter, xf.xform)
}
// AcyclicTransformer returns a Transformer with a filter applied that ensures
// that the transformer cannot be recursively applied upon its own output.
//
// An example use case is a transformer that splits a string by lines:
//	AcyclicTransformer("SplitLines", func(s string) []string{
//		return strings.Split(s, "\n")
//	})
//
// Had this been an unfiltered Transformer instead, this would result in an
// infinite cycle converting a string to []string to [][]string and so on.