private void updateDynastyForCharacter(CK2Character character, CK2Dynasty newDynasty, bool canOverwrite, HashSet <int> processed) { bool hasChar = !(processed.Add(character.getFamilyTreeID())); if (hasChar) { return; } if (character.getDynasty() == null || canOverwrite) { character.setDynasty(newDynasty); } CK2Character father = character.getFather(); if (father != null) { //CK2Dynasty fatherDynasty = father.getDynasty(); //if (fatherDynasty == null || fatherDynasty.getID() != newDynasty.getID()) updateDynastyForCharacter(father, newDynasty, canOverwrite, processed); } List <CK2Character> children = character.getChildren(); if (children != null) { foreach (CK2Character child in children) { //CK2Dynasty childDynasty = child.getDynasty(); //if (childDynasty == null || childDynasty.getID() != newDynasty.getID()) updateDynastyForCharacter(child, newDynasty, canOverwrite, processed); } } }