[Demonstration 1]

[Buggy Method]
public void enableTray(boolean enable) {
    if (enable && SystemTray.isSupported()) {
        frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
        SystemTray tray = SystemTray.getSystemTray();
        if (trayIcon == null) {
            // Menu
            PopupMenu menu = new PopupMenu();
            MenuItem item = new MenuItem("Open");
            item.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    frame.setVisible(true);
                }
            });
            menu.add(item);
            menu.addSeparator();
            item = new MenuItem("Exit");
            item.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    System.exit(0);
                }
            });
            menu.add(item);
            // Icon
            trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().getImage(defaultIcon), "Console", menu);
            trayIcon.setImageAutoSize(true);
            trayIcon.addMouseListener(new MouseListener() {

                public void mouseClicked(MouseEvent e) {
                    if (e.getClickCount() == 2)
                        frame.setVisible(true);
                }

                public void mouseEntered(MouseEvent e) {
                }

                public void mouseExited(MouseEvent e) {
                }

                public void mousePressed(MouseEvent e) {
                }

                public void mouseReleased(MouseEvent e) {
                }
            });
        }
        try {
            tray.add(trayIcon);
        } catch (AWTException e) {
            System.err.println("TrayIcon could not be added.");
        }
    } else {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        SystemTray.getSystemTray().remove(trayIcon);
    }
}

[Buggy Hunk]
Toolkit.getDefaultToolkit().getImage(defaultIcon),

[Patch]
Toolkit.getDefaultToolkit().getImage(DEFAULT_ICON),

[Demonstration 2]

[Buggy Method]
private void initAdvancedViewTab() {
    FXMLLoader loader = new FXMLLoader(AppMain.class.getResource("/fxml/advanced.fxml"));
    try {
        advancedTab.setContent(loader.load());
        advancedTabController = loader.getController();
        advancedTabController.initController(model);
    } catch (IOException e) {
        logger.fatal("Error when loading advanced view FXML file");
    }
}

[Buggy Hunk]
advancedTabController = loader.getController();

[Patch]
AdvancedTabController advancedTabController = loader.getController();

[Demonstration 3]

[Buggy Method]
public static Result service(String ownerName, String projectName, String service, boolean isAdvertise) throws IOException, UnsupportedOperationException, ServletException {
    if (!isSupportedService(service)) {
        return forbidden(String.format("Unsupported service: '%s'", service));
    }
    Project project = Project.findByOwnerAndProjectName(ownerName, projectName);
    if (project == null) {
        return notFound();
    }
    models.User user = UserApp.currentUser();
    if (!isAllowed(project, service)) {
        if (user.isAnonymous()) {
            return BasicAuthAction.unauthorized(response());
        } else {
            // If you want the Git client showing your custom message to
            // the user, the Content-Type should be exact "text/plain"
            // without any parameter. For more details, see the code at
            // https://github.com/git/git/commit/426e70d4a11ce3b4f70636d57c6a0ab16ae08a00#diff-eea0ad565ec5903a11b6023755d491cfR154
            response().setHeader("Content-Type", "text/plain");
            return forbidden(String.format("'%s' has no permission to '%s/%s'.", user.name, ownerName, projectName));
        }
    }
    if (isAdvertise) {
        return ok(RepositoryService.gitAdvertise(project, service, response()));
    } else {
        if (request().body().isMaxSizeExceeded()) {
            return status(REQUEST_ENTITY_TOO_LARGE);
        } else {
            user.visits(project);
            return ok(RepositoryService.gitRpc(project, service, request(), response()));
        }
    }
}

[Buggy Hunk]
user.name, ownerName, projectName));

[Patch]
user.loginId, ownerName, projectName));