Program: 86032
Project: 86032
Buggy source:
public void openGUI(final String p){
  final Classes cl=this;
  IconMenu iconm;
  int mincount=pli.getAClasses().keySet().size();
  if (lasticonm.containsKey(p)) {
    iconm=lasticonm.get(p);
  }
 else {
    iconm=new IconMenu(pli.getMessagesConfig().classes_item,(9 * plugin.getConfig().getInt("String_Node_Str") > mincount - 1) ? 9 * plugin.getConfig().getInt("String_Node_Str") : Math.round(mincount / 9) * 9 + 9,new IconMenu.OptionClickEventHandler(){
      @Override public void onOptionClick(      IconMenu.OptionClickEvent event){
        if (event.getPlayer().getName().equalsIgnoreCase(p)) {
          if (pli.global_players.containsKey(p)) {
            if (pli.getArenas().contains(pli.global_players.get(p))) {
              String d=event.getName();
              Player p=event.getPlayer();
              if (pli.getAClasses().containsKey(d)) {
                cl.setClass(pli.getClassesHandler().getInternalNameByName(d),p.getName(),true);
              }
            }
          }
        }
        event.setWillClose(true);
      }
    }
,plugin);
  }
  int c=0;
  for (  String ac : pli.getAClasses().keySet()) {
    AClass ac_=pli.getAClasses().get(ac);
    if (ac_.isEnabled()) {
      int slot=c;
      if (pli.getClassesConfig().getConfig().isSet("String_Node_Str" + ac_.getInternalName() + "String_Node_Str")) {
        slot=pli.getClassesConfig().getConfig().getInt("String_Node_Str" + ac_.getInternalName() + "String_Node_Str");
        if (slot < 0 || slot > iconm.getSize() - 1) {
          slot=c;
        }
      }
      iconm.setOption(slot,ac_.getIcon().clone(),ac_.getName(),pli.getClassesConfig().getConfig().getString("String_Node_Str" + ac_.getInternalName() + "String_Node_Str").split("String_Node_Str"));
      c++;
    }
  }
  iconm.open(Bukkit.getPlayerExact(p));
  lasticonm.put(p,iconm);
}

Fixed version (ground truth):
public void openGUI(final String p){
  final Classes cl=this;
  IconMenu iconm;
  int mincount=pli.getAClasses().keySet().size();
  if (lasticonm.containsKey(p)) {
    iconm=lasticonm.get(p);
  }
 else {
    iconm=new IconMenu(pli.getMessagesConfig().classes_item,(9 * plugin.getConfig().getInt("String_Node_Str") > mincount - 1) ? 9 * plugin.getConfig().getInt("String_Node_Str") : Math.round(mincount / 9) * 9 + 9,new IconMenu.OptionClickEventHandler(){
      @Override public void onOptionClick(      IconMenu.OptionClickEvent event){
        if (event.getPlayer().getName().equalsIgnoreCase(p)) {
          if (pli.global_players.containsKey(p)) {
            if (pli.getArenas().contains(pli.global_players.get(p))) {
              String d=event.getName();
              Player p=event.getPlayer();
              if (pli.getAClasses().containsKey(d)) {
                cl.setClass(pli.getClassesHandler().getInternalNameByName(d),p.getName(),true);
              }
            }
          }
        }
        event.setWillClose(true);
      }
    }
,plugin);
    int c=0;
    for (    String ac : pli.getAClasses().keySet()) {
      AClass ac_=pli.getAClasses().get(ac);
      if (ac_.isEnabled()) {
        int slot=c;
        if (pli.getClassesConfig().getConfig().isSet("String_Node_Str" + ac_.getInternalName() + "String_Node_Str")) {
          slot=pli.getClassesConfig().getConfig().getInt("String_Node_Str" + ac_.getInternalName() + "String_Node_Str");
          if (slot < 0 || slot > iconm.getSize() - 1) {
            slot=c;
          }
        }
        iconm.setOption(slot,ac_.getIcon().clone(),ac_.getName(),pli.getClassesConfig().getConfig().getString("String_Node_Str" + ac_.getInternalName() + "String_Node_Str").split("String_Node_Str"));
        c++;
      }
    }
  }
  iconm.open(Bukkit.getPlayerExact(p));
  lasticonm.put(p,iconm);
}