{-# LANGUAGE AllowAmbiguousTypes #-} module Mischief.ECS.Components.Required (require, requireAll, toBundleElement) where import Data.Data import Data.Default import Data.Set (Set) import Data.Set qualified as Set import Mischief.ECS.Components class RequiredBundle b where defaultBundleData :: Proxy b -> Set DefaultComponentType instance RequiredBundle () where defaultBundleData :: Proxy () -> Set DefaultComponentType defaultBundleData :: Proxy () -> Set DefaultComponentType defaultBundleData Proxy () _ = Set DefaultComponentType forall a. Set a Set.empty instance {-# OVERLAPPABLE #-} (Component c, Default c) => RequiredBundle c where defaultBundleData :: Proxy c -> Set DefaultComponentType defaultBundleData :: Proxy c -> Set DefaultComponentType defaultBundleData Proxy c _ = DefaultComponentType -> Set DefaultComponentType forall a. a -> Set a Set.singleton (DefaultComponentType -> Set DefaultComponentType) -> DefaultComponentType -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ Proxy c -> DefaultComponentType forall c. (Component c, Default c) => Proxy c -> DefaultComponentType DefaultComponentType (Proxy c -> DefaultComponentType) -> Proxy c -> DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @c instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1) => RequiredBundle (b0, b1) where defaultBundleData :: Proxy (b0, b1) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2) => RequiredBundle (b0, b1, b2) where defaultBundleData :: Proxy (b0, b1, b2) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3) => RequiredBundle (b0, b1, b2, b3) where defaultBundleData :: Proxy (b0, b1, b2, b3) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4) => RequiredBundle (b0, b1, b2, b3, b4) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5) => RequiredBundle (b0, b1, b2, b3, b4, b5) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5, RequiredBundle b6) => RequiredBundle (b0, b1, b2, b3, b4, b5, b6) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5, b6) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5, b6) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5, Proxy b6 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b6 -> Set DefaultComponentType) -> Proxy b6 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b6] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5, RequiredBundle b6, RequiredBundle b7) => RequiredBundle (b0, b1, b2, b3, b4, b5, b6, b7) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5, b6, b7) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5, b6, b7) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5, Proxy b6 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b6 -> Set DefaultComponentType) -> Proxy b6 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b6, Proxy b7 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b7 -> Set DefaultComponentType) -> Proxy b7 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b7] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5, RequiredBundle b6, RequiredBundle b7, RequiredBundle b8) => RequiredBundle (b0, b1, b2, b3, b4, b5, b6, b7, b8) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5, Proxy b6 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b6 -> Set DefaultComponentType) -> Proxy b6 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b6, Proxy b7 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b7 -> Set DefaultComponentType) -> Proxy b7 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b7, Proxy b8 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b8 -> Set DefaultComponentType) -> Proxy b8 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b8] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5, RequiredBundle b6, RequiredBundle b7, RequiredBundle b8, RequiredBundle b9) => RequiredBundle (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5, Proxy b6 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b6 -> Set DefaultComponentType) -> Proxy b6 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b6, Proxy b7 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b7 -> Set DefaultComponentType) -> Proxy b7 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b7, Proxy b8 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b8 -> Set DefaultComponentType) -> Proxy b8 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b8, Proxy b9 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b9 -> Set DefaultComponentType) -> Proxy b9 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b9] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5, RequiredBundle b6, RequiredBundle b7, RequiredBundle b8, RequiredBundle b9, RequiredBundle b10) => RequiredBundle (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5, Proxy b6 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b6 -> Set DefaultComponentType) -> Proxy b6 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b6, Proxy b7 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b7 -> Set DefaultComponentType) -> Proxy b7 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b7, Proxy b8 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b8 -> Set DefaultComponentType) -> Proxy b8 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b8, Proxy b9 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b9 -> Set DefaultComponentType) -> Proxy b9 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b9, Proxy b10 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b10 -> Set DefaultComponentType) -> Proxy b10 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b10] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5, RequiredBundle b6, RequiredBundle b7, RequiredBundle b8, RequiredBundle b9, RequiredBundle b10, RequiredBundle b11) => RequiredBundle (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5, Proxy b6 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b6 -> Set DefaultComponentType) -> Proxy b6 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b6, Proxy b7 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b7 -> Set DefaultComponentType) -> Proxy b7 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b7, Proxy b8 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b8 -> Set DefaultComponentType) -> Proxy b8 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b8, Proxy b9 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b9 -> Set DefaultComponentType) -> Proxy b9 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b9, Proxy b10 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b10 -> Set DefaultComponentType) -> Proxy b10 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b10, Proxy b11 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b11 -> Set DefaultComponentType) -> Proxy b11 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b11] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5, RequiredBundle b6, RequiredBundle b7, RequiredBundle b8, RequiredBundle b9, RequiredBundle b10, RequiredBundle b11, RequiredBundle b12) => RequiredBundle (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5, Proxy b6 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b6 -> Set DefaultComponentType) -> Proxy b6 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b6, Proxy b7 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b7 -> Set DefaultComponentType) -> Proxy b7 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b7, Proxy b8 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b8 -> Set DefaultComponentType) -> Proxy b8 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b8, Proxy b9 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b9 -> Set DefaultComponentType) -> Proxy b9 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b9, Proxy b10 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b10 -> Set DefaultComponentType) -> Proxy b10 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b10, Proxy b11 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b11 -> Set DefaultComponentType) -> Proxy b11 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b11, Proxy b12 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b12 -> Set DefaultComponentType) -> Proxy b12 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b12] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5, RequiredBundle b6, RequiredBundle b7, RequiredBundle b8, RequiredBundle b9, RequiredBundle b10, RequiredBundle b11, RequiredBundle b12, RequiredBundle b13) => RequiredBundle (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5, Proxy b6 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b6 -> Set DefaultComponentType) -> Proxy b6 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b6, Proxy b7 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b7 -> Set DefaultComponentType) -> Proxy b7 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b7, Proxy b8 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b8 -> Set DefaultComponentType) -> Proxy b8 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b8, Proxy b9 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b9 -> Set DefaultComponentType) -> Proxy b9 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b9, Proxy b10 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b10 -> Set DefaultComponentType) -> Proxy b10 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b10, Proxy b11 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b11 -> Set DefaultComponentType) -> Proxy b11 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b11, Proxy b12 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b12 -> Set DefaultComponentType) -> Proxy b12 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b12, Proxy b13 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b13 -> Set DefaultComponentType) -> Proxy b13 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b13] instance {-# OVERLAPPING #-} (RequiredBundle b0, RequiredBundle b1, RequiredBundle b2, RequiredBundle b3, RequiredBundle b4, RequiredBundle b5, RequiredBundle b6, RequiredBundle b7, RequiredBundle b8, RequiredBundle b9, RequiredBundle b10, RequiredBundle b11, RequiredBundle b12, RequiredBundle b13, RequiredBundle b14) => RequiredBundle (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14) where defaultBundleData :: Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14) -> Set DefaultComponentType defaultBundleData Proxy (b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14) _ = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions [Proxy b0 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b0 -> Set DefaultComponentType) -> Proxy b0 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b0, Proxy b1 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b1 -> Set DefaultComponentType) -> Proxy b1 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b1, Proxy b2 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b2 -> Set DefaultComponentType) -> Proxy b2 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b2, Proxy b3 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b3 -> Set DefaultComponentType) -> Proxy b3 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b3, Proxy b4 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b4 -> Set DefaultComponentType) -> Proxy b4 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b4, Proxy b5 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b5 -> Set DefaultComponentType) -> Proxy b5 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b5, Proxy b6 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b6 -> Set DefaultComponentType) -> Proxy b6 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b6, Proxy b7 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b7 -> Set DefaultComponentType) -> Proxy b7 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b7, Proxy b8 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b8 -> Set DefaultComponentType) -> Proxy b8 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b8, Proxy b9 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b9 -> Set DefaultComponentType) -> Proxy b9 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b9, Proxy b10 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b10 -> Set DefaultComponentType) -> Proxy b10 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b10, Proxy b11 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b11 -> Set DefaultComponentType) -> Proxy b11 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b11, Proxy b12 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b12 -> Set DefaultComponentType) -> Proxy b12 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b12, Proxy b13 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b13 -> Set DefaultComponentType) -> Proxy b13 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b13, Proxy b14 -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (Proxy b14 -> Set DefaultComponentType) -> Proxy b14 -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @b14] require :: forall b. (RequiredBundle b) => Set DefaultComponentType require :: forall {k} (b :: k). RequiredBundle b => Set DefaultComponentType require = Proxy b -> Set DefaultComponentType forall {k} (b :: k). RequiredBundle b => Proxy b -> Set DefaultComponentType defaultBundleData (forall (t :: k). Proxy t forall {k} (t :: k). Proxy t Proxy @b) requireAll :: forall c. (Component c) => Set DefaultComponentType requireAll :: forall c. Component c => Set DefaultComponentType requireAll = Set DefaultComponentType -> Set DefaultComponentType requireAll' (Set DefaultComponentType -> Set DefaultComponentType) -> Set DefaultComponentType -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ forall c. Component c => Set DefaultComponentType required @c requireAll' :: Set DefaultComponentType -> Set DefaultComponentType requireAll' :: Set DefaultComponentType -> Set DefaultComponentType requireAll' !Set DefaultComponentType set = let !nextSet :: Set DefaultComponentType nextSet = Set DefaultComponentType -> Set DefaultComponentType expandAll Set DefaultComponentType set in if Set DefaultComponentType -> Bool forall a. Set a -> Bool forall (t :: * -> *) a. Foldable t => t a -> Bool null Set DefaultComponentType nextSet then Set DefaultComponentType set else Set DefaultComponentType -> Set DefaultComponentType requireAll' (Set DefaultComponentType -> Set DefaultComponentType) -> Set DefaultComponentType -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ Set DefaultComponentType -> Set DefaultComponentType -> Set DefaultComponentType forall a. Ord a => Set a -> Set a -> Set a Set.union Set DefaultComponentType set Set DefaultComponentType nextSet expandAll :: Set DefaultComponentType -> Set DefaultComponentType expandAll :: Set DefaultComponentType -> Set DefaultComponentType expandAll !Set DefaultComponentType set = let !newSet :: Set DefaultComponentType newSet = [Set DefaultComponentType] -> Set DefaultComponentType forall (f :: * -> *) a. (Foldable f, Ord a) => f (Set a) -> Set a Set.unions ([Set DefaultComponentType] -> Set DefaultComponentType) -> [Set DefaultComponentType] -> Set DefaultComponentType forall a b. (a -> b) -> a -> b $ (DefaultComponentType -> Set DefaultComponentType) -> [DefaultComponentType] -> [Set DefaultComponentType] forall a b. (a -> b) -> [a] -> [b] map DefaultComponentType -> Set DefaultComponentType expandOne (Set DefaultComponentType -> [DefaultComponentType] forall a. Set a -> [a] Set.toList Set DefaultComponentType set) in Set DefaultComponentType -> Set DefaultComponentType -> Set DefaultComponentType forall a. Ord a => Set a -> Set a -> Set a Set.difference Set DefaultComponentType newSet Set DefaultComponentType set expandOne :: DefaultComponentType -> Set DefaultComponentType expandOne :: DefaultComponentType -> Set DefaultComponentType expandOne (DefaultComponentType (Proxy c _ :: (Proxy c))) = forall c. Component c => Set DefaultComponentType required @c toBundleElement :: DefaultComponentType -> BundleElement ErasedComponent toBundleElement :: DefaultComponentType -> BundleElement ErasedComponent toBundleElement (DefaultComponentType (Proxy c _ :: (Proxy c))) = ComponentRep -> ErasedComponent -> BundleElement ErasedComponent forall e. ComponentRep -> e -> BundleElement e BundleElement (ComponentType -> ComponentRep ComponentRep (ComponentType -> ComponentRep) -> ComponentType -> ComponentRep forall a b. (a -> b) -> a -> b $ Proxy c -> ComponentType forall c. Component c => Proxy c -> ComponentType ComponentType (Proxy c -> ComponentType) -> Proxy c -> ComponentType forall a b. (a -> b) -> a -> b $ forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @c) (ErasedComponent -> BundleElement ErasedComponent) -> ErasedComponent -> BundleElement ErasedComponent forall a b. (a -> b) -> a -> b $ c -> ErasedComponent forall c. Component c => c -> ErasedComponent ErasedComponent (c -> ErasedComponent) -> c -> ErasedComponent forall a b. (a -> b) -> a -> b $ forall a. Default a => a def @c