public TType TryReuse <TType>() where TType : IRecyclable { Type typeFromHandle = typeof(TType); TType result = default(TType); Stack <IRecyclable> stack; if (this.m_ReusableStacks.TryGetValue(typeFromHandle, out stack)) { if (stack.Count > 0) { result = (TType)((object)stack.Pop()); result.isTrashed = false; result.OnReuse(); } } return(result); }