public void MoveTo(IItemContainer newLocation)
        {
            if (Location == newLocation || !newLocation.FitsInSlot(this))
            {
                return;
            }

            OnItemMoved?.Invoke(this, new ItemMovedEventArgs
            {
                From = Location,
                To   = newLocation,
                Item = this
            });

            int maxAdded = newLocation.Add(this);

            Location?.Remove(this);
            if (maxAdded < Count)
            {
                new DroppableItem(this, Count - maxAdded, Location);
                Count = maxAdded;
            }
            Location = newLocation;
        }