Program: 7655
Project: 7655
Buggy source:
/** 
 * EventHandler for left-clicking a compass.
 */
@EventHandler(priority=EventPriority.HIGHEST) public void onCompassUse(PlayerInteractEvent event){
  Action action=event.getAction();
  if (action == Action.RIGHT_CLICK_BLOCK) {
    Poi poi=_poiManager.getPoiAt(event.getClickedBlock().getLocation());
    if (poi != null) {
      event.getPlayer().sendMessage("String_Node_Str" + poi.getName() + "String_Node_Str"+ poi.getOwner()+ "String_Node_Str");
      return;
    }
  }
  if (event.hasItem() && event.getItem().getType() == Material.COMPASS && (action == Action.LEFT_CLICK_AIR || action == Action.RIGHT_CLICK_AIR)) {
    final Player player=event.getPlayer();
    if (_pendingSummaries.containsKey(player)) {
      BukkitTask pendingSummary=_pendingSummaries.get(player);
      pendingSummary.cancel();
      _pendingSummaries.remove(player);
      event.setUseInteractedBlock(Event.Result.DENY);
      Poi poi=_findNextPoi(player);
      if (poi == null) {
        _poiManager.unselectPoi(player);
      }
 else {
        _poiManager.selectPOI(poi,player);
      }
      this._setCompass(player);
    }
 else {
      _pendingSummaries.put(player,player.getServer().getScheduler().runTaskLater(_plugin,new Runnable(){
        @Override public void run(){
          Poi summaryPoi=_poiManager.getSelectedPoi(player);
          if (summaryPoi == null && player.getCompassTarget() != null) {
            player.sendMessage("String_Node_Str");
            player.sendMessage(ChatColor.YELLOW + "String_Node_Str");
            player.sendMessage(PointsOfInterest.getDirections(player.getLocation().toVector(),player.getCompassTarget().toVector(),ChatColor.WHITE));
          }
 else {
            player.sendMessage("String_Node_Str");
            player.sendMessage(ChatColor.YELLOW + "String_Node_Str");
            SummaryAction.sendSummary(player,summaryPoi);
          }
          _pendingSummaries.remove(player);
        }
      }
,10));
    }
  }
}

Fixed version (ground truth):
/** 
 * EventHandler for left-clicking a compass.
 */
@EventHandler(priority=EventPriority.HIGHEST) public void onCompassUse(PlayerInteractEvent event){
  Action action=event.getAction();
  if (action == Action.RIGHT_CLICK_BLOCK) {
    Poi poi=_poiManager.getPoiAt(event.getClickedBlock().getLocation());
    if (poi != null) {
      event.getPlayer().sendMessage("String_Node_Str" + poi.getName() + "String_Node_Str"+ poi.getOwner()+ "String_Node_Str");
      return;
    }
  }
  final Player player=event.getPlayer();
  if (!player.hasPermission("String_Node_Str")) {
    return;
  }
  if (event.hasItem() && event.getItem().getType() == Material.COMPASS && action == Action.RIGHT_CLICK_AIR) {
    if (_pendingSummaries.containsKey(player)) {
      BukkitTask pendingSummary=_pendingSummaries.get(player);
      pendingSummary.cancel();
      _pendingSummaries.remove(player);
      event.setUseInteractedBlock(Event.Result.DENY);
      Poi poi=_findNextPoi(player);
      if (poi == null) {
        _poiManager.unselectPoi(player);
      }
 else {
        _poiManager.selectPOI(poi,player);
      }
      this._setCompass(player);
    }
 else {
      _pendingSummaries.put(player,player.getServer().getScheduler().runTaskLater(_plugin,new Runnable(){
        @Override public void run(){
          Poi summaryPoi=_poiManager.getSelectedPoi(player);
          if (summaryPoi == null && player.getCompassTarget() != null) {
            player.sendMessage("String_Node_Str");
            player.sendMessage(ChatColor.YELLOW + "String_Node_Str");
            player.sendMessage(PointsOfInterest.getDirections(player.getLocation().toVector(),player.getCompassTarget().toVector(),ChatColor.WHITE));
          }
 else {
            player.sendMessage("String_Node_Str");
            player.sendMessage(ChatColor.YELLOW + "String_Node_Str");
            SummaryAction.sendSummary(player,summaryPoi);
          }
          _pendingSummaries.remove(player);
        }
      }
,10));
    }
  }
}