public static ItemTransactionResult IncrementItem(ISimGameWorldReadWriteAccessor accessor, Entity item, Entity destination, int stacks = 1)
    {
        ItemTransation transaction = new ItemTransation()
        {
            Source      = null,
            Destination = destination,
            Stacks      = stacks,
            Item        = item,
        };

        return(ExecuteItemTransaction(accessor, transaction));
    }
    public static ItemTransactionResult ExecuteItemTransaction(ISimGameWorldReadWriteAccessor accessor, ItemTransation transaction)
    {
        int sourceCap, destinationCap;
        DynamicBuffer <InventoryItemReference>?sourceBuffer, destinationBuffer;

        GetCap(accessor, transaction.Source, out sourceCap);
        GetBuffer(accessor, transaction.Source, out sourceBuffer);

        GetCap(accessor, transaction.Destination, out destinationCap);
        GetBuffer(accessor, transaction.Destination, out destinationBuffer);


        ItemTransationData transationData = new ItemTransationData()
        {
            Item                = transaction.Item,
            SourceBuffer        = sourceBuffer,
            DestinationBuffer   = destinationBuffer,
            Stacks              = transaction.Stacks,
            SourceCapacity      = sourceCap,
            DestinationCapacity = destinationCap,
            Source              = transaction.Source,
            Destination         = transaction.Destination,
        };

        return(ExecuteItemTransaction_Internal(accessor, ref transationData));
    }