Program: 86045
Project: 86045
Buggy source:
public void getClass(String player){
  AClass c=pli.getPClasses().get(player);
  final Player p=Bukkit.getServer().getPlayer(player);
  Util.clearInv(p);
  ArrayList<ItemStack> items=new ArrayList<ItemStack>(Arrays.asList(c.getItems()));
  ArrayList<ItemStack> temp=new ArrayList<ItemStack>(Arrays.asList(c.getItems()));
  ArrayList<String> tempguns=new ArrayList<String>();
  final ArrayList<PotionEffectType> temppotions=new ArrayList<PotionEffectType>();
  final ArrayList<Integer> temppotions_lv=new ArrayList<Integer>();
  final ArrayList<Integer> temppotions_duration=new ArrayList<Integer>();
  for (  ItemStack item : temp) {
    if (item != null) {
      if (item.hasItemMeta()) {
        if (item.getItemMeta().hasDisplayName()) {
          if (item.getItemMeta().getDisplayName().startsWith("String_Node_Str")) {
            items.remove(item);
            tempguns.add(item.getItemMeta().getDisplayName().split("String_Node_Str")[1]);
          }
 else           if (item.getItemMeta().getDisplayName().startsWith("String_Node_Str")) {
            items.remove(item);
            String potioneffect=item.getItemMeta().getDisplayName().split("String_Node_Str")[1];
            String data=item.getItemMeta().getDisplayName().split("String_Node_Str")[2];
            Integer time=Integer.parseInt(data.substring(0,data.indexOf("String_Node_Str")));
            Integer lv=Integer.parseInt(data.split("String_Node_Str")[1]);
            if (PotionEffectType.getByName(potioneffect) != null) {
              temppotions.add(PotionEffectType.getByName(potioneffect));
              temppotions_lv.add(lv);
              temppotions_duration.add(time);
            }
          }
        }
      }
    }
  }
  for (  ItemStack item : items) {
    if (item != null) {
      Color c_=null;
      if (item.hasItemMeta()) {
        if (item.getItemMeta().hasDisplayName()) {
          if (item.getItemMeta().getDisplayName().startsWith("String_Node_Str") && item.getItemMeta().getDisplayName().length() == 7) {
            c_=Util.hexToRgb(item.getItemMeta().getDisplayName());
          }
        }
      }
      if (item.getTypeId() == 298 || item.getTypeId() == 302 || item.getTypeId() == 306 || item.getTypeId() == 310 || item.getTypeId() == 314) {
        if (item.getTypeId() == 298) {
          LeatherArmorMeta lam=(LeatherArmorMeta)item.getItemMeta();
          if (c_ != null) {
            lam.setColor(c_);
          }
          item.setItemMeta(lam);
        }
        p.getInventory().setHelmet(item);
        continue;
      }
      if (item.getTypeId() == 299 || item.getTypeId() == 303 || item.getTypeId() == 307 || item.getTypeId() == 311 || item.getTypeId() == 315) {
        if (item.getTypeId() == 299) {
          LeatherArmorMeta lam=(LeatherArmorMeta)item.getItemMeta();
          if (c_ != null) {
            lam.setColor(c_);
          }
          item.setItemMeta(lam);
        }
        p.getInventory().setChestplate(item);
        continue;
      }
      if (item.getTypeId() == 300 || item.getTypeId() == 304 || item.getTypeId() == 308 || item.getTypeId() == 312 || item.getTypeId() == 316) {
        if (item.getTypeId() == 300) {
          LeatherArmorMeta lam=(LeatherArmorMeta)item.getItemMeta();
          if (c_ != null) {
            lam.setColor(c_);
          }
          item.setItemMeta(lam);
        }
        p.getInventory().setLeggings(item);
        continue;
      }
      if (item.getTypeId() == 301 || item.getTypeId() == 305 || item.getTypeId() == 309 || item.getTypeId() == 313 || item.getTypeId() == 317) {
        if (item.getTypeId() == 301) {
          LeatherArmorMeta lam=(LeatherArmorMeta)item.getItemMeta();
          if (c_ != null) {
            lam.setColor(c_);
          }
          item.setItemMeta(lam);
        }
        p.getInventory().setBoots(item);
        continue;
      }
      if (item.getType() != Material.AIR) {
        p.getInventory().addItem(item);
      }
    }
  }
  p.updateInventory();
  if (MinigamesAPI.getAPI().crackshot) {
    for (    String t : tempguns) {
      CSUtility cs=new CSUtility();
      cs.giveWeapon(p,t,1);
    }
  }
  Bukkit.getScheduler().runTaskLater(plugin,new Runnable(){
    public void run(){
      if (p != null) {
        int index=0;
        for (        PotionEffectType t : temppotions) {
          p.addPotionEffect(new PotionEffect(t,temppotions_duration.get(index),temppotions_lv.get(index)));
          index++;
        }
      }
    }
  }
,10L);
}

Fixed version (ground truth):
public void getClass(String player){
  if (!pli.getPClasses().containsKey(player)) {
    if (MinigamesAPI.debug) {
      ArenaLogger.debug(player + "String_Node_Str");
    }
    return;
  }
  AClass c=pli.getPClasses().get(player);
  final Player p=Bukkit.getServer().getPlayer(player);
  Util.clearInv(p);
  ArrayList<ItemStack> items=new ArrayList<ItemStack>(Arrays.asList(c.getItems()));
  ArrayList<ItemStack> temp=new ArrayList<ItemStack>(Arrays.asList(c.getItems()));
  ArrayList<String> tempguns=new ArrayList<String>();
  final ArrayList<PotionEffectType> temppotions=new ArrayList<PotionEffectType>();
  final ArrayList<Integer> temppotions_lv=new ArrayList<Integer>();
  final ArrayList<Integer> temppotions_duration=new ArrayList<Integer>();
  for (  ItemStack item : temp) {
    if (item != null) {
      if (item.hasItemMeta()) {
        if (item.getItemMeta().hasDisplayName()) {
          if (item.getItemMeta().getDisplayName().startsWith("String_Node_Str")) {
            items.remove(item);
            tempguns.add(item.getItemMeta().getDisplayName().split("String_Node_Str")[1]);
          }
 else           if (item.getItemMeta().getDisplayName().startsWith("String_Node_Str")) {
            items.remove(item);
            String potioneffect=item.getItemMeta().getDisplayName().split("String_Node_Str")[1];
            String data=item.getItemMeta().getDisplayName().split("String_Node_Str")[2];
            Integer time=Integer.parseInt(data.substring(0,data.indexOf("String_Node_Str")));
            Integer lv=Integer.parseInt(data.split("String_Node_Str")[1]);
            if (PotionEffectType.getByName(potioneffect) != null) {
              temppotions.add(PotionEffectType.getByName(potioneffect));
              temppotions_lv.add(lv);
              temppotions_duration.add(time);
            }
          }
        }
      }
    }
  }
  for (  ItemStack item : items) {
    if (item != null) {
      Color c_=null;
      if (item.hasItemMeta()) {
        if (item.getItemMeta().hasDisplayName()) {
          if (item.getItemMeta().getDisplayName().startsWith("String_Node_Str") && item.getItemMeta().getDisplayName().length() == 7) {
            c_=Util.hexToRgb(item.getItemMeta().getDisplayName());
          }
        }
      }
      if (item.getTypeId() == 298 || item.getTypeId() == 302 || item.getTypeId() == 306 || item.getTypeId() == 310 || item.getTypeId() == 314) {
        if (item.getTypeId() == 298) {
          LeatherArmorMeta lam=(LeatherArmorMeta)item.getItemMeta();
          if (c_ != null) {
            lam.setColor(c_);
          }
          item.setItemMeta(lam);
        }
        p.getInventory().setHelmet(item);
        continue;
      }
      if (item.getTypeId() == 299 || item.getTypeId() == 303 || item.getTypeId() == 307 || item.getTypeId() == 311 || item.getTypeId() == 315) {
        if (item.getTypeId() == 299) {
          LeatherArmorMeta lam=(LeatherArmorMeta)item.getItemMeta();
          if (c_ != null) {
            lam.setColor(c_);
          }
          item.setItemMeta(lam);
        }
        p.getInventory().setChestplate(item);
        continue;
      }
      if (item.getTypeId() == 300 || item.getTypeId() == 304 || item.getTypeId() == 308 || item.getTypeId() == 312 || item.getTypeId() == 316) {
        if (item.getTypeId() == 300) {
          LeatherArmorMeta lam=(LeatherArmorMeta)item.getItemMeta();
          if (c_ != null) {
            lam.setColor(c_);
          }
          item.setItemMeta(lam);
        }
        p.getInventory().setLeggings(item);
        continue;
      }
      if (item.getTypeId() == 301 || item.getTypeId() == 305 || item.getTypeId() == 309 || item.getTypeId() == 313 || item.getTypeId() == 317) {
        if (item.getTypeId() == 301) {
          LeatherArmorMeta lam=(LeatherArmorMeta)item.getItemMeta();
          if (c_ != null) {
            lam.setColor(c_);
          }
          item.setItemMeta(lam);
        }
        p.getInventory().setBoots(item);
        continue;
      }
      if (item.getType() != Material.AIR) {
        p.getInventory().addItem(item);
      }
    }
  }
  p.updateInventory();
  if (MinigamesAPI.getAPI().crackshot) {
    for (    String t : tempguns) {
      CSUtility cs=new CSUtility();
      cs.giveWeapon(p,t,1);
    }
  }
  Bukkit.getScheduler().runTaskLater(plugin,new Runnable(){
    public void run(){
      if (p != null) {
        int index=0;
        for (        PotionEffectType t : temppotions) {
          p.addPotionEffect(new PotionEffect(t,temppotions_duration.get(index),temppotions_lv.get(index)));
          index++;
        }
      }
    }
  }
,10L);
}