Program: 51628
Project: 51628
Buggy source:
public void load(DataKey data) throws NPCLoadException {
  if (!CitizensTrader.dtlWalletsEnabled()) {
    if (data.keyExists("String_Node_Str")) {
      wallet=new Wallet(WalletType.getTypeByName(data.getString("String_Node_Str")));
      if (data.keyExists("String_Node_Str"))       wallet.setClan(getClan(data.getString("String_Node_Str")));
      if (data.keyExists("String_Node_Str"))       wallet.setTown(getTown(data.getString("String_Node_Str")));
      if (data.keyExists("String_Node_Str"))       wallet.setFaction(getFaction(data.getString("String_Node_Str")));
      if (data.keyExists("String_Node_Str"))       wallet.setBank(data.getString("String_Node_Str","String_Node_Str"),data.getString("String_Node_Str"));
      wallet.setMoney(data.getDouble("String_Node_Str",0.0));
    }
 else {
      wallet=new Wallet(WalletType.getTypeByName(data.getString("String_Node_Str")));
      if (wallet.getType().equals(WalletType.SIMPLE_CLANS) && CitizensTrader.getSimpleClans() != null) {
        wallet.setClan(getClan(data.getString("String_Node_Str").split("String_Node_Str")[1]));
      }
 else       if (wallet.getType().equals(WalletType.TOWNY)) {
        wallet.setTown(getTown(data.getString("String_Node_Str").split("String_Node_Str")[1]));
      }
 else       if (wallet.getType().equals(WalletType.FACTIONS)) {
        wallet.setFaction(getFaction(data.getString("String_Node_Str").split("String_Node_Str")[1]));
      }
 else       wallet.setType(WalletType.NPC);
      wallet.setMoney(data.getDouble("String_Node_Str",0.0));
    }
  }
  owner=data.getString("String_Node_Str","String_Node_Str");
  enabled=data.getBoolean("String_Node_Str",true);
}

Fixed version (ground truth):
public void load(DataKey data) throws NPCLoadException {
  if (data.keyExists("String_Node_Str")) {
    wallet=new Wallet(WalletType.getTypeByName(data.getString("String_Node_Str")));
    if (data.keyExists("String_Node_Str"))     wallet.setClan(getClan(data.getString("String_Node_Str")));
    if (data.keyExists("String_Node_Str"))     wallet.setTown(getTown(data.getString("String_Node_Str")));
    if (data.keyExists("String_Node_Str"))     wallet.setFaction(getFaction(data.getString("String_Node_Str")));
    if (data.keyExists("String_Node_Str"))     wallet.setBank(data.getString("String_Node_Str","String_Node_Str"),data.getString("String_Node_Str"));
    wallet.setMoney(data.getDouble("String_Node_Str",0.0));
  }
 else {
    wallet=new Wallet(WalletType.getTypeByName(data.getString("String_Node_Str")));
    if (wallet.getType().equals(WalletType.SIMPLE_CLANS) && CitizensTrader.getSimpleClans() != null) {
      wallet.setClan(getClan(data.getString("String_Node_Str").split("String_Node_Str")[1]));
    }
 else     if (wallet.getType().equals(WalletType.TOWNY)) {
      wallet.setTown(getTown(data.getString("String_Node_Str").split("String_Node_Str")[1]));
    }
 else     if (wallet.getType().equals(WalletType.FACTIONS)) {
      wallet.setFaction(getFaction(data.getString("String_Node_Str").split("String_Node_Str")[1]));
    }
 else     wallet.setType(WalletType.NPC);
    wallet.setMoney(data.getDouble("String_Node_Str",0.0));
  }
  owner=data.getString("String_Node_Str","String_Node_Str");
  enabled=data.getBoolean("String_Node_Str",true);
}