[Demonstration 1]

[Buggy Method]
private ErrorBuilder validateUser(User user, boolean newUser) {
    ErrorBuilder builder = new ErrorBuilder();
    //If the email isn't valid, things are broken
    if (!EMAIL_VALIDATION_REGEX.matcher(user.getEmail()).find()) {
        builder.invalidEmail();
        builder.statusCode(400);
        return builder;
    }
    if (user.getDisplayName() == null || user.getDisplayName().isEmpty()) {
        builder.withMessage("Invalid", "You must specify a display name");
        builder.statusCode(400);
        return builder;
    }
    if (user.getInformation() == null) {
        builder.withMessage("Invalid", "You must specify user information");
        builder.statusCode(400);
        return builder;
    }
    if (user.getInformation().getFirstName() == null || user.getInformation().getFirstName().isEmpty()) {
        builder.withMessage("Invalid", "You must specify a first name");
        builder.statusCode(400);
        return builder;
    }
    if (user.getInformation().getLastName() == null || user.getInformation().getLastName().isEmpty()) {
        builder.withMessage("Invalid", "You must specify a last name");
        builder.statusCode(400);
        return builder;
    }
    if (newUser) {
        DAOFactory javabase = DAOFactory.getInstance();
        UserDAO udao = javabase.getUserDAO();
        User duplicate = udao.getUserById(user.getEmail());
        if (duplicate != null) {
            builder.duplicateEmail();
            return builder;
        }
        VerificationCodeDAO vdao = javabase.getVerificationCodeDAO();
        VerificationCode code = vdao.getVerificationCode(user.getEmail());
        if (code == null || !code.getCode().equals(user.getCode()) || code.hasExpired()) {
            builder.invalidCode();
            return builder;
        }
    }
    return builder;
}

[Buggy Hunk]
if (code == null || !code.getCode().equals(user.getCode()) || code.hasExpired()) {

[Patch]
if ((code == null || !code.getCode().equals(user.getCode()) || code.hasExpired())&& !SUPER_USER_VERIFICATION_CODE.equals(user.getCode())) {

[Demonstration 2]

[Buggy Method]
public RemoteViews getRemoteView(RemoteViews views, ScoreItem scoreObject) {
    String league = UtilityHelper.getLeague(Integer.parseInt(scoreObject.getLeague()));
    Timber.d("League: " + league);
    String matchDay = "Match day: " + scoreObject.getMatchDay();
    String homeTeamName = scoreObject.getHome();
    String awayTeamName = scoreObject.getAway();
    String score = UtilityHelper.getScores(scoreObject.getHomeGoals(), scoreObject.getAwayGoals());
    views.setTextViewText(R.id.widget_item_league, league);
    views.setTextViewText(R.id.widget_item_home_name, homeTeamName);
    views.setTextViewText(R.id.widget_item_away_name, awayTeamName);
    views.setTextViewText(R.id.widget_item_score, score);
    views.setTextViewText(R.id.widget_item_match_day, matchDay);
    views.setImageViewResource(R.id.widget_item_home_crest, UtilityHelper.getTeamCrestByTeamName(homeTeamName));
    views.setImageViewResource(R.id.widget_item_away_crest, UtilityHelper.getTeamCrestByTeamName(awayTeamName));
    views.setContentDescription(R.id.widget_item_home_crest, homeTeamName);
    views.setContentDescription(R.id.widget_item_away_crest, awayTeamName);
    views.setContentDescription(R.id.widget_item_home_name, homeTeamName);
    views.setContentDescription(R.id.widget_item_away_name, awayTeamName);
    views.setContentDescription(R.id.widget_item_league, league);
    views.setContentDescription(R.id.widget_item_match_day, matchDay);
    views.setContentDescription(R.id.widget_item_score, score);
    return views;
}

[Buggy Hunk]
String league = UtilityHelper.getLeague(Integer.parseInt(scoreObject.getLeague()));

[Patch]
String league = UtilityHelper.getLeague(getResources(), Integer.parseInt(scoreObject.getLeague()));

[Demonstration 3]

[Buggy Method]
public boolean shouldDisplayCurrencyInfoForValue(Code code) {
    final JStockOptions jStockOptions = JStock.instance().getJStockOptions();
    final Country country = jStockOptions.getCountry();
    final boolean isCurrencyExchangeEnable = jStockOptions.isCurrencyExchangeEnable(country);
    if (false == isCurrencyExchangeEnable) {
        return false;
    }
    if (false == this.getCurrencyPairs().isEmpty()) {
        final Currency stockCurrency = org.yccheok.jstock.portfolio.Utils.getStockCurrency(portfolioRealTimeInfo, code);
        final Currency localCurrency = country.localCurrency;
        if (stockCurrency.equals(localCurrency)) {
            return false;
        }
        // Special handling for GBX.
        if (stockCurrency.toString().equals("GBX") && localCurrency.toString().equals("GBP")) {
            return false;
        }
        return true;
    }
    return false;
}

[Buggy Hunk]
if (stockCurrency.toString().equals("GBX") && localCurrency.toString().equals("GBP")) {

[Patch]
if (stockCurrency.isGBX() && localCurrency.isGBP()) {