public bool MoveStack(IItemStack stack, IStorage newStorage)
        {
            if (!this.Stacks.Contains(stack))
                return false;

            if (!newStorage.CanAdd(stack))
                return false;

            this.RemoveStack(stack);
            if (newStorage.AddStack(stack))
                return true;

            // Recover the stack
            this.AddStack(stack);
            return false;
        }