public Pooler GetPooler(GameObject inPoolPrefab)
            {
                Pooler pooler = null;

                if (this.prefabToPooler.ContainsKey(inPoolPrefab))
                {
                    pooler = this.prefabToPooler[inPoolPrefab];
                }
                // if passing in a prefab which doesn't have a pooler yet, create one
                else
                {
                    GameObject newPoolerGO = new GameObject();
                    newPoolerGO.SetLayerRecursively(PoolManager.I.gameObject.layer);
                    newPoolerGO.name                    = inPoolPrefab.name;
                    newPoolerGO.transform.parent        = this.transform;
                    newPoolerGO.transform.localPosition = Vector3.zero;

                    Poolable poolable = new Poolable();
                    poolable.key           = inPoolPrefab.name;
                    poolable.prefab        = inPoolPrefab;
                    poolable.amountToSpawn = 1;

                    pooler = newPoolerGO.AddComponent <Pooler>();
                    pooler.Initialize(poolable);
                }
                return(pooler);
            }