private void BuildNavigationPaths() { var path = new List <List <Type> >(); for (int entity = 0; entity < Entities.Count; entity++) { var row = new List <Type>(); row.Add(Entities[entity]); var referrals = NavigationRelations[entity].Where(e => !row.Contains(e)).ToList(); foreach (var referral in referrals) { row.Add(referral); path.Absorb(row); row.Remove(referral); } } }