```haskell data Synthesized b a = Synthesized { syn_trace :: b , syn_val :: a } deriving (Eq, Show, Functor, Foldable, Traversable) mapTrace :: (b -> b) -> Synthesized b a -> Synthesized b a mapTrace = _ ``` Not sure what's going on here; haven't dug in. The real example uses `Trace` instead of `b`.