public IReadOnlyDictionary <Item, TransferData> GetStationTaskTransfersSum(ImmutableList <Vehicle> vehicles, VehicleStationLocation station, out bool isIncomplete, out bool isEstimated)
        {
            TaskTransfers transfersSum = new TaskTransfers();

            GetStationTaskTransfersSum(vehicles, station, out isIncomplete, out isEstimated, transfersSum);
            return(transfersSum.Transfers);
        }
        public void GetStationTaskTransfersSum(ImmutableList <Vehicle> vehicles, VehicleStationLocation station, out bool isIncomplete, out bool isEstimated, TaskTransfers transfersSum)
        {
            int count = vehicles.Count;

            isIncomplete = false;
            isEstimated  = false;
            for (int i = 0; i < vehicles.Count; i++)
            {
                if (!vehicles[i].IsEnabled)
                {
                    continue;
                }
                VehicleScheduleData scheduleData = this[vehicles[i]];
                IReadOnlyDictionary <Item, TransferData> transfers = scheduleData?.Capacity.GetTransfersPerStation()?[station];
                float?mult;
                if (transfers != null && (mult = scheduleData.ScheduleMonthlyMultiplier) != null)
                {
                    isEstimated |= scheduleData.ScheduleAvereageDuration.Estimated;
                    transfersSum.Add(transfers, mult, scheduleData.ScheduleAvereageDuration.Estimated);
                }
                else
                {
                    isIncomplete = true;
                }
            }
        }