Program: 58084
Project: 58084
Buggy source:
public static void runTask(){
  ExpireManager.task=Bukkit.getScheduler().scheduleSyncRepeatingTask(PlotMain.getMain(),new Runnable(){
    @Override public void run(){
      System.out.print("String_Node_Str");
      for (      String world : PlotMain.getPlotWorldsString()) {
        System.out.print("String_Node_Str");
        if (!ExpireManager.updatingPlots.contains(world)) {
          ExpireManager.updatingPlots.put(world,false);
        }
        Boolean updating=ExpireManager.updatingPlots.get(world);
        if (updating) {
          System.out.print("String_Node_Str");
          return;
        }
        ArrayList<Plot> plots=expiredPlots.get(world);
        if (plots == null || plots.size() == 0) {
          updateExpired(world);
          return;
        }
        Plot plot=plots.get(0);
        if (plot.owner != null) {
          if (UUIDHandler.uuidWrapper.getPlayer(plot.owner) != null) {
            expiredPlots.get(world).remove(0);
            return;
          }
        }
        if (!isExpired(plot.owner)) {
          expiredPlots.get(world).remove(0);
          return;
        }
        final PlotDeleteEvent event=new PlotDeleteEvent(world,plot.id);
        Bukkit.getServer().getPluginManager().callEvent(event);
        if (event.isCancelled()) {
          event.setCancelled(true);
          return;
        }
        final World worldobj=Bukkit.getWorld(world);
        final PlotManager manager=PlotMain.getPlotManager(world);
        manager.clearPlot(worldobj,plot,false);
        PlotHelper.clear(worldobj,plot,true);
        PlotHelper.removeSign(worldobj,plot);
        DBFunc.delete(world,plot);
        PlotMain.removePlot(world,plot.id,true);
        expiredPlots.get(world).remove(0);
        PlotMain.sendConsoleSenderMessage("String_Node_Str" + plot.id);
        if ((Math.abs(plot.id.x) < Math.abs(Auto.lastPlot.x)) && (Math.abs(plot.id.y) < Math.abs(Auto.lastPlot.y))) {
          Auto.lastPlot=plot.id;
        }
        return;
      }
    }
  }
,1,20);
}

Fixed version (ground truth):
public static void runTask(){
  ExpireManager.task=Bukkit.getScheduler().scheduleSyncRepeatingTask(PlotMain.getMain(),new Runnable(){
    @Override public void run(){
      for (      String world : PlotMain.getPlotWorldsString()) {
        if (!ExpireManager.updatingPlots.contains(world)) {
          ExpireManager.updatingPlots.put(world,false);
        }
        Boolean updating=ExpireManager.updatingPlots.get(world);
        if (updating) {
          return;
        }
        ArrayList<Plot> plots=expiredPlots.get(world);
        if (plots == null || plots.size() == 0) {
          updateExpired(world);
          return;
        }
        Plot plot=plots.get(0);
        if (plot.owner != null) {
          if (UUIDHandler.uuidWrapper.getPlayer(plot.owner) != null) {
            expiredPlots.get(world).remove(0);
            return;
          }
        }
        if (!isExpired(plot.owner)) {
          expiredPlots.get(world).remove(0);
          return;
        }
        final PlotDeleteEvent event=new PlotDeleteEvent(world,plot.id);
        Bukkit.getServer().getPluginManager().callEvent(event);
        if (event.isCancelled()) {
          event.setCancelled(true);
          return;
        }
        final World worldobj=Bukkit.getWorld(world);
        final PlotManager manager=PlotMain.getPlotManager(world);
        manager.clearPlot(worldobj,plot,false);
        PlotHelper.clear(worldobj,plot,true);
        PlotHelper.removeSign(worldobj,plot);
        DBFunc.delete(world,plot);
        PlotMain.removePlot(world,plot.id,true);
        expiredPlots.get(world).remove(0);
        PlotMain.sendConsoleSenderMessage("String_Node_Str" + plot.id);
        if ((Math.abs(plot.id.x) < Math.abs(Auto.lastPlot.x)) && (Math.abs(plot.id.y) < Math.abs(Auto.lastPlot.y))) {
          Auto.lastPlot=plot.id;
        }
        return;
      }
    }
  }
,1,20);
}