Only group1 should be ejected (10 ppl), instead 20 ppl are ejected.
SpaceStation.CrewCapacity:34
---- PRE onNewDay()
CrewAssigned:34
CrewCapacityLeft:0
m_crewArrivals.Count:34
m_crewArrivals group:1 size:10 time_left:<1 day <-- only these 10 ppl should be ejected
m_crewArrivals group:2 size:24 time_left:1yr,10m
---- PRE ejectCrew()
CrewAssigned:34
CrewCapacityLeft:0
m_crewArrivals.Count:24 <-- 34-10=24, m_crewArrivals is already pruned before ejectCrew()
m_crewArrivals group:2 size:24 time_left:1yr,10m <-- second group untouched with 24 ppl (this is correct)
---- POST ejectCrew()
CrewAssigned:24 <-- CrewAssigned != m_crewArrivals.Count
CrewCapacityLeft:10 <-- also not true, we are down 20ppl
m_crewArrivals.Count:14 <-- m_crewArrivals pruned a second time, from 34 to 24 to 14
m_crewArrivals group:2 size:14 time_left:1yr,10m <-- second group wrongly ejected (down to 14 from 24ppl)
CrewAssigned is also indipendent from m_crewArrivals.Count, consider public int CrewAssigned => m_crewArrivals.Count;
The duplicated logic is just before ejectCrew call