public RequiredProductFlattenerResponse GetFlattenedInventory(RequiredProductFlattenerRequest requiredProductFlattenerRequest)
 {
     _productTypes = requiredProductFlattenerRequest.ProductTypes;
     _cityStorage = requiredProductFlattenerRequest.CityStorage == null ? new CityStorage
     {
         CurrentInventory = new Product[0]
     } : requiredProductFlattenerRequest.CityStorage.Clone();
     //            var flattenedList = RequiredProductFlattenerRequest.Products.SelectMany(upgrade => GetFlattenedInventory(upgrade.Products)).ToArray();
     var flattenedList = GetFlattenedInventory(requiredProductFlattenerRequest.Products);
     return new RequiredProductFlattenerResponse
     {
         Products = flattenedList
     };
 }
 private RequiredProductFlattenerResponse GetFlattenedProductRequirementList(BuildingUpgradeProductConsoldatorRequest request, CityStorage cityStorage)
 {
     var inventoryFlattenerRequest = new RequiredProductFlattenerRequest
     {
         Products = request.BuildingUpgrades.Where(x=>x.CalculateInBuildingUpgrades).SelectMany(x=>x.Products).ToArray(),
         ProductTypes = _productTypes,
         CityStorage = cityStorage
     };
     return _requiredProductFlattener.GetFlattenedInventory(inventoryFlattenerRequest);
 }