private IEnumerable<Ships.Part> GetParts(Ships.Part parent) { if (!parent.SkipPart) { if (parent.Parts != null) foreach (var part in parent.Parts.SelectMany(p => this.GetParts(p))) yield return part; yield return parent; } }