data Foo = Foo { _fooX :: X , _fooY :: Y } deriving (Generic) deriving (Arbitrary) via GenericArbitrary Foo