public static IEnumerable <BaseMulti> GetEnumeratedMultis(this Region region) { List <BaseMulti> list = region.GetMultis(); IEnumerable <BaseMulti> e; lock (_MultiLock) { e = list.AsParallel().Where(m => m != null && m.GetRegion().IsPartOf(region)); } foreach (BaseMulti multi in e) { yield return(multi); } list.Clear(); list.TrimExcess(); }