Program: 86059
Project: 86059
Buggy source:
public void startRaw(final Arena a){
  currentarena.getArena().setArenaState(ArenaState.INGAME);
  startedIngameCountdown=false;
  Util.updateSign(plugin,a);
  boolean send_game_started_msg=plugin.getConfig().getBoolean("String_Node_Str");
  for (  String p_ : a.getAllPlayers()) {
    try {
      if (!pli.global_lost.containsKey(p_)) {
        if (plugin.getConfig().getBoolean("String_Node_Str")) {
          if (!pli.getClassesHandler().hasClass(p_)) {
            pli.getClassesHandler().setClass("String_Node_Str",p_,false);
          }
          pli.getClassesHandler().getClass(p_);
        }
 else {
          Util.clearInv(Bukkit.getPlayer(p_));
          pli.getClassesHandler().getClass(p_);
        }
        Bukkit.getPlayer(p_).setFlying(false);
        Bukkit.getPlayer(p_).setAllowFlight(false);
      }
    }
 catch (    Exception e) {
      System.out.println("String_Node_Str" + e.getMessage());
    }
    Player p=Bukkit.getPlayer(p_);
    p.setWalkSpeed(0.2F);
    p.setFoodLevel(20);
    p.removePotionEffect(PotionEffectType.JUMP);
    if (send_game_started_msg) {
      p.sendMessage(pli.getMessagesConfig().game_started);
    }
  }
  if (plugin.getConfig().getBoolean("String_Node_Str")) {
    Bukkit.setWhitelist(true);
  }
  started=true;
  started();
  try {
    Bukkit.getScheduler().cancelTask(currenttaskid);
  }
 catch (  Exception e) {
  }
  Bukkit.getScheduler().runTaskLater(plugin,new Runnable(){
    public void run(){
      a.stop();
    }
  }
,20L * 60L * (long)plugin.getConfig().getDouble("String_Node_Str"));
}

Fixed version (ground truth):
public void startRaw(final Arena a){
  currentarena.getArena().setArenaState(ArenaState.INGAME);
  startedIngameCountdown=false;
  Util.updateSign(plugin,a);
  boolean send_game_started_msg=plugin.getConfig().getBoolean("String_Node_Str");
  for (  String p_ : a.getAllPlayers()) {
    try {
      if (!pli.global_lost.containsKey(p_)) {
        if (plugin.getConfig().getBoolean("String_Node_Str")) {
          if (!pli.getClassesHandler().hasClass(p_)) {
            pli.getClassesHandler().setClass("String_Node_Str",p_,false);
          }
          pli.getClassesHandler().getClass(p_);
        }
 else {
          Util.clearInv(Bukkit.getPlayer(p_));
          pli.getClassesHandler().getClass(p_);
        }
        Bukkit.getPlayer(p_).setFlying(false);
        Bukkit.getPlayer(p_).setAllowFlight(false);
      }
    }
 catch (    Exception e) {
      System.out.println("String_Node_Str" + e.getMessage());
    }
    Player p=Bukkit.getPlayer(p_);
    p.setWalkSpeed(0.2F);
    p.setFoodLevel(20);
    p.removePotionEffect(PotionEffectType.JUMP);
    if (send_game_started_msg) {
      p.sendMessage(pli.getMessagesConfig().game_started);
    }
  }
  if (plugin.getConfig().getBoolean("String_Node_Str")) {
    Bukkit.setWhitelist(true);
  }
  spectator_task=Bukkit.getScheduler().runTaskTimer(plugin,new Runnable(){
    public void run(){
      try {
        for (        String p_ : a.getAllPlayers()) {
          if (!pli.global_lost.containsKey(p_)) {
            continue;
          }
          Player p=Bukkit.getPlayer(p_);
          if (p != null) {
            for (            String p__ : a.getAllPlayers()) {
              if (p_ != p__) {
                Player p2=Bukkit.getPlayer(p__);
                if ((p.getLocation().getBlockX() - p2.getLocation().getBlockX() < 5) && p.getLocation().getBlockZ() - p2.getLocation().getBlockZ() < 5 && p.getLocation().getBlockY() - p2.getLocation().getBlockY() < 5) {
                  Vector direction=p2.getLocation().add(0D,-0.5D,0D).toVector().subtract(p.getLocation().toVector()).normalize().multiply(-1.5D);
                  p.setVelocity(direction);
                  if (p.isInsideVehicle()) {
                    p.getVehicle().setVelocity(direction.multiply(2D));
                  }
                  break;
                }
              }
            }
          }
        }
      }
 catch (      Exception e) {
        if (spectator_task != null) {
          spectator_task.cancel();
        }
      }
    }
  }
,20L,20L);
  started=true;
  started();
  try {
    Bukkit.getScheduler().cancelTask(currenttaskid);
  }
 catch (  Exception e) {
  }
  Bukkit.getScheduler().runTaskLater(plugin,new Runnable(){
    public void run(){
      a.stop();
    }
  }
,20L * 60L * (long)plugin.getConfig().getDouble("String_Node_Str"));
}