Data.Coat
class Coated c
class IsCoat c
uncoat
class CoatedM m c
uncoatM
withCoatedM
withCoatedM'
class CoatConstructor a m c
class CoatGenerator m c