{-# LANGUAGE GADTs #-}

data GADT a where
  GADT ::
    { blah :: Int
    , bar :: a
    } -> GADT a
  Bar ::
    { zoo :: Bool
    , baxter :: a
    , another :: a
    } -> GADT Bool
  Baz :: GADT Int


split :: GADT Bool -> a
split x = _