Program: 171330
Project: 171330
Buggy source:
public static void loadGameCharacterVariablesFromXML(GameCharacter character,StringBuilder log,Element parentElement,Document doc){
  NodeList nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element element=(Element)nodes.item(0);
  if (((Element)element.getElementsByTagName("String_Node_Str").item(0)) != null) {
    character.setId(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getId());
  }
  if (!((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str").isEmpty()) {
    character.setName(new NameTriplet(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + ((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
  }
 else {
    Element nameElement=((Element)element.getElementsByTagName("String_Node_Str").item(0));
    character.setName(new NameTriplet(nameElement.getAttribute("String_Node_Str"),nameElement.getAttribute("String_Node_Str"),nameElement.getAttribute("String_Node_Str")));
  }
  if (element.getElementsByTagName("String_Node_Str") != null && element.getElementsByTagName("String_Node_Str").getLength() > 0) {
    character.setSurname(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + ((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
  }
  character.setLevel(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
  CharacterUtils.appendToImportLog(log,"String_Node_Str" + Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    if (!((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str").equals("String_Node_Str")) {
      character.setSexualOrientation(SexualOrientation.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + SexualOrientation.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    }
 else {
      character.setSexualOrientation(SexualOrientation.AMBIPHILIC);
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + SexualOrientation.AMBIPHILIC);
    }
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setDescription(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str");
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    String petName=((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str");
    character.setPlayerPetName(petName);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + petName);
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setPlayerKnowsName(Boolean.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.isPlayerKnowsName());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setHistory(History.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getHistory());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    String personality=((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str");
    if (personality.equals("String_Node_Str")) {
      personality="String_Node_Str";
    }
    character.setPersonality(Personality.valueOf(personality));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getPersonality());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setObedience(Float.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getObedience());
  }
  boolean setGenderIdentity=false;
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setGenderIdentity(Gender.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getGenderIdentity());
    setGenderIdentity=true;
  }
  int extraLevelUpPoints=0;
  if (element.getElementsByTagName("String_Node_Str").item(0) != null) {
    nodes=parentElement.getElementsByTagName("String_Node_Str");
    Element attElement=(Element)nodes.item(0);
    for (int i=0; i < attElement.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)attElement.getElementsByTagName("String_Node_Str").item(i));
      try {
        character.setAttribute(Attribute.valueOf(e.getAttribute("String_Node_Str")),Float.valueOf(e.getAttribute("String_Node_Str")));
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + Attribute.valueOf(e.getAttribute("String_Node_Str")).getName() + "String_Node_Str"+ Float.valueOf(e.getAttribute("String_Node_Str")));
      }
 catch (      IllegalArgumentException ex) {
      }
    }
  }
 else {
    extraLevelUpPoints=(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) * 5);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) * 5));
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setHealth(Float.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getHealth());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setMana(Float.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getMana());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setStamina(Float.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getStamina());
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  if (nodes.getLength() > 0) {
    character.setPerkPoints((Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"))) - 1);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) - 1));
    element=(Element)nodes.item(0);
    character.incrementExperience(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    character.setLevelUpPoints(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints));
  }
 else {
    character.incrementExperience(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    character.setLevelUpPoints(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints));
    try {
      character.setPerkPoints(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints));
    }
 catch (    Exception ex) {
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    character.setLocation(WorldType.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")),new Vector2i(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")),Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"))),false);
    character.setHomeLocation(WorldType.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")),new Vector2i(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")),Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"))));
  }
 else {
    character.setLocation(new Vector2i(0,0));
  }
  character.body=Body.loadFromXML(log,(Element)parentElement.getElementsByTagName("String_Node_Str").item(0),doc);
  if (!setGenderIdentity) {
    character.setGenderIdentity(character.getGender());
  }
  character.resetInventory();
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    character.inventory=CharacterInventory.loadFromXML(element,doc);
    for (    AbstractClothing clothing : character.getClothingCurrentlyEquipped()) {
      character.incrementBonusAttribute(Attribute.RESISTANCE_PHYSICAL,clothing.getClothingType().getPhysicalResistance());
      for (      Entry<Attribute,Integer> e : clothing.getAttributeModifiers().entrySet()) {
        character.incrementBonusAttribute(e.getKey(),e.getValue());
      }
    }
  }
 else {
    CharacterCreation.getDressed(character,false);
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element attElement=(Element)nodes.item(0);
  if (attElement != null) {
    for (int i=0; i < attElement.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)attElement.getElementsByTagName("String_Node_Str").item(i));
      try {
        character.addPotionEffect(Attribute.valueOf(e.getAttribute("String_Node_Str")),Float.valueOf(e.getAttribute("String_Node_Str")));
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + Attribute.valueOf(e.getAttribute("String_Node_Str")).getName() + "String_Node_Str"+ Float.valueOf(e.getAttribute("String_Node_Str")));
      }
 catch (      IllegalArgumentException ex) {
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      try {
        if (!e.getAttribute("String_Node_Str").isEmpty()) {
          if (Boolean.valueOf(e.getAttribute("String_Node_Str"))) {
            if (Perk.valueOf(e.getAttribute("String_Node_Str")) != null) {
              character.addPerk(Perk.valueOf(e.getAttribute("String_Node_Str")));
              CharacterUtils.appendToImportLog(log,"String_Node_Str" + Perk.valueOf(e.getAttribute("String_Node_Str")).getName(character));
            }
          }
        }
 else {
          if (Perk.valueOf(e.getAttribute("String_Node_Str")) != null) {
            character.addPerk(Perk.valueOf(e.getAttribute("String_Node_Str")));
            CharacterUtils.appendToImportLog(log,"String_Node_Str" + Perk.valueOf(e.getAttribute("String_Node_Str")).getName(character));
          }
        }
      }
 catch (      IllegalArgumentException ex) {
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    if (element.getElementsByTagName("String_Node_Str").item(0) != null && !((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str").isEmpty()) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        try {
          if (e.getAttribute("String_Node_Str").equals("String_Node_Str")) {
            character.incrementEssenceCount(TFEssence.ARCANE,5);
            CharacterUtils.appendToImportLog(log,"String_Node_Str");
          }
 else           if (Fetish.valueOf(e.getAttribute("String_Node_Str")) != null) {
            if (Boolean.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"))) {
              character.addFetish(Fetish.valueOf(e.getAttribute("String_Node_Str")));
              CharacterUtils.appendToImportLog(log,"String_Node_Str" + Fetish.valueOf(e.getAttribute("String_Node_Str")).getName(character));
            }
          }
        }
 catch (        IllegalArgumentException ex) {
        }
      }
    }
 else {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        try {
          if (e.getAttribute("String_Node_Str").equals("String_Node_Str")) {
            character.incrementEssenceCount(TFEssence.ARCANE,5);
            CharacterUtils.appendToImportLog(log,"String_Node_Str");
          }
 else           if (Fetish.valueOf(e.getAttribute("String_Node_Str")) != null) {
            character.addFetish(Fetish.valueOf(e.getAttribute("String_Node_Str")));
            CharacterUtils.appendToImportLog(log,"String_Node_Str" + Fetish.valueOf(e.getAttribute("String_Node_Str")).getName(character));
          }
        }
 catch (        IllegalArgumentException ex) {
        }
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
    Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
    try {
      if (Integer.valueOf(e.getAttribute("String_Node_Str")) != -1) {
        character.addStatusEffect(StatusEffect.valueOf(e.getAttribute("String_Node_Str")),Integer.valueOf(e.getAttribute("String_Node_Str")));
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + StatusEffect.valueOf(e.getAttribute("String_Node_Str")).getName(character) + "String_Node_Str"+ Integer.valueOf(e.getAttribute("String_Node_Str"))+ "String_Node_Str");
      }
    }
 catch (    IllegalArgumentException ex) {
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      character.setAffection(e.getAttribute("String_Node_Str"),Float.valueOf(e.getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ Float.valueOf(e.getAttribute("String_Node_Str")));
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element pregnancyElement=(Element)nodes.item(0);
  if (pregnancyElement != null) {
    CharacterUtils.appendToImportLog(log,"String_Node_Str");
    character.setTimeProgressedToFinalPregnancyStage(Integer.valueOf(pregnancyElement.getAttribute("String_Node_Str")));
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)nodes.item(0);
    if (element != null) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        character.getPotentialPartnersAsMother().add(PregnancyPossibility.loadFromXML(e,doc));
        CharacterUtils.appendToImportLog(log,"String_Node_Str");
      }
    }
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)nodes.item(0);
    if (element != null) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        character.getPotentialPartnersAsFather().add(PregnancyPossibility.loadFromXML(e,doc));
        CharacterUtils.appendToImportLog(log,"String_Node_Str");
      }
    }
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
    if (element != null) {
      character.setPregnantLitter(Litter.loadFromXML(element,doc));
      CharacterUtils.appendToImportLog(log,"String_Node_Str");
    }
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)nodes.item(0);
    if (element != null) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        character.getLittersBirthed().add(Litter.loadFromXML(e,doc));
        CharacterUtils.appendToImportLog(log,"String_Node_Str");
      }
    }
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)nodes.item(0);
    if (element != null) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        character.getLittersFathered().add(Litter.loadFromXML(e,doc));
        CharacterUtils.appendToImportLog(log,"String_Node_Str");
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element familyElement=(Element)nodes.item(0);
  if (familyElement != null) {
    character.setMother(((Element)familyElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    character.setFather(((Element)familyElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    character.setDayOfConception(Integer.valueOf(((Element)familyElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    character.setDayOfBirth(Integer.valueOf(((Element)familyElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element slaveryElement=(Element)nodes.item(0);
  if (slaveryElement != null) {
    for (int i=0; i < ((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(i));
      character.getSlavesOwned().add(e.getAttribute("String_Node_Str"));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str"));
    }
    character.setOwner(((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getOwnerId());
    character.setSlaveJob(SlaveJob.valueOf(((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getSlaveJob());
    for (int i=0; i < ((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(i));
      SlaveJobSetting setting=SlaveJobSetting.valueOf(e.getAttribute("String_Node_Str"));
      character.addSlaveJobSettings(setting);
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + setting);
    }
    for (    SlavePermission key : character.getSlavePermissionSettings().keySet()) {
      character.getSlavePermissionSettings().get(key).clear();
    }
    for (int i=0; i < ((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(i));
      SlavePermission slavePermission=SlavePermission.valueOf(e.getAttribute("String_Node_Str"));
      for (int j=0; j < e.getElementsByTagName("String_Node_Str").getLength(); j++) {
        Element e2=((Element)e.getElementsByTagName("String_Node_Str").item(j));
        SlavePermissionSetting setting=SlavePermissionSetting.valueOf(e2.getAttribute("String_Node_Str"));
        character.addSlavePermissionSetting(slavePermission,setting);
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + slavePermission + "String_Node_Str"+ setting);
      }
    }
    Element workHourElement=((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0));
    for (int i=0; i < character.workHours.length; i++) {
      character.workHours[i]=Boolean.valueOf(workHourElement.getAttribute("String_Node_Str" + String.valueOf(i)));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + i + "String_Node_Str"+ character.workHours[i]);
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element sexStatsElement=(Element)nodes.item(0);
  if (sexStatsElement.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setSexConsensualCount(Integer.valueOf(((Element)sexStatsElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getSexConsensualCount());
  }
  if (sexStatsElement.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setSexAsSubCount(Integer.valueOf(((Element)sexStatsElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getSexAsSubCount());
  }
  if (sexStatsElement.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setSexAsDomCount(Integer.valueOf(((Element)sexStatsElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getSexAsDomCount());
  }
  element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
  for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
    Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
    try {
      for (int it=0; it < Integer.valueOf(e.getAttribute("String_Node_Str")); it++)       character.incrementCumCount(new SexType(PenetrationType.valueOf(e.getAttribute("String_Node_Str")),OrificeType.valueOf(e.getAttribute("String_Node_Str"))));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str")+ "String_Node_Str"+ Integer.valueOf(e.getAttribute("String_Node_Str")));
    }
 catch (    IllegalArgumentException ex) {
    }
  }
  element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
  for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
    Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
    try {
      for (int it=0; it < Integer.valueOf(e.getAttribute("String_Node_Str")); it++)       character.incrementSexCount(new SexType(PenetrationType.valueOf(e.getAttribute("String_Node_Str")),OrificeType.valueOf(e.getAttribute("String_Node_Str"))));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str")+ "String_Node_Str"+ Integer.valueOf(e.getAttribute("String_Node_Str")));
    }
 catch (    IllegalArgumentException ex) {
    }
  }
  element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
  for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
    Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
    character.setVirginityLoss(new SexType(PenetrationType.valueOf(e.getAttribute("String_Node_Str")),OrificeType.valueOf(e.getAttribute("String_Node_Str"))),e.getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str")+ "String_Node_Str"+ e.getAttribute("String_Node_Str")+ "String_Node_Str");
  }
  element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
  if (element != null) {
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      character.sexPartnerMap.put(e.getAttribute("String_Node_Str"),new HashMap<>());
      for (int j=0; j < element.getElementsByTagName("String_Node_Str").getLength(); j++) {
        Element e2=((Element)element.getElementsByTagName("String_Node_Str").item(j));
        character.sexPartnerMap.get(e.getAttribute("String_Node_Str")).put(new SexType(PenetrationType.valueOf(e2.getAttribute("String_Node_Str")),OrificeType.valueOf(e2.getAttribute("String_Node_Str"))),Integer.valueOf(e2.getAttribute("String_Node_Str")));
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e2.getAttribute("String_Node_Str")+ "String_Node_Str"+ e2.getAttribute("String_Node_Str")+ "String_Node_Str"+ Integer.valueOf(e2.getAttribute("String_Node_Str")));
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element addictionsElement=(Element)nodes.item(0);
  if (addictionsElement != null) {
    element=(Element)addictionsElement.getElementsByTagName("String_Node_Str").item(0);
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      character.setAddiction(FluidType.valueOf(e.getAttribute("String_Node_Str")),Integer.valueOf(e.getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str"));
    }
    element=(Element)addictionsElement.getElementsByTagName("String_Node_Str").item(0);
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      character.setLastTimeSatisfiedAddiction(FluidType.valueOf(e.getAttribute("String_Node_Str")),Long.valueOf(e.getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str"));
    }
  }
}

Fixed version (ground truth):
public static void loadGameCharacterVariablesFromXML(GameCharacter character,StringBuilder log,Element parentElement,Document doc){
  NodeList nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element element=(Element)nodes.item(0);
  if (((Element)element.getElementsByTagName("String_Node_Str").item(0)) != null) {
    character.setId(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getId());
  }
  if (!((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str").isEmpty()) {
    character.setName(new NameTriplet(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + ((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
  }
 else {
    Element nameElement=((Element)element.getElementsByTagName("String_Node_Str").item(0));
    character.setName(new NameTriplet(nameElement.getAttribute("String_Node_Str"),nameElement.getAttribute("String_Node_Str"),nameElement.getAttribute("String_Node_Str")));
  }
  if (element.getElementsByTagName("String_Node_Str") != null && element.getElementsByTagName("String_Node_Str").getLength() > 0) {
    character.setSurname(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + ((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
  }
  character.setLevel(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
  CharacterUtils.appendToImportLog(log,"String_Node_Str" + Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    if (!((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str").equals("String_Node_Str")) {
      character.setSexualOrientation(SexualOrientation.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + SexualOrientation.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    }
 else {
      character.setSexualOrientation(SexualOrientation.AMBIPHILIC);
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + SexualOrientation.AMBIPHILIC);
    }
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setDescription(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str");
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    String petName=((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str");
    character.setPlayerPetName(petName);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + petName);
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setPlayerKnowsName(Boolean.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.isPlayerKnowsName());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setHistory(History.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getHistory());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    String personality=((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str");
    if (personality.equals("String_Node_Str")) {
      personality="String_Node_Str";
    }
    character.setPersonality(Personality.valueOf(personality));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getPersonality());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setObedience(Float.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getObedience());
  }
  boolean setGenderIdentity=false;
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    try {
      if (!((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str").equals("String_Node_Str")) {
        character.setGenderIdentity(Gender.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getGenderIdentity());
        setGenderIdentity=true;
      }
    }
 catch (    Exception ex) {
    }
  }
  int extraLevelUpPoints=0;
  if (element.getElementsByTagName("String_Node_Str").item(0) != null) {
    nodes=parentElement.getElementsByTagName("String_Node_Str");
    Element attElement=(Element)nodes.item(0);
    for (int i=0; i < attElement.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)attElement.getElementsByTagName("String_Node_Str").item(i));
      try {
        character.setAttribute(Attribute.valueOf(e.getAttribute("String_Node_Str")),Float.valueOf(e.getAttribute("String_Node_Str")));
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + Attribute.valueOf(e.getAttribute("String_Node_Str")).getName() + "String_Node_Str"+ Float.valueOf(e.getAttribute("String_Node_Str")));
      }
 catch (      IllegalArgumentException ex) {
      }
    }
  }
 else {
    extraLevelUpPoints=(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) * 5);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) * 5));
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setHealth(Float.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getHealth());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setMana(Float.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getMana());
  }
  if (element.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setStamina(Float.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getStamina());
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  if (nodes.getLength() > 0) {
    character.setPerkPoints((Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"))) - 1);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) - 1));
    element=(Element)nodes.item(0);
    character.incrementExperience(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    character.setLevelUpPoints(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints));
  }
 else {
    character.incrementExperience(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    character.setLevelUpPoints(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints);
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints));
    try {
      character.setPerkPoints(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + (Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")) + extraLevelUpPoints));
    }
 catch (    Exception ex) {
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    character.setLocation(WorldType.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")),new Vector2i(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")),Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"))),false);
    character.setHomeLocation(WorldType.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")),new Vector2i(Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")),Integer.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"))));
  }
 else {
    character.setLocation(new Vector2i(0,0));
  }
  character.body=Body.loadFromXML(log,(Element)parentElement.getElementsByTagName("String_Node_Str").item(0),doc);
  if (!setGenderIdentity) {
    character.setGenderIdentity(character.getGender());
  }
  character.resetInventory();
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    character.inventory=CharacterInventory.loadFromXML(element,doc);
    for (    AbstractClothing clothing : character.getClothingCurrentlyEquipped()) {
      character.incrementBonusAttribute(Attribute.RESISTANCE_PHYSICAL,clothing.getClothingType().getPhysicalResistance());
      for (      Entry<Attribute,Integer> e : clothing.getAttributeModifiers().entrySet()) {
        character.incrementBonusAttribute(e.getKey(),e.getValue());
      }
    }
  }
 else {
    CharacterCreation.getDressed(character,false);
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element attElement=(Element)nodes.item(0);
  if (attElement != null) {
    for (int i=0; i < attElement.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)attElement.getElementsByTagName("String_Node_Str").item(i));
      try {
        character.addPotionEffect(Attribute.valueOf(e.getAttribute("String_Node_Str")),Float.valueOf(e.getAttribute("String_Node_Str")));
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + Attribute.valueOf(e.getAttribute("String_Node_Str")).getName() + "String_Node_Str"+ Float.valueOf(e.getAttribute("String_Node_Str")));
      }
 catch (      IllegalArgumentException ex) {
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      try {
        if (!e.getAttribute("String_Node_Str").isEmpty()) {
          if (Boolean.valueOf(e.getAttribute("String_Node_Str"))) {
            if (Perk.valueOf(e.getAttribute("String_Node_Str")) != null) {
              character.addPerk(Perk.valueOf(e.getAttribute("String_Node_Str")));
              CharacterUtils.appendToImportLog(log,"String_Node_Str" + Perk.valueOf(e.getAttribute("String_Node_Str")).getName(character));
            }
          }
        }
 else {
          if (Perk.valueOf(e.getAttribute("String_Node_Str")) != null) {
            character.addPerk(Perk.valueOf(e.getAttribute("String_Node_Str")));
            CharacterUtils.appendToImportLog(log,"String_Node_Str" + Perk.valueOf(e.getAttribute("String_Node_Str")).getName(character));
          }
        }
      }
 catch (      IllegalArgumentException ex) {
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    if (element.getElementsByTagName("String_Node_Str").item(0) != null && !((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str").isEmpty()) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        try {
          if (e.getAttribute("String_Node_Str").equals("String_Node_Str")) {
            character.incrementEssenceCount(TFEssence.ARCANE,5);
            CharacterUtils.appendToImportLog(log,"String_Node_Str");
          }
 else           if (Fetish.valueOf(e.getAttribute("String_Node_Str")) != null) {
            if (Boolean.valueOf(((Element)element.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"))) {
              character.addFetish(Fetish.valueOf(e.getAttribute("String_Node_Str")));
              CharacterUtils.appendToImportLog(log,"String_Node_Str" + Fetish.valueOf(e.getAttribute("String_Node_Str")).getName(character));
            }
          }
        }
 catch (        IllegalArgumentException ex) {
        }
      }
    }
 else {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        try {
          if (e.getAttribute("String_Node_Str").equals("String_Node_Str")) {
            character.incrementEssenceCount(TFEssence.ARCANE,5);
            CharacterUtils.appendToImportLog(log,"String_Node_Str");
          }
 else           if (Fetish.valueOf(e.getAttribute("String_Node_Str")) != null) {
            character.addFetish(Fetish.valueOf(e.getAttribute("String_Node_Str")));
            CharacterUtils.appendToImportLog(log,"String_Node_Str" + Fetish.valueOf(e.getAttribute("String_Node_Str")).getName(character));
          }
        }
 catch (        IllegalArgumentException ex) {
        }
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
    Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
    try {
      if (Integer.valueOf(e.getAttribute("String_Node_Str")) != -1) {
        character.addStatusEffect(StatusEffect.valueOf(e.getAttribute("String_Node_Str")),Integer.valueOf(e.getAttribute("String_Node_Str")));
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + StatusEffect.valueOf(e.getAttribute("String_Node_Str")).getName(character) + "String_Node_Str"+ Integer.valueOf(e.getAttribute("String_Node_Str"))+ "String_Node_Str");
      }
    }
 catch (    IllegalArgumentException ex) {
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  element=(Element)nodes.item(0);
  if (element != null) {
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      character.setAffection(e.getAttribute("String_Node_Str"),Float.valueOf(e.getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ Float.valueOf(e.getAttribute("String_Node_Str")));
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element pregnancyElement=(Element)nodes.item(0);
  if (pregnancyElement != null) {
    CharacterUtils.appendToImportLog(log,"String_Node_Str");
    character.setTimeProgressedToFinalPregnancyStage(Integer.valueOf(pregnancyElement.getAttribute("String_Node_Str")));
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)nodes.item(0);
    if (element != null) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        character.getPotentialPartnersAsMother().add(PregnancyPossibility.loadFromXML(e,doc));
        CharacterUtils.appendToImportLog(log,"String_Node_Str");
      }
    }
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)nodes.item(0);
    if (element != null) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        character.getPotentialPartnersAsFather().add(PregnancyPossibility.loadFromXML(e,doc));
        CharacterUtils.appendToImportLog(log,"String_Node_Str");
      }
    }
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
    if (element != null) {
      character.setPregnantLitter(Litter.loadFromXML(element,doc));
      CharacterUtils.appendToImportLog(log,"String_Node_Str");
    }
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)nodes.item(0);
    if (element != null) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        character.getLittersBirthed().add(Litter.loadFromXML(e,doc));
        CharacterUtils.appendToImportLog(log,"String_Node_Str");
      }
    }
    nodes=pregnancyElement.getElementsByTagName("String_Node_Str");
    element=(Element)nodes.item(0);
    if (element != null) {
      for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
        Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
        character.getLittersFathered().add(Litter.loadFromXML(e,doc));
        CharacterUtils.appendToImportLog(log,"String_Node_Str");
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element familyElement=(Element)nodes.item(0);
  if (familyElement != null) {
    character.setMother(((Element)familyElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    character.setFather(((Element)familyElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    character.setDayOfConception(Integer.valueOf(((Element)familyElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    character.setDayOfBirth(Integer.valueOf(((Element)familyElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element slaveryElement=(Element)nodes.item(0);
  if (slaveryElement != null) {
    for (int i=0; i < ((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(i));
      character.getSlavesOwned().add(e.getAttribute("String_Node_Str"));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str"));
    }
    character.setOwner(((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getOwnerId());
    character.setSlaveJob(SlaveJob.valueOf(((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getSlaveJob());
    for (int i=0; i < ((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(i));
      SlaveJobSetting setting=SlaveJobSetting.valueOf(e.getAttribute("String_Node_Str"));
      character.addSlaveJobSettings(setting);
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + setting);
    }
    for (    SlavePermission key : character.getSlavePermissionSettings().keySet()) {
      character.getSlavePermissionSettings().get(key).clear();
    }
    for (int i=0; i < ((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0)).getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(i));
      SlavePermission slavePermission=SlavePermission.valueOf(e.getAttribute("String_Node_Str"));
      for (int j=0; j < e.getElementsByTagName("String_Node_Str").getLength(); j++) {
        Element e2=((Element)e.getElementsByTagName("String_Node_Str").item(j));
        SlavePermissionSetting setting=SlavePermissionSetting.valueOf(e2.getAttribute("String_Node_Str"));
        character.addSlavePermissionSetting(slavePermission,setting);
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + slavePermission + "String_Node_Str"+ setting);
      }
    }
    Element workHourElement=((Element)slaveryElement.getElementsByTagName("String_Node_Str").item(0));
    for (int i=0; i < character.workHours.length; i++) {
      character.workHours[i]=Boolean.valueOf(workHourElement.getAttribute("String_Node_Str" + String.valueOf(i)));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + i + "String_Node_Str"+ character.workHours[i]);
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element sexStatsElement=(Element)nodes.item(0);
  if (sexStatsElement.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setSexConsensualCount(Integer.valueOf(((Element)sexStatsElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getSexConsensualCount());
  }
  if (sexStatsElement.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setSexAsSubCount(Integer.valueOf(((Element)sexStatsElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getSexAsSubCount());
  }
  if (sexStatsElement.getElementsByTagName("String_Node_Str").getLength() != 0) {
    character.setSexAsDomCount(Integer.valueOf(((Element)sexStatsElement.getElementsByTagName("String_Node_Str").item(0)).getAttribute("String_Node_Str")));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + character.getSexAsDomCount());
  }
  element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
  for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
    Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
    try {
      for (int it=0; it < Integer.valueOf(e.getAttribute("String_Node_Str")); it++)       character.incrementCumCount(new SexType(PenetrationType.valueOf(e.getAttribute("String_Node_Str")),OrificeType.valueOf(e.getAttribute("String_Node_Str"))));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str")+ "String_Node_Str"+ Integer.valueOf(e.getAttribute("String_Node_Str")));
    }
 catch (    IllegalArgumentException ex) {
    }
  }
  element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
  for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
    Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
    try {
      for (int it=0; it < Integer.valueOf(e.getAttribute("String_Node_Str")); it++)       character.incrementSexCount(new SexType(PenetrationType.valueOf(e.getAttribute("String_Node_Str")),OrificeType.valueOf(e.getAttribute("String_Node_Str"))));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str")+ "String_Node_Str"+ Integer.valueOf(e.getAttribute("String_Node_Str")));
    }
 catch (    IllegalArgumentException ex) {
    }
  }
  element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
  for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
    Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
    character.setVirginityLoss(new SexType(PenetrationType.valueOf(e.getAttribute("String_Node_Str")),OrificeType.valueOf(e.getAttribute("String_Node_Str"))),e.getAttribute("String_Node_Str"));
    CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str")+ "String_Node_Str"+ e.getAttribute("String_Node_Str")+ "String_Node_Str");
  }
  element=(Element)((Element)nodes.item(0)).getElementsByTagName("String_Node_Str").item(0);
  if (element != null) {
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      character.sexPartnerMap.put(e.getAttribute("String_Node_Str"),new HashMap<>());
      for (int j=0; j < element.getElementsByTagName("String_Node_Str").getLength(); j++) {
        Element e2=((Element)element.getElementsByTagName("String_Node_Str").item(j));
        character.sexPartnerMap.get(e.getAttribute("String_Node_Str")).put(new SexType(PenetrationType.valueOf(e2.getAttribute("String_Node_Str")),OrificeType.valueOf(e2.getAttribute("String_Node_Str"))),Integer.valueOf(e2.getAttribute("String_Node_Str")));
        CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e2.getAttribute("String_Node_Str")+ "String_Node_Str"+ e2.getAttribute("String_Node_Str")+ "String_Node_Str"+ Integer.valueOf(e2.getAttribute("String_Node_Str")));
      }
    }
  }
  nodes=parentElement.getElementsByTagName("String_Node_Str");
  Element addictionsElement=(Element)nodes.item(0);
  if (addictionsElement != null) {
    element=(Element)addictionsElement.getElementsByTagName("String_Node_Str").item(0);
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      character.setAddiction(FluidType.valueOf(e.getAttribute("String_Node_Str")),Integer.valueOf(e.getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str"));
    }
    element=(Element)addictionsElement.getElementsByTagName("String_Node_Str").item(0);
    for (int i=0; i < element.getElementsByTagName("String_Node_Str").getLength(); i++) {
      Element e=((Element)element.getElementsByTagName("String_Node_Str").item(i));
      character.setLastTimeSatisfiedAddiction(FluidType.valueOf(e.getAttribute("String_Node_Str")),Long.valueOf(e.getAttribute("String_Node_Str")));
      CharacterUtils.appendToImportLog(log,"String_Node_Str" + e.getAttribute("String_Node_Str") + "String_Node_Str"+ e.getAttribute("String_Node_Str"));
    }
  }
}