public T Pull(object UserData = null) { T obj = null; obj = ObjectHolder.Pull(UserData); if (obj == null) { if (Factory != null) { obj = Factory.Instantiate(UserData); } } else { obj.GoOutOfPool(); Factory.BeforeGetFromPool(obj, UserData); } return(obj); }