{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE DeriveDataTypeable #-}

import Data.Data

data Foo = FooA | FooB

deriving instance Show Foo

deriving instance {-# Overlappable #-} Eq Foo
deriving instance {-# Overlapping  #-} Ord Foo
deriving instance {-# Overlaps     #-} Typeable Foo
deriving instance {-# Incoherent   #-} Data Foo