void FilterByValueRangeOverlap(List <Weapon> allWeapons, int?min, int?max, out List <Weapon> weaponsWithinRange, out List <Weapon> weaponsNotWithinRange) { weaponsWithinRange = new List <Weapon>(); weaponsNotWithinRange = new List <Weapon>(); foreach (Weapon weapon in allWeapons) { ValueGenerator valueGenerator = weapon.Access(WeaponSetting).ValueGenerator; if (valueGenerator == null) { continue; } if (valueGenerator.DoesValueRangeOverlap(min, max)) { weaponsWithinRange.Add(weapon); } else { weaponsNotWithinRange.Add(weapon); } } }