public List <SnailNumber> NonRegularNumbersList() { if (IsRegular) { return(new List <SnailNumber>()); } if (Item1.IsRegular || Item2.IsRegular) { return(new List <SnailNumber> { this }.Concat(Item1.NonRegularNumbersList()).Concat(Item2.NonRegularNumbersList()).ToList()); } return(Item1.NonRegularNumbersList().Concat(Item2.NonRegularNumbersList()).ToList()); }