module Main where data A deriving (Show, Eq, Ord) newtype B = B Int deriving newtype (Num) deriving stock (Show, Eq, Generic) deriving (Semigroup, Monoid) via (Generically B) deriving stock (Ord, Generic) deriving (ToJSON) data C deriving (Show , Eq -- A comment that will end up in an odd place , Ord)