private void OnStackSplitted(ISlot slot)
        {
            ISlot emptySlot = slots.Find(s => s.IsEmpty);

            if (emptySlot != null)
            {
                int itemsToMoveNum = slot.SlotCount - slot.SlotCount / 2;
                slot.RemoveStackPortion(itemsToMoveNum);
                emptySlot.AddAll(slot.StoredItem, itemsToMoveNum);
            }
        }
        private void MergeSlots(ISlot fromSlot, ISlot toSlot)
        {
            if (toSlot.SpaceLeft(toSlot.StoredItem) == 0)
            {
                return;
            }

            int toSlotSpaceLeft = toSlot.SpaceLeft(toSlot.StoredItem);
            int canMergeNum     = (toSlotSpaceLeft >= fromSlot.SlotCount) ? fromSlot.SlotCount : toSlotSpaceLeft;

            fromSlot.RemoveStackPortion(canMergeNum);
            toSlot.AddStackPortion(toSlot.StoredItem, canMergeNum);
        }