module Mischief.ECS.Components.BundleTypes where import Data.Data import Data.Set (Set) import Data.Set qualified as Set import Mischief.ECS.Components class BundleTypes t where types :: Proxy t -> Set TypeRep instance {-# OVERLAPPABLE #-} (Component c) => BundleTypes c where types :: Proxy c -> Set TypeRep types :: Proxy c -> Set TypeRep types = TypeRep -> Set TypeRep forall a. a -> Set a Set.singleton (TypeRep -> Set TypeRep) -> (Proxy c -> TypeRep) -> Proxy c -> Set TypeRep forall b c a. (b -> c) -> (a -> b) -> a -> c . Proxy c -> TypeRep forall {k} (proxy :: k -> *) (a :: k). Typeable a => proxy a -> TypeRep typeRep instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1) => BundleTypes (t0, t1) where types :: Proxy (t0, t1) -> Set TypeRep types Proxy (t0, t1) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2) => BundleTypes (t0, t1, t2) where types :: Proxy (t0, t1, t2) -> Set TypeRep types Proxy (t0, t1, t2) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3) => BundleTypes (t0, t1, t2, t3) where types :: Proxy (t0, t1, t2, t3) -> Set TypeRep types Proxy (t0, t1, t2, t3) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4) => BundleTypes (t0, t1, t2, t3, t4) where types :: Proxy (t0, t1, t2, t3, t4) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5) => BundleTypes (t0, t1, t2, t3, t4, t5) where types :: Proxy (t0, t1, t2, t3, t4, t5) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5, BundleTypes t6) => BundleTypes (t0, t1, t2, t3, t4, t5, t6) where types :: Proxy (t0, t1, t2, t3, t4, t5, t6) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5, t6) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5, Proxy t6 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t6 -> Set TypeRep) -> Proxy t6 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t6] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5, BundleTypes t6, BundleTypes t7) => BundleTypes (t0, t1, t2, t3, t4, t5, t6, t7) where types :: Proxy (t0, t1, t2, t3, t4, t5, t6, t7) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5, t6, t7) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5, Proxy t6 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t6 -> Set TypeRep) -> Proxy t6 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t6, Proxy t7 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t7 -> Set TypeRep) -> Proxy t7 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t7] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5, BundleTypes t6, BundleTypes t7, BundleTypes t8) => BundleTypes (t0, t1, t2, t3, t4, t5, t6, t7, t8) where types :: Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5, Proxy t6 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t6 -> Set TypeRep) -> Proxy t6 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t6, Proxy t7 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t7 -> Set TypeRep) -> Proxy t7 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t7, Proxy t8 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t8 -> Set TypeRep) -> Proxy t8 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t8] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5, BundleTypes t6, BundleTypes t7, BundleTypes t8, BundleTypes t9) => BundleTypes (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) where types :: Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5, Proxy t6 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t6 -> Set TypeRep) -> Proxy t6 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t6, Proxy t7 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t7 -> Set TypeRep) -> Proxy t7 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t7, Proxy t8 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t8 -> Set TypeRep) -> Proxy t8 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t8, Proxy t9 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t9 -> Set TypeRep) -> Proxy t9 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t9] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5, BundleTypes t6, BundleTypes t7, BundleTypes t8, BundleTypes t9, BundleTypes t10) => BundleTypes (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) where types :: Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5, Proxy t6 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t6 -> Set TypeRep) -> Proxy t6 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t6, Proxy t7 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t7 -> Set TypeRep) -> Proxy t7 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t7, Proxy t8 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t8 -> Set TypeRep) -> Proxy t8 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t8, Proxy t9 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t9 -> Set TypeRep) -> Proxy t9 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t9, Proxy t10 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t10 -> Set TypeRep) -> Proxy t10 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t10] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5, BundleTypes t6, BundleTypes t7, BundleTypes t8, BundleTypes t9, BundleTypes t10, BundleTypes t11) => BundleTypes (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) where types :: Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5, Proxy t6 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t6 -> Set TypeRep) -> Proxy t6 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t6, Proxy t7 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t7 -> Set TypeRep) -> Proxy t7 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t7, Proxy t8 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t8 -> Set TypeRep) -> Proxy t8 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t8, Proxy t9 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t9 -> Set TypeRep) -> Proxy t9 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t9, Proxy t10 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t10 -> Set TypeRep) -> Proxy t10 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t10, Proxy t11 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t11 -> Set TypeRep) -> Proxy t11 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t11] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5, BundleTypes t6, BundleTypes t7, BundleTypes t8, BundleTypes t9, BundleTypes t10, BundleTypes t11, BundleTypes t12) => BundleTypes (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) where types :: Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5, Proxy t6 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t6 -> Set TypeRep) -> Proxy t6 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t6, Proxy t7 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t7 -> Set TypeRep) -> Proxy t7 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t7, Proxy t8 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t8 -> Set TypeRep) -> Proxy t8 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t8, Proxy t9 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t9 -> Set TypeRep) -> Proxy t9 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t9, Proxy t10 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t10 -> Set TypeRep) -> Proxy t10 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t10, Proxy t11 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t11 -> Set TypeRep) -> Proxy t11 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t11, Proxy t12 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t12 -> Set TypeRep) -> Proxy t12 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t12] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5, BundleTypes t6, BundleTypes t7, BundleTypes t8, BundleTypes t9, BundleTypes t10, BundleTypes t11, BundleTypes t12, BundleTypes t13) => BundleTypes (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) where types :: Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5, Proxy t6 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t6 -> Set TypeRep) -> Proxy t6 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t6, Proxy t7 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t7 -> Set TypeRep) -> Proxy t7 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t7, Proxy t8 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t8 -> Set TypeRep) -> Proxy t8 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t8, Proxy t9 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t9 -> Set TypeRep) -> Proxy t9 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t9, Proxy t10 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t10 -> Set TypeRep) -> Proxy t10 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t10, Proxy t11 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t11 -> Set TypeRep) -> Proxy t11 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t11, Proxy t12 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t12 -> Set TypeRep) -> Proxy t12 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t12, Proxy t13 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t13 -> Set TypeRep) -> Proxy t13 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t13] instance {-# OVERLAPPING #-} (BundleTypes t0, BundleTypes t1, BundleTypes t2, BundleTypes t3, BundleTypes t4, BundleTypes t5, BundleTypes t6, BundleTypes t7, BundleTypes t8, BundleTypes t9, BundleTypes t10, BundleTypes t11, BundleTypes t12, BundleTypes t13, BundleTypes t14) => BundleTypes (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) where types :: Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) -> Set TypeRep types Proxy (t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14) _ = [Set TypeRep] -> Set TypeRep forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy t0 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t0 -> Set TypeRep) -> Proxy t0 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t0, Proxy t1 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t1 -> Set TypeRep) -> Proxy t1 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t1, Proxy t2 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t2 -> Set TypeRep) -> Proxy t2 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t2, Proxy t3 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t3 -> Set TypeRep) -> Proxy t3 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t3, Proxy t4 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t4 -> Set TypeRep) -> Proxy t4 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t4, Proxy t5 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t5 -> Set TypeRep) -> Proxy t5 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t5, Proxy t6 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t6 -> Set TypeRep) -> Proxy t6 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t6, Proxy t7 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t7 -> Set TypeRep) -> Proxy t7 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t7, Proxy t8 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t8 -> Set TypeRep) -> Proxy t8 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t8, Proxy t9 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t9 -> Set TypeRep) -> Proxy t9 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t9, Proxy t10 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t10 -> Set TypeRep) -> Proxy t10 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t10, Proxy t11 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t11 -> Set TypeRep) -> Proxy t11 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t11, Proxy t12 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t12 -> Set TypeRep) -> Proxy t12 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t12, Proxy t13 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t13 -> Set TypeRep) -> Proxy t13 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t13, Proxy t14 -> Set TypeRep forall {k} (t :: k). BundleTypes t => Proxy t -> Set TypeRep types (Proxy t14 -> Set TypeRep) -> Proxy t14 -> Set TypeRep forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @t14]