Program: 134004
Project: 134004
Buggy source:
private void fill(){
  for (  StockAbility a : StockAbility.values()) {
    if (StockAbility.isAirbending(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        airbendingabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.AirScooter)         harmlessabilities.add(a.name());
        if (a == StockAbility.AirSpout)         harmlessabilities.add(a.name());
        if (a == StockAbility.Tornado)         shiftabilities.add(a.name());
        if (a == StockAbility.AirSuction)         shiftabilities.add(a.name());
        if (a == StockAbility.AirSwipe)         shiftabilities.add(a.name());
        if (a == StockAbility.AirBlast)         shiftabilities.add(a.name());
        if (a == StockAbility.AirBurst)         shiftabilities.add(a.name());
        if (a == StockAbility.AirShield)         shiftabilities.add(a.name());
        if (a == StockAbility.Flight)         shiftabilities.add(a.name());
        if (a == StockAbility.Flight)         subabilities.add(a.name());
        if (a == StockAbility.Flight)         flightabilities.add(a.name());
      }
    }
 else     if (StockAbility.isWaterbending(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        waterbendingabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.WaterSpout)         harmlessabilities.add(a.name());
        if (a == StockAbility.HealingWaters)         harmlessabilities.add(a.name());
        if (a == StockAbility.Surge)         shiftabilities.add(a.name());
        if (a == StockAbility.Bloodbending)         shiftabilities.add(a.name());
        if (a == StockAbility.PhaseChange)         shiftabilities.add(a.name());
        if (a == StockAbility.HealingWaters)         shiftabilities.add(a.name());
        if (a == StockAbility.OctopusForm)         shiftabilities.add(a.name());
        if (a == StockAbility.Torrent)         shiftabilities.add(a.name());
        if (a == StockAbility.WaterManipulation)         shiftabilities.add(a.name());
        if (a == StockAbility.IceSpike)         shiftabilities.add(a.name());
        if (a == StockAbility.IceBlast)         shiftabilities.add(a.name());
        if (a == StockAbility.WaterArms)         shiftabilities.add(a.name());
        if (a == StockAbility.HealingWaters)         subabilities.add(a.name());
        if (a == StockAbility.Bloodbending)         subabilities.add(a.name());
        if (a == StockAbility.PhaseChange)         subabilities.add(a.name());
        if (a == StockAbility.IceSpike)         subabilities.add(a.name());
        if (a == StockAbility.IceBlast)         subabilities.add(a.name());
        if (a == StockAbility.PlantArmor)         subabilities.add(a.name());
        if (a == StockAbility.HealingWaters)         healingabilities.add(a.name());
        if (a == StockAbility.Bloodbending)         bloodabilities.add(a.name());
        if (a == StockAbility.PhaseChange)         iceabilities.add(a.name());
        if (a == StockAbility.IceSpike)         iceabilities.add(a.name());
        if (a == StockAbility.IceBlast)         iceabilities.add(a.name());
        if (a == StockAbility.PlantArmor)         plantabilities.add(a.name());
      }
    }
 else     if (StockAbility.isEarthbending(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        earthbendingabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.Tremorsense)         harmlessabilities.add(a.name());
        if (a == StockAbility.RaiseEarth)         shiftabilities.add(a.name());
        if (a == StockAbility.Collapse)         shiftabilities.add(a.name());
        if (a == StockAbility.EarthBlast)         shiftabilities.add(a.name());
        if (a == StockAbility.Shockwave)         shiftabilities.add(a.name());
        if (a == StockAbility.EarthTunnel)         shiftabilities.add(a.name());
        if (a == StockAbility.EarthGrab)         shiftabilities.add(a.name());
        if (a == StockAbility.LavaFlow)         shiftabilities.add(a.name());
        if (a == StockAbility.MetalClips)         shiftabilities.add(a.name());
        if (a == StockAbility.EarthSmash)         shiftabilities.add(a.name());
        if (a == StockAbility.SandSpout)         shiftabilities.add(a.name());
        if (a == StockAbility.MetalClips)         subabilities.add(a.name());
        if (a == StockAbility.Extraction)         subabilities.add(a.name());
        if (a == StockAbility.LavaFlow)         subabilities.add(a.name());
        if (a == StockAbility.SandSpout)         subabilities.add(a.name());
        if (a == StockAbility.MetalClips)         metalabilities.add(a.name());
        if (a == StockAbility.Extraction)         metalabilities.add(a.name());
        if (a == StockAbility.LavaFlow)         lavaabilities.add(a.name());
        if (a == StockAbility.SandSpout)         sandabilities.add(a.name());
      }
    }
 else     if (StockAbility.isFirebending(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        firebendingabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.Illumination)         harmlessabilities.add(a.name());
        if (a == StockAbility.Blaze)         igniteabilities.add(a.name());
        if (a == StockAbility.FireBlast)         explodeabilities.add(a.name());
        if (a == StockAbility.Lightning)         explodeabilities.add(a.name());
        if (a == StockAbility.Combustion)         explodeabilities.add(a.name());
        if (a == StockAbility.HeatControl)         shiftabilities.add(a.name());
        if (a == StockAbility.Lightning)         shiftabilities.add(a.name());
        if (a == StockAbility.FireBlast)         shiftabilities.add(a.name());
        if (a == StockAbility.Blaze)         shiftabilities.add(a.name());
        if (a == StockAbility.FireBurst)         shiftabilities.add(a.name());
        if (a == StockAbility.Lightning)         subabilities.add(a.name());
        if (a == StockAbility.Combustion)         subabilities.add(a.name());
        if (a == StockAbility.Lightning)         lightningabilities.add(a.name());
        if (a == StockAbility.Combustion)         combustionabilities.add(a.name());
      }
    }
 else     if (StockAbility.isChiBlocking(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        chiabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.HighJump)         harmlessabilities.add(a.name());
      }
    }
 else {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
      }
    }
  }
  for (  AbilityModule ab : ability) {
    try {
      boolean succes=true;
      for (      String enabledAbility : abilities) {
        if (enabledAbility.equalsIgnoreCase(ab.getName())) {
          succes=false;
        }
      }
      if (!succes)       continue;
      ab.onThisLoad();
      abilities.add(ab.getName());
      for (      StockAbility a : StockAbility.values()) {
        if (a.name().equalsIgnoreCase(ab.getName())) {
          disabledStockAbilities.add(a.name());
        }
      }
      if (ab.getElement() == Element.Air.toString())       airbendingabilities.add(ab.getName());
      if (ab.getElement() == Element.Water.toString())       waterbendingabilities.add(ab.getName());
      if (ab.getElement() == Element.Earth.toString())       earthbendingabilities.add(ab.getName());
      if (ab.getElement() == Element.Fire.toString())       firebendingabilities.add(ab.getName());
      if (ab.getElement() == Element.Chi.toString())       chiabilities.add(ab.getName());
      if (ab.isShiftAbility())       shiftabilities.add(ab.getName());
      if (ab.isHarmlessAbility())       harmlessabilities.add(ab.getName());
      if (ab.getSubElement() != null) {
        subabilities.add(ab.getName());
switch (ab.getSubElement()) {
case Bloodbending:
          bloodabilities.add(ab.getName());
        break;
case Combustion:
      combustionabilities.add(ab.getName());
    break;
case Flight:
  flightabilities.add(ab.getName());
break;
case Healing:
healingabilities.add(ab.getName());
break;
case Icebending:
iceabilities.add(ab.getName());
break;
case Lavabending:
lavaabilities.add(ab.getName());
break;
case Lightning:
lightningabilities.add(ab.getName());
break;
case Metalbending:
metalabilities.add(ab.getName());
break;
case Plantbending:
plantabilities.add(ab.getName());
break;
case Sandbending:
sandabilities.add(ab.getName());
break;
case SpiritualProjection:
spiritualprojectionabilities.add(ab.getName());
break;
}
}
descriptions.put(ab.getName(),ab.getDescription());
authors.put(ab.getName(),ab.getAuthor());
}
 catch (Exception e) {
ProjectKorra.log.warning("String_Node_Str" + ab.getName() + "String_Node_Str");
e.printStackTrace();
ab.stop();
abilities.remove(ab.getName());
final AbilityModule skill=ab;
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin,new Runnable(){
public void run(){
ability.remove(skill);
}
}
,10);
continue;
}
}
for (Field field : this.getClass().getDeclaredFields()) {
if (List.class.isAssignableFrom(field.getType())) {
try {
Collections.sort((List)field.get(this));
}
 catch (Exception e) {
e.printStackTrace();
}
}
}
}

Fixed version (ground truth):
private void fill(){
  for (  StockAbility a : StockAbility.values()) {
    if (StockAbility.isAirbending(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        airbendingabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.AirScooter)         harmlessabilities.add(a.name());
        if (a == StockAbility.AirSpout)         harmlessabilities.add(a.name());
        if (a == StockAbility.Tornado)         shiftabilities.add(a.name());
        if (a == StockAbility.AirSuction)         shiftabilities.add(a.name());
        if (a == StockAbility.AirSwipe)         shiftabilities.add(a.name());
        if (a == StockAbility.AirBlast)         shiftabilities.add(a.name());
        if (a == StockAbility.AirBurst)         shiftabilities.add(a.name());
        if (a == StockAbility.AirShield)         shiftabilities.add(a.name());
        if (a == StockAbility.Flight)         shiftabilities.add(a.name());
        if (a == StockAbility.Flight)         subabilities.add(a.name());
        if (a == StockAbility.Flight)         flightabilities.add(a.name());
      }
    }
 else     if (StockAbility.isWaterbending(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        waterbendingabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.WaterSpout)         harmlessabilities.add(a.name());
        if (a == StockAbility.HealingWaters)         harmlessabilities.add(a.name());
        if (a == StockAbility.Surge)         shiftabilities.add(a.name());
        if (a == StockAbility.Bloodbending)         shiftabilities.add(a.name());
        if (a == StockAbility.PhaseChange)         shiftabilities.add(a.name());
        if (a == StockAbility.HealingWaters)         shiftabilities.add(a.name());
        if (a == StockAbility.OctopusForm)         shiftabilities.add(a.name());
        if (a == StockAbility.Torrent)         shiftabilities.add(a.name());
        if (a == StockAbility.WaterManipulation)         shiftabilities.add(a.name());
        if (a == StockAbility.IceSpike)         shiftabilities.add(a.name());
        if (a == StockAbility.IceBlast)         shiftabilities.add(a.name());
        if (a == StockAbility.WaterArms)         shiftabilities.add(a.name());
        if (a == StockAbility.HealingWaters)         subabilities.add(a.name());
        if (a == StockAbility.Bloodbending)         subabilities.add(a.name());
        if (a == StockAbility.PhaseChange)         subabilities.add(a.name());
        if (a == StockAbility.IceSpike)         subabilities.add(a.name());
        if (a == StockAbility.IceBlast)         subabilities.add(a.name());
        if (a == StockAbility.PlantArmor)         subabilities.add(a.name());
        if (a == StockAbility.HealingWaters)         healingabilities.add(a.name());
        if (a == StockAbility.Bloodbending)         bloodabilities.add(a.name());
        if (a == StockAbility.PhaseChange)         iceabilities.add(a.name());
        if (a == StockAbility.IceSpike)         iceabilities.add(a.name());
        if (a == StockAbility.IceBlast)         iceabilities.add(a.name());
        if (a == StockAbility.PlantArmor)         plantabilities.add(a.name());
      }
    }
 else     if (StockAbility.isEarthbending(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        earthbendingabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.Tremorsense)         harmlessabilities.add(a.name());
        if (a == StockAbility.RaiseEarth)         shiftabilities.add(a.name());
        if (a == StockAbility.Collapse)         shiftabilities.add(a.name());
        if (a == StockAbility.EarthBlast)         shiftabilities.add(a.name());
        if (a == StockAbility.Shockwave)         shiftabilities.add(a.name());
        if (a == StockAbility.EarthTunnel)         shiftabilities.add(a.name());
        if (a == StockAbility.EarthGrab)         shiftabilities.add(a.name());
        if (a == StockAbility.LavaFlow)         shiftabilities.add(a.name());
        if (a == StockAbility.MetalClips)         shiftabilities.add(a.name());
        if (a == StockAbility.EarthSmash)         shiftabilities.add(a.name());
        if (a == StockAbility.SandSpout)         shiftabilities.add(a.name());
        if (a == StockAbility.MetalClips)         subabilities.add(a.name());
        if (a == StockAbility.Extraction)         subabilities.add(a.name());
        if (a == StockAbility.LavaFlow)         subabilities.add(a.name());
        if (a == StockAbility.SandSpout)         subabilities.add(a.name());
        if (a == StockAbility.MetalClips)         metalabilities.add(a.name());
        if (a == StockAbility.Extraction)         metalabilities.add(a.name());
        if (a == StockAbility.LavaFlow)         lavaabilities.add(a.name());
        if (a == StockAbility.SandSpout)         sandabilities.add(a.name());
      }
    }
 else     if (StockAbility.isFirebending(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        firebendingabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.Illumination)         harmlessabilities.add(a.name());
        if (a == StockAbility.Blaze)         igniteabilities.add(a.name());
        if (a == StockAbility.FireBlast)         explodeabilities.add(a.name());
        if (a == StockAbility.Lightning)         explodeabilities.add(a.name());
        if (a == StockAbility.Combustion)         explodeabilities.add(a.name());
        if (a == StockAbility.HeatControl)         shiftabilities.add(a.name());
        if (a == StockAbility.Lightning)         shiftabilities.add(a.name());
        if (a == StockAbility.FireBlast)         shiftabilities.add(a.name());
        if (a == StockAbility.Blaze)         shiftabilities.add(a.name());
        if (a == StockAbility.FireBurst)         shiftabilities.add(a.name());
        if (a == StockAbility.Lightning)         subabilities.add(a.name());
        if (a == StockAbility.Combustion)         subabilities.add(a.name());
        if (a == StockAbility.Lightning)         lightningabilities.add(a.name());
        if (a == StockAbility.Combustion)         combustionabilities.add(a.name());
      }
    }
 else     if (StockAbility.isChiBlocking(a)) {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        chiabilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
        if (a == StockAbility.HighJump)         harmlessabilities.add(a.name());
      }
    }
 else {
      if (ProjectKorra.plugin.getConfig().getBoolean("String_Node_Str" + a.name() + "String_Node_Str")) {
        abilities.add(a.name());
        descriptions.put(a.name(),ProjectKorra.plugin.getConfig().getString("String_Node_Str" + a.name() + "String_Node_Str"));
      }
    }
  }
  for (  AbilityModule ab : ability) {
    try {
      boolean succes=true;
      for (      String enabledAbility : abilities) {
        if (enabledAbility.equalsIgnoreCase(ab.getName())) {
          succes=false;
        }
      }
      if (!succes)       continue;
      ab.onThisLoad();
      abilities.add(ab.getName());
      for (      StockAbility a : StockAbility.values()) {
        if (a.name().equalsIgnoreCase(ab.getName())) {
          disabledStockAbilities.add(a.name());
        }
      }
      if (ab.getElement() == Element.Air.toString())       airbendingabilities.add(ab.getName());
      if (ab.getElement() == Element.Water.toString())       waterbendingabilities.add(ab.getName());
      if (ab.getElement() == Element.Earth.toString())       earthbendingabilities.add(ab.getName());
      if (ab.getElement() == Element.Fire.toString())       firebendingabilities.add(ab.getName());
      if (ab.getElement() == Element.Chi.toString())       chiabilities.add(ab.getName());
      if (ab.isShiftAbility())       shiftabilities.add(ab.getName());
      if (ab.isHarmlessAbility())       harmlessabilities.add(ab.getName());
      if (ab.getSubElement() != null) {
        subabilities.add(ab.getName());
switch (ab.getSubElement()) {
case Bloodbending:
          bloodabilities.add(ab.getName());
        break;
case Combustion:
      combustionabilities.add(ab.getName());
    break;
case Flight:
  flightabilities.add(ab.getName());
break;
case Healing:
healingabilities.add(ab.getName());
break;
case Icebending:
iceabilities.add(ab.getName());
break;
case Lavabending:
lavaabilities.add(ab.getName());
break;
case Lightning:
lightningabilities.add(ab.getName());
break;
case Metalbending:
metalabilities.add(ab.getName());
break;
case Plantbending:
plantabilities.add(ab.getName());
break;
case Sandbending:
sandabilities.add(ab.getName());
break;
case SpiritualProjection:
spiritualprojectionabilities.add(ab.getName());
break;
}
}
descriptions.put(ab.getName(),ab.getDescription());
authors.put(ab.getName(),ab.getAuthor());
}
 catch (Exception|Error e) {
ProjectKorra.log.warning("String_Node_Str" + ab.getName() + "String_Node_Str");
e.printStackTrace();
ab.stop();
abilities.remove(ab.getName());
final AbilityModule skill=ab;
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin,new Runnable(){
public void run(){
ability.remove(skill);
}
}
,10);
continue;
}
}
for (Field field : this.getClass().getDeclaredFields()) {
if (List.class.isAssignableFrom(field.getType())) {
try {
Collections.sort((List)field.get(this));
}
 catch (Exception e) {
e.printStackTrace();
}
}
}
}