private int AddItemToLoad(ConcurrentBag <Load> loads, TradingPost post, Load currentLoad, long currentDucats, Item item, int requested) { var loadCopy = currentLoad.Copy(); var added = loadCopy.AddItem(item, Math.Min(item.Stock, requested)); if (added != 0) { loads.Add(loadCopy); GetLoads(loads, post, loadCopy, currentDucats - item.Price * added); } return(added); }