Program: 2004
Project: 2004
Buggy source:
/** 
 * Adds an item to be stocked by the selected trader.
 * @param player
 * @param npc
 * @param item
 * @param price
 * @param selling
 */
private void changeTraderStock(Player player,HumanNPC npc,String item,String price,boolean selling){
  if (item.contains("String_Node_Str")) {
    Material mat=StringUtils.parseMaterial(price);
    if (mat == null) {
      player.sendMessage(ChatColor.RED + "String_Node_Str");
      return;
    }
    String keyword="String_Node_Str";
    if (selling)     keyword="String_Node_Str";
    if (npc.getTrader().getStockable(mat.getId(),selling) == null) {
      player.sendMessage(ChatColor.RED + "String_Node_Str" + keyword+ "String_Node_Str");
      return;
    }
 else {
      npc.getTrader().removeStockable(mat.getId(),selling);
      player.sendMessage(ChatColor.GREEN + "String_Node_Str" + StringUtils.yellowify(mat.name())+ "String_Node_Str"+ keyword+ "String_Node_Str");
    }
    return;
  }
  String[] split=item.split("String_Node_Str");
  ItemStack stack=createItemStack(split);
  if (stack == null) {
    player.sendMessage(ChatColor.RED + "String_Node_Str");
    return;
  }
  split=price.split("String_Node_Str");
  ItemStack cost=null;
  if (split.length != 1) {
    cost=createItemStack(split);
    if (cost == null) {
      player.sendMessage(ChatColor.RED + "String_Node_Str");
      return;
    }
  }
  if (cost == null) {
    if (!EconomyHandler.useIconomy()) {
      player.sendMessage(ChatColor.GRAY + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str");
      return;
    }
 else     if (split[0].contains("String_Node_Str")) {
      player.sendMessage(ChatColor.GRAY + "String_Node_Str" + "String_Node_Str");
      return;
    }
  }
  int data=Citizens.MAGIC_DATA_VALUE;
  if (cost != null && cost.getData() != null)   data=cost.getData().getData();
  ItemPrice itemPrice;
  if (cost != null)   itemPrice=new ItemPrice(cost.getAmount(),cost.getTypeId(),data);
 else   itemPrice=new ItemPrice(Integer.parseInt(split[0]));
  itemPrice.setiConomy(cost == null);
  Stockable s=new Stockable(stack,itemPrice,false);
  String keyword="String_Node_Str";
  if (selling) {
    s.setSelling(true);
    keyword="String_Node_Str";
  }
  if (npc.getTrader().isStocked(s)) {
    player.sendMessage(ChatColor.RED + "String_Node_Str" + keyword+ "String_Node_Str"+ MessageUtils.getStockableMessage(s,ChatColor.RED)+ "String_Node_Str");
    return;
  }
  npc.getTrader().addStockable(s);
  player.sendMessage(ChatColor.GREEN + "String_Node_Str" + keyword+ "String_Node_Str"+ MessageUtils.getStockableMessage(s,ChatColor.GREEN)+ "String_Node_Str");
}

Fixed version (ground truth):
/** 
 * Adds an item to be stocked by the selected trader.
 * @param player
 * @param npc
 * @param item
 * @param price
 * @param selling
 */
private void changeTraderStock(Player player,HumanNPC npc,String item,String price,boolean selling){
  if (item.contains("String_Node_Str")) {
    Material mat=StringUtils.parseMaterial(price);
    if (mat == null) {
      player.sendMessage(ChatColor.RED + "String_Node_Str");
      return;
    }
    String keyword="String_Node_Str";
    if (!selling)     keyword="String_Node_Str";
    if (npc.getTrader().getStockable(mat.getId(),selling) == null) {
      player.sendMessage(ChatColor.RED + "String_Node_Str" + keyword+ "String_Node_Str");
      return;
    }
 else {
      npc.getTrader().removeStockable(mat.getId(),selling);
      player.sendMessage(ChatColor.GREEN + "String_Node_Str" + StringUtils.yellowify(mat.name())+ "String_Node_Str"+ keyword+ "String_Node_Str");
    }
    return;
  }
  String[] split=item.split("String_Node_Str");
  ItemStack stack=createItemStack(split);
  if (stack == null) {
    player.sendMessage(ChatColor.RED + "String_Node_Str");
    return;
  }
  split=price.split("String_Node_Str");
  ItemStack cost=null;
  if (split.length != 1) {
    cost=createItemStack(split);
    if (cost == null) {
      player.sendMessage(ChatColor.RED + "String_Node_Str");
      return;
    }
  }
  if (cost == null) {
    if (!EconomyHandler.useIconomy()) {
      player.sendMessage(ChatColor.GRAY + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str");
      return;
    }
 else     if (split[0].contains("String_Node_Str")) {
      player.sendMessage(ChatColor.GRAY + "String_Node_Str" + "String_Node_Str");
      return;
    }
  }
  int data=Citizens.MAGIC_DATA_VALUE;
  if (cost != null && cost.getData() != null)   data=cost.getData().getData();
  ItemPrice itemPrice;
  if (cost != null)   itemPrice=new ItemPrice(cost.getAmount(),cost.getTypeId(),data);
 else   itemPrice=new ItemPrice(Integer.parseInt(split[0]));
  itemPrice.setiConomy(cost == null);
  Stockable s=new Stockable(stack,itemPrice,false);
  String keyword="String_Node_Str";
  if (!selling) {
    keyword="String_Node_Str";
  }
  if (selling) {
    s.setSelling(true);
  }
  if (npc.getTrader().isStocked(s)) {
    player.sendMessage(ChatColor.RED + "String_Node_Str" + keyword+ "String_Node_Str"+ MessageUtils.getStockableMessage(s,ChatColor.RED)+ "String_Node_Str");
    return;
  }
  npc.getTrader().addStockable(s);
  player.sendMessage(ChatColor.GREEN + "String_Node_Str" + keyword+ "String_Node_Str"+ MessageUtils.getStockableMessage(s,ChatColor.GREEN)+ "String_Node_Str");
}