private T Instantiate <T, TI, TS>(PoolItem <T, TI, TS> poolItem, TI instantiateArguments) where TI : PoolItemInstantiateProvider where TS : PoolItemSpawnProvider { // Debug.Log("Instantiating " + typeof(T).Name); return(poolItem.OnInstantiate(Game, instantiateArguments)); }