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