+deriveSet ∷ Q Cxt → Q Type → Q Exp → Q Exp → Q Dec
+deriveSet c ty _ _
+ = do names ← methodNames ''Set
+ instanceD c ty $ concatMap (pointfreeMethod exp) names
+ where
+ exp ∷ Name → Q Exp
+ exp name
+ | name ≡ 'haddock_candy
+ = [| haddock_candy |]
+ | otherwise
+ = fail $ "deriveSet: unknown method: " ⧺ pprint name
+