[Demonstration 1]

[Buggy Method]
@SuppressWarnings("unchecked")
public List<User> getUser() {
    try {
        Session session = this.sessionFactory.getCurrentSession();
        Query query = session.createQuery("from User");
        List<User> userList = (List<User>) query.list();
        for (User user : userList) {
            logger.debug("User List:" + user.getEmail());
        }
        return userList;
    } catch (HibernateException e) {
        logger.error("Couldn't list users: " + e);
    }
    return null;
}

[Buggy Hunk]
} catch (HibernateException e) {

[Patch]
} catch (NullPointerException e) {

[Demonstration 2]

[Buggy Method]
@Test(expected = IllegalStateException.class)
public void testAddBooking0Empty() {
    testee.addBooking(ACTIVITY1, null);
}

[Buggy Hunk]
testee.addBooking(ACTIVITY1, null);

[Patch]
testee.addBooking(ACTIVITY1);

[Demonstration 3]

[Buggy Method]
private void getPhotos(JSONArray args, final CallbackContext callbackContext) throws JSONException {
    final CordovaWebView webView = this.webView;
    cordova.getThreadPool().execute(new Runnable() {

        @Override
        public void run() {
            // We discover every video / photo stored on the phone and ask the _data field, which is the full
            // path of the file
            discover(MediaStore.Video.Media.query(webView.getContext().getContentResolver(), MediaStore.Video.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.Video.Media.DATA }, null, null, MediaStore.Video.Media.DATE_MODIFIED + " ASC"));
            discover(MediaStore.Images.Media.query(webView.getContext().getContentResolver(), MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] { MediaStore.Images.Media.DATA }, null, null, MediaStore.Images.Media.DATE_MODIFIED + " ASC"));
        }

        public discover(Cursor cursor) {
            while (cursor.moveToNext()) {
                for (int i = 0; i < cursor.getColumnCount(); i++) {
                    if (cursor.getColumnName(i).equals("_data")) {
                        Log.d(TAG, "Discovering " + cursor.getString(i));
                        // The callbackContext.success() method can only be called once
                        PluginResult result = new PluginResult(PluginResult.Status.OK, cursor.getString(i));
                        result.setKeepCallback(true);
                        callbackContext.sendPluginResult(result);
                    }
                }
            }
        }
    });
}

[Buggy Hunk]
public discover(Cursor cursor) {

[Patch]
private void discover(Cursor cursor) {