private MilitaryKind findSuccessorRecruitable_r(MilitaryKindList allMilitaryKinds, Architecture recruiter, MilitaryKind prev)
 {
     if (prev.successor.GetMilitaryKindList().Count == 0)
     {
         return prev;
     }
     prev.findSuccessor_visited = true;
     MilitaryKindList toVisit = new MilitaryKindList();
     foreach (MilitaryKind i in prev.successor.GetMilitaryKindList())
     {
         if (!i.findSuccessor_visited && recruiter.GetNewMilitaryKindList().GameObjects.Contains(i) && allMilitaryKinds.GetList().GameObjects.Contains(i))
         {
             toVisit.Add(i);
         }
     }
     if (toVisit.Count == 0)
     {
         return prev;
     }
     return findSuccessorRecruitable_r(allMilitaryKinds, recruiter, toVisit[GameObject.Random(toVisit.Count)] as MilitaryKind);
 }