[Demonstration 1]

[Buggy Method]
@Override
public void initialize(Step step, StepResult result, TaskResult taskResult) {
    validateStepAndResult(step);
    this.taskResult = taskResult;
    this.stepResult = result;
    this.taskResult = taskResult;
    // Setup submit bar actions and titles
    SubmitBar submitBar = (SubmitBar) findViewById(R.id.rsb_submit_bar);
    submitBar.setPositiveTitle(getContext().getString(R.string.rsb_continue));
    submitBar.setPositiveAction(v -> attemptSignIn());
    submitBar.setNegativeAction(v -> resendVerificationEmail());
    submitBar.setNegativeTitle(getContext().getString(R.string.rsb_resend_email));
    updateEmailText();
    RxView.clicks(findViewById(R.id.rsb_email_verification_wrong_email)).subscribe(v -> changeEmail());
    // If the the password isn't in the TaskResult, we have to make the user re-enter their's
    if (getPassword(taskResult) == null) {
        RelativeLayout container = (RelativeLayout) findViewById(R.id.rsb_email_verification_container);
        createValidatePasswordStepBody(container);
    }
}

[Buggy Hunk]
submitBar.setPositiveAction(v -> attemptSignIn());

[Patch]
submitBar.setPositiveAction(v -> signIn());

[Demonstration 2]

[Buggy Method]
private static List<List<String>> convertToArray(Object o, boolean showColumnNames) {
    List<List<String>> result = new ArrayList<List<String>>();
    if (o == null || isBasicType(o.getClass())) {
        ArrayList<String> row = new ArrayList<String>();
        result.add(row);
        row.add(o == null ? null : String.valueOf(o));
        return result;
    }
    if (o.getClass().isArray()) {
        Object[] objects = (Object[]) o;
        Class type = getElementType(objects);
        if (type == null) {
            return null;
        }
        if (type.isArray()) {
            for (Object object : objects) {
                Object[] row = (Object[]) object;
                Class elementType = getElementType(row);
                if (elementType == null) {
                    continue;
                }
                if (elementType.isArray()) {
                    for (Object innerRow : row) {
                        addArrayElements(result, showColumnNames, (Object[]) innerRow);
                    }
                } else {
                    if (isBasicType(elementType)) {
                        addArrayElements(result, showColumnNames, row);
                    } else {
                        List<List<String>> subResult = new ArrayList<List<String>>();
                        outComplexTypes(row, showColumnNames, subResult, elementType);
                        result.addAll(subResult);
                    }
                }
            }
        } else if (isBasicType(type)) {
            addArrayElements(result, showColumnNames, objects);
        } else {
            outComplexTypes(o, showColumnNames, result, type);
        }
    } else {
        Class<?> type = o.getClass();
        outComplexTypes(o, showColumnNames, result, type);
    }
    return result;
}

[Buggy Hunk]
row.add(o == null ? null : String.valueOf(o));

[Patch]
row.add(o == null ? null : HelperFunctions.convertArgument(String.class, o));

[Demonstration 3]

[Buggy Method]
public void startGame(String gameCode) {
    List<Connection> players = unstartedGames.remove(gameCode);
    Parameters parameters = new Parameters(players);
    State newGame = new State(parameters);
    startedGames.put(gameCode, newGame);
    sendStateUpdate(gameCode);
}

[Buggy Hunk]
Parameters parameters = new Parameters(players);

[Patch]
DefaultParameters parameters = new DefaultParameters(players);