[Demonstration 1]

[Buggy Method]
public int subtracion(Object firstElement, Object secondElement) {
    if (firstElement == null || secondElement == null) {
        return -1;
    }
    if ((firstElement instanceof Integer || firstElement instanceof Long || firstElement instanceof Double || firstElement instanceof Float) && (secondElement instanceof Integer || secondElement instanceof Long || secondElement instanceof Double || secondElement instanceof Float)) {
        Number first = (Number) firstElement;
        Number second = (Number) secondElement;
        return Math.abs(Math.abs(first.intValue()) - Math.abs(second.intValue()));
    } else {
        throw new IllegalArgumentException("Expected a numeric element/s");
    }
}

[Buggy Hunk]
return Math.abs(Math.abs(first.intValue()) - Math.abs(second.intValue()));

[Patch]
return (int)Math.abs(Math.abs(first.intValue()) - Math.abs(second.intValue()));

[Demonstration 2]

[Buggy Method]
@Test
public void blkdiag() {
    Matrix m1 = Matrix.create(1.1, 2.2);
    Matrix m2 = Matrix.create(3.3, 4.4, 5.5, NR, 6.6, 7.7, 8.8);
    Matrix m3 = Matrix.create(9.9);
    Matrix m = Matrix.blkdiag(m1, m2, m3);
    Matrix t = Matrix.create(1.1, 2.2, 0.0, 0.0, 0.0, 0.0, NR, 0.0, 0.0, 3.3, 4.4, 5.5, 0.0, NR, 0.0, 0.0, 6.6, 7.7, 8.8, 0.0, NR, 0.0, 0.0, 0.0, 0.0, 0.0, 9.9);
    assertTrue(PREC > t.sub(m).normI());
}

[Buggy Hunk]
assertTrue(PREC > t.sub(m).normI());

[Patch]
assertMatrixEquals(t, m, PREC);

[Demonstration 3]

[Buggy Method]
private IRegion evaluateReplaceRange(Program root, NamespaceDeclaration namespace) {
    List<UseStatement> imports = root.getUseStatements(namespace);
    if (!imports.isEmpty()) {
        UseStatement first = imports.get(0);
        UseStatement last = imports.get(imports.size() - 1);
        int startPos = first.getStart();
        int endPos = root.getExtendedStartPosition(last) + root.getExtendedLength(last);
        int endLine = root.getLineNumber(endPos);
        if (endLine > 0) {
            int nextLinePos = getPosition(root, endLine + 1);
            if (nextLinePos >= 0) {
                int firstStatementPos = getFirstStatementBeginPos(root, namespace);
                if (firstStatementPos != -1 && firstStatementPos < nextLinePos) {
                    endPos = firstStatementPos;
                } else {
                    endPos = nextLinePos;
                }
            }
        }
        return new Region(startPos, endPos - startPos);
    } else {
        int start = getNamespaceNameEndPos(root, namespace);
        return new Region(start, 0);
    }
}

[Buggy Hunk]
int startPos = first.getStart();

[Patch]
int startPos = getUseStatementStart(namespace, first);