Program: 7130
Project: 7130
Buggy source:
/** 
 * Adds mouseListeners in View.
 */
private void addMouseListeners(){
  view.addCanvasMouseListener(new MouseAdapter(){
    private Point a_mouseZoom=null;
    private Point b_mouseZoom=null;
    @Override public void mousePressed(    MouseEvent e){
      if (e == null)       return;
      a_mouseZoom=e.getPoint();
      PointMethods.pointOutOfBounds(a_mouseZoom,view);
    }
    @Override public void mouseReleased(    MouseEvent e){
      if (a_mouseZoom == null || e == null)       return;
      b_mouseZoom=e.getPoint();
      PointMethods.pointOutOfBounds(b_mouseZoom,view);
      if (Math.abs(b_mouseZoom.x - a_mouseZoom.x) < view.getCanvasWidth() / 100 || Math.abs(b_mouseZoom.y - a_mouseZoom.y) < view.getCanvasHeight() / 100) {
        return;
      }
      model.updateBounds(RectangleMethods.mouseZoom(a_mouseZoom,b_mouseZoom,model,view));
      repaint();
    }
    @Override public void mouseClicked(    MouseEvent e){
      pins.add(PointMethods.pixelToUTM(e.getPoint(),model,view));
      if (pins.size() > 1) {
        for (int i=0; i < pins.size() - 1; i++) {
          try {
            model.findPath(model.getClosestNode(pins.get(i)),model.getClosestNode(pins.get(i + 1)));
          }
 catch (          NothingCloseException e1) {
            view.displayDialog("String_Node_Str","String_Node_Str");
          }
catch (          NoPathException e2) {
            view.displayDialog("String_Node_Str","String_Node_Str");
          }
        }
      }
      repaint();
    }
    @Override public void mouseMoved(    MouseEvent e){
      Point2D.Double p=PointMethods.pixelToUTM(e.getPoint(),model,view);
      String roadName=model.getClosestRoadname(p);
      view.setLabel(roadName);
    }
  }
);
}

Fixed version (ground truth):
/** 
 * Adds mouseListeners in View.
 */
private void addMouseListeners(){
  view.addCanvasMouseListener(new MouseAdapter(){
    private Point a_mouseZoom=null;
    private Point b_mouseZoom=null;
    @Override public void mousePressed(    MouseEvent e){
      if (e == null)       return;
      a_mouseZoom=e.getPoint();
      PointMethods.pointOutOfBounds(a_mouseZoom,view);
    }
    @Override public void mouseReleased(    MouseEvent e){
      if (a_mouseZoom == null || e == null)       return;
      b_mouseZoom=e.getPoint();
      PointMethods.pointOutOfBounds(b_mouseZoom,view);
      if (Math.abs(b_mouseZoom.x - a_mouseZoom.x) < view.getCanvasWidth() / 100 || Math.abs(b_mouseZoom.y - a_mouseZoom.y) < view.getCanvasHeight() / 100) {
        return;
      }
      model.updateBounds(RectangleMethods.mouseZoom(a_mouseZoom,b_mouseZoom,model,view));
      repaint();
    }
    @Override public void mouseClicked(    MouseEvent e){
      pins.add(PointMethods.pixelToUTM(e.getPoint(),model,view));
      if (pins.size() > 1) {
        try {
          model.findPath(model.getClosestNode(pins.get(pins.size() - 2)),model.getClosestNode(pins.get(pins.size() - 1)));
        }
 catch (        NothingCloseException e1) {
          view.displayDialog("String_Node_Str","String_Node_Str");
        }
catch (        NoPathException e2) {
          view.displayDialog("String_Node_Str","String_Node_Str");
        }
      }
      repaint();
    }
    @Override public void mouseMoved(    MouseEvent e){
      Point2D.Double p=PointMethods.pixelToUTM(e.getPoint(),model,view);
      String roadName=model.getClosestRoadname(p);
      view.setLabel(roadName);
    }
  }
);
}