{-#LANGUAGE TemplateHaskell #-}import Test.QuickCheckimport Test.AgataTHdata X a b = X [Either a b] deriving Showdata Y = Y deriving Showdata Z = Z deriving Show$(agatath $ deriveall [''X,''Y,''Z])main = sample (arbitrary :: Gen (X Y Z))