public void GetEmptyItemAtSlotTest()
    {
        CreateItemContainer();

        IItemSlot itemSlot = _itemContainer.GetItem(0);

        Assert.NotNull(itemSlot);
        Assert.Null(itemSlot.ItemId);
        Assert.Equal(0, itemSlot.ItemCount);
        Assert.False(itemSlot.HasItem);
    }
        public static IEntityHandle PlayerDropItem(this IItemContainer container, int itemIndex, [NotNull] IPlayerComponent player)
        {
            if (player == null)
            {
                throw new ArgumentNullException(nameof(player));
            }

            var item = container.GetItem(itemIndex);

            if (item == null)
            {
                return(null);
            }

            var itemFactory = (IGroundItemFactory)player.Parent.Server.Services.GetService(typeof(IGroundItemFactory));

            if (itemFactory == null)
            {
                return(null);
            }

            var itemEntityHandle = itemFactory.CreatePlayerDrop(item, player, $"Dropped item {item.Id.Name}x{item.Amount}");

            if (itemEntityHandle.IsDead())
            {
                return(null);
            }

            var itemEntity      = itemEntityHandle.Get();
            var itemTransform   = itemEntity.GetTransform();
            var playerTransform = player.Parent.GetTransform();

            itemTransform.SwitchPoE(playerTransform.PoE);
            itemTransform.Teleport(playerTransform);

            container.ExecuteChangeInfo(ItemChangeInfo.Remove(itemIndex));

            return(itemEntityHandle);
        }