[Demonstration 1]

[Buggy Method]
public static Iterable<Object[]> configsWithErrors() {
    List<Object[]> result = new ArrayList<>();
    // First element is config name, second element is expected JSON error.
    result.add(new Object[] { "missingStages", Messages.JSONParser_MissingRequiredProperties("'stages'") });
    result.add(new Object[] { "missingAgent", Messages.JSONParser_MissingRequiredProperties("'agent'") });
    result.add(new Object[] { "emptyStages", Messages.JSONParser_TooFewItems(0, 1) });
    result.add(new Object[] { "emptyEnvironment", Messages.JSONParser_TooFewItems(0, 1) });
    result.add(new Object[] { "emptyPostBuild", Messages.JSONParser_TooFewItems(0, 1) });
    result.add(new Object[] { "rejectStageInSteps", Messages.ModelValidatorImpl_BlockedStep("stage", ModelASTStep.getBlockedSteps().get("stage")) });
    result.add(new Object[] { "rejectParallelMixedInSteps", Messages.ModelValidatorImpl_BlockedStep("parallel", ModelASTStep.getBlockedSteps().get("parallel")) });
    result.add(new Object[] { "stageWithoutName", Messages.JSONParser_MissingRequiredProperties("'name'") });
    result.add(new Object[] { "emptyParallel", Messages.ModelValidatorImpl_NothingForStage("foo") });
    result.add(new Object[] { "emptyJobProperties", Messages.JSONParser_TooFewItems(0, 1) });
    result.add(new Object[] { "emptyParameters", Messages.JSONParser_TooFewItems(0, 1) });
    result.add(new Object[] { "emptyTriggers", Messages.JSONParser_TooFewItems(0, 1) });
    result.add(new Object[] { "emptyWhen", Messages.JSONParser_TooFewItems(0, 1) });
    result.add(new Object[] { "mixedMethodArgs", Messages.ModelValidatorImpl_MixedNamedAndUnnamedParameters() });
    result.add(new Object[] { "rejectPropertiesStepInMethodCall", Messages.ModelValidatorImpl_BlockedStep("properties", ModelASTStep.getBlockedSteps().get("properties")) });
    result.add(new Object[] { "wrongParameterNameMethodCall", Messages.ModelValidatorImpl_InvalidStepParameter("namd", "name") });
    result.add(new Object[] { "invalidParameterTypeMethodCall", Messages.ModelValidatorImpl_InvalidParameterType("class java.lang.String", "name", "1234") });
    result.add(new Object[] { "perStageConfigEmptySteps", Messages.JSONParser_TooFewItems(0, 1) });
    result.add(new Object[] { "perStageConfigMissingSteps", Messages.JSONParser_MissingRequiredProperties("'steps'") });
    result.add(new Object[] { "perStageConfigUnknownSection", "additional properties are not allowed" });
    result.add(new Object[] { "unknownAgentType", Messages.ModelValidatorImpl_InvalidAgentType("foo", "[otherField, docker, dockerfile, label, any, none]") });
    result.add(new Object[] { "invalidWrapperType", Messages.ModelValidatorImpl_InvalidSectionType("option", "echo", "[buildDiscarder, catchError, disableConcurrentBuilds, overrideIndexTriggers, retry, script, skipDefaultCheckout, timeout, waitUntil, withContext, withEnv, ws]") });
    result.add(new Object[] { "unknownBareAgentType", Messages.ModelValidatorImpl_NoAgentType("[otherField, docker, dockerfile, label, any, none]") });
    result.add(new Object[] { "agentMissingRequiredParam", Messages.ModelValidatorImpl_MultipleAgentParameters("otherField", "[label, otherField]") });
    result.add(new Object[] { "agentUnknownParamForType", Messages.ModelValidatorImpl_InvalidAgentParameter("fruit", "otherField", "[label, otherField]") });
    result.add(new Object[] { "notificationsSectionRemoved", "additional properties are not allowed" });
    result.add(new Object[] { "unknownWhenConditional", Messages.ModelValidatorImpl_UnknownWhenConditional("banana", "branch, environment, expression") });
    result.add(new Object[] { "whenInvalidParameterType", Messages.ModelValidatorImpl_InvalidUnnamedParameterType("class java.lang.String", 4) });
    result.add(new Object[] { "whenMissingRequiredParameter", Messages.ModelValidatorImpl_MissingRequiredStepParameter("value") });
    result.add(new Object[] { "whenUnknownParameter", Messages.ModelValidatorImpl_InvalidStepParameter("banana", "name") });
    result.add(new Object[] { "malformed", "Unexpected close marker ']': expected '}'" });
    return result;
}

[Buggy Hunk]
result.add(new Object[]{"unknownBareAgentType", Messages.ModelValidatorImpl_NoAgentType("[otherField, docker, dockerfile, label, any, none]")});

[Patch]
result.add(new Object[]{"unknownBareAgentType", Messages.ModelValidatorImpl_InvalidAgentType("foo", "[otherField, docker, dockerfile, label, any, none]")});

[Demonstration 2]

[Buggy Method]
@Override
public List<Pair<String, Pair<String, String>>> getXpathForColumns() {
    // TODO Auto-generated method stub
    return xPathForColumns;
}

[Buggy Hunk]
public List<Pair<String, Pair<String, String>>> getXpathForColumns() {

[Patch]
public List<List<String>> getXpathForColumns() {

[Demonstration 3]

[Buggy Method]
public String[] specialGetLastRow() {
    SQLiteDatabase db = this.getWritableDatabase();
    try {
        cursor = db.query(// The table to query
        TABLE_NAME, // The columns to return
        projection, // The columns for the WHERE clause
        whereMaxId, // The values for the WHERE clause
        null, // don't group the rows
        null, // don't filter by row groups
        null, // The sort order
        sortOrder);
        cursor.moveToFirst();
        int colBarcode = cursor.getColumnIndex(BARCODE);
        int colType = cursor.getColumnIndex(BC_TYPE);
        int colFather = cursor.getColumnIndex(FATHER);
        lastBarcodeInfo[0] = cursor.getString(colBarcode);
        lastBarcodeInfo[1] = cursor.getString(colType);
        lastBarcodeInfo[2] = cursor.getString(colFather);
    } catch (Exception e) {
        e.printStackTrace();
        lastBarcodeInfo = new String[] { null, null, null };
    }
    this.close();
    return lastBarcodeInfo;
}

[Buggy Hunk]
try {cursor = db.query(

[Patch]
try {Cursor cursor = db.query(