Program: 86047
Project: 86047
Buggy source:
public void reset(){
  System.out.println(changed.size() + "String_Node_Str");
  final ArrayList<SmartArenaBlock> failedblocks=new ArrayList<SmartArenaBlock>();
  Bukkit.getScheduler().runTask(a.plugin,new Runnable(){
    public void run(){
      int failcount=0;
      for (      final SmartArenaBlock ablock : changed.values()) {
        try {
          final Block b_=ablock.getBlock().getWorld().getBlockAt(ablock.getBlock().getLocation());
          if (b_.getType() == Material.FURNACE) {
            ((Furnace)b_.getState()).getInventory().clear();
            ((Furnace)b_.getState()).update();
          }
          if (b_.getType() == Material.CHEST) {
            ((Chest)b_.getState()).getBlockInventory().clear();
            ((Chest)b_.getState()).update();
          }
          if (!b_.getType().toString().equalsIgnoreCase(ablock.getMaterial().toString()) || b_.getData() != ablock.getData()) {
            b_.setType(ablock.getMaterial());
            b_.setData(ablock.getData());
          }
          if (b_.getType() == Material.CHEST) {
            ((Chest)b_.getState()).getBlockInventory().clear();
            ((Chest)b_.getState()).update();
            HashMap<Integer,ItemStack> chestinv=ablock.getNewInventory();
            for (            Integer i : chestinv.keySet()) {
              ItemStack item=chestinv.get(i);
              if (item != null) {
                ((Chest)b_.getState()).getBlockInventory().setItem(i,item);
              }
            }
            ((Chest)b_.getState()).update();
          }
          if (b_.getType() == Material.WALL_SIGN || b_.getType() == Material.SIGN_POST) {
            Sign sign=(Sign)b_.getState();
            if (sign != null) {
              int i=0;
              for (              String line : ablock.getSignLines()) {
                sign.setLine(i,line);
                i++;
                if (i > 3) {
                  break;
                }
              }
              sign.update();
            }
          }
        }
 catch (        IllegalStateException e) {
          failcount+=1;
          failedblocks.add(ablock);
        }
      }
      changed.clear();
      a.setArenaState(ArenaState.JOIN);
      Bukkit.getScheduler().runTask(a.plugin,new Runnable(){
        public void run(){
          a.setArenaState(ArenaState.JOIN);
          Util.updateSign(a.plugin,a);
        }
      }
);
      System.out.println(failcount + "String_Node_Str");
      Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(MinigamesAPI.getAPI(),new Runnable(){
        public void run(){
          changed.clear();
          for (          SmartArenaBlock ablock : failedblocks) {
            Block b_=ablock.getBlock().getWorld().getBlockAt(ablock.getBlock().getLocation());
            if (!b_.getType().toString().equalsIgnoreCase(ablock.getMaterial().toString())) {
              b_.setType(ablock.getMaterial());
              b_.setData(ablock.getData());
            }
            if (b_.getType() == Material.CHEST) {
              b_.setType(ablock.getMaterial());
              b_.setData(ablock.getData());
              ((Chest)b_.getState()).getInventory().setContents(ablock.getInventory());
              ((Chest)b_.getState()).update();
            }
          }
        }
      }
,40L);
      System.out.println("String_Node_Str");
    }
  }
);
}

Fixed version (ground truth):
public void reset(){
  System.out.println(changed.size() + "String_Node_Str");
  final ArrayList<SmartArenaBlock> failedblocks=new ArrayList<SmartArenaBlock>();
  Bukkit.getScheduler().runTask(a.plugin,new Runnable(){
    public void run(){
      int failcount=0;
      for (      final SmartArenaBlock ablock : changed.values()) {
        try {
          resetSmartResetBlock(ablock);
        }
 catch (        IllegalStateException e) {
          failcount+=1;
          failedblocks.add(ablock);
        }
      }
      changed.clear();
      a.setArenaState(ArenaState.JOIN);
      Bukkit.getScheduler().runTask(a.plugin,new Runnable(){
        public void run(){
          a.setArenaState(ArenaState.JOIN);
          Util.updateSign(a.plugin,a);
        }
      }
);
      System.out.println(failcount + "String_Node_Str");
      Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(MinigamesAPI.getAPI(),new Runnable(){
        public void run(){
          changed.clear();
          for (          SmartArenaBlock ablock : failedblocks) {
            Block b_=ablock.getBlock().getWorld().getBlockAt(ablock.getBlock().getLocation());
            if (!b_.getType().toString().equalsIgnoreCase(ablock.getMaterial().toString())) {
              b_.setType(ablock.getMaterial());
              b_.setData(ablock.getData());
            }
            if (b_.getType() == Material.CHEST) {
              b_.setType(ablock.getMaterial());
              b_.setData(ablock.getData());
              ((Chest)b_.getState()).getInventory().setContents(ablock.getInventory());
              ((Chest)b_.getState()).update();
            }
          }
        }
      }
,40L);
      System.out.println("String_Node_Str");
    }
  }
);
}