{-# LANGUAGE StandaloneKindSignatures #-} type T :: (k -> Type) -> k -> Type data T m a = MkT (m a) (T Maybe (m a)) type C1 :: Type -> Constraint class C1 a type F :: Type -> Type type family F type G :: Type type G = a