Program: 2082
Project: 2082
Buggy source:
private void setupNPCs(){
  String[] list=PropertyPool.locations.getString("String_Node_Str").split("String_Node_Str");
  if (list.length > 0 && list[0] != "String_Node_Str") {
    for (    String name : list) {
      if (name.split("String_Node_Str",2).length == 1 && !name.split("String_Node_Str",2)[0].isEmpty()) {
        int UID=PropertyPool.getNewNpcID();
        String oldName=name;
        name=UID + "String_Node_Str" + name;
        PropertyPool.locations.setString(UID,PropertyPool.locations.getString(oldName));
        PropertyPool.locations.removeKey(oldName);
        PropertyPool.colours.setString(UID,PropertyPool.colours.getString(oldName));
        PropertyPool.colours.removeKey(oldName);
        PropertyPool.items.setString(UID,PropertyPool.items.getString(oldName));
        PropertyPool.items.removeKey(oldName);
        PropertyPool.texts.setString(UID,PropertyPool.texts.getString(oldName));
        PropertyPool.texts.removeKey(oldName);
        PropertyPool.lookat.setBoolean(UID,true);
        PropertyPool.talkWhenClose.setBoolean(UID,false);
        PropertyPool.locations.setString("String_Node_Str",PropertyPool.locations.getString("String_Node_Str").replace(oldName,name));
        list=PropertyPool.locations.getString("String_Node_Str").split("String_Node_Str");
      }
      Location loc=PropertyPool.getLocationFromID(Integer.valueOf(name.split("String_Node_Str")[0]));
      if (loc != null) {
        handler.spawnExistingNPC(name.split("String_Node_Str",2)[1],Integer.valueOf(name.split("String_Node_Str")[0]));
        ArrayList<String> text=PropertyPool.getText(Integer.valueOf(name.split("String_Node_Str")[0]));
        if (text != null)         handler.setNPCText(Integer.valueOf(name.split("String_Node_Str")[0]),text);
      }
 else {
        PropertyPool.deleteNameFromList(name);
      }
    }
  }
}

Fixed version (ground truth):
private void setupNPCs(){
  String[] list=PropertyPool.locations.getString("String_Node_Str").split("String_Node_Str");
  if (list.length > 0 && list[0] != "String_Node_Str") {
    for (    String name : list) {
      if (name.split("String_Node_Str",2).length == 1 && !name.split("String_Node_Str",2)[0].isEmpty()) {
        int UID=PropertyPool.getNewNpcID();
        String oldName=name;
        name=UID + "String_Node_Str" + name;
        PropertyPool.locations.setString(UID,PropertyPool.locations.getString(oldName));
        PropertyPool.locations.removeKey(oldName);
        PropertyPool.colours.setString(UID,PropertyPool.colours.getString(oldName));
        PropertyPool.colours.removeKey(oldName);
        PropertyPool.items.setString(UID,PropertyPool.items.getString(oldName));
        PropertyPool.items.removeKey(oldName);
        PropertyPool.texts.setString(UID,PropertyPool.texts.getString(oldName));
        PropertyPool.texts.removeKey(oldName);
        PropertyPool.lookat.setBoolean(UID,true);
        PropertyPool.talkWhenClose.setBoolean(UID,false);
        PropertyPool.locations.setString("String_Node_Str",PropertyPool.locations.getString("String_Node_Str").replace(oldName,name));
        list=PropertyPool.locations.getString("String_Node_Str").split("String_Node_Str");
      }
      Location loc=PropertyPool.getLocationFromID(Integer.valueOf(name.split("String_Node_Str")[0]));
      if (loc != null) {
        handler.spawnExistingNPC(name.split("String_Node_Str",2)[1],Integer.valueOf(name.split("String_Node_Str")[0]));
        ArrayList<String> text=PropertyPool.getText(Integer.valueOf(name.split("String_Node_Str")[0]));
        if (text != null)         handler.setNPCText(Integer.valueOf(name.split("String_Node_Str")[0]),text);
      }
 else {
        PropertyPool.deleteNameFromList(name);
      }
    }
  }
  log.info("String_Node_Str" + this.getDescription().getName() + "String_Node_Str"+ NPCManager.GlobalUIDs.size()+ "String_Node_Str");
}