[Demonstration 1]

[Buggy Method]
private void countWays(int row, int col, int[][] p1, int[][] p2) {
    if ((row < p1.length && row >= 0) && (col < p1[0].length && col >= 0)) {
        if (row > 0) {
            if (p1[row - 1][col] != -1) {
                p2[row][col] += p1[row - 1][col];
            }
        }
        if (col > 0) {
            if (p1[row][col - 1] != -1) {
                p2[row][col] += p1[row][col - 1];
            }
        }
        if (row < p1.length - 1) {
            if (p1[row + 1][col] != -1) {
                p2[row][col] += p1[row + 1][col];
            }
        }
        if (col < p1[0].length - 1) {
            if (p1[row][col + 1] != -1) {
                p2[row][col] += p1[row][col + 1];
            }
        }
    }
    return;
}

[Buggy Hunk]
if ((row < p1.length && row >= 0)&&(col < p1[0].length && col >= 0)){

[Patch]
if ((row < p1.length && row >= 0)&&(col < p1[0].length && col >= 0)&& (p2[row][col]!=-1)){

[Demonstration 2]

[Buggy Method]
@Override
public void visit(GlobalConstant constant) {
    onVisit(constant);
}

[Buggy Hunk]
public void visit(GlobalConstant constant) {

[Patch]
public final void visit(GlobalConstant constant) {

[Demonstration 3]

[Buggy Method]
@Override
public Predicate createWhereFromSearchFilter(ProductosSearchFilter psf, CriteriaBuilder cb, Root<Productos> root) {
    Predicate p = null;
    if (psf.getIdProducto() != null) {
        p = cb.equal(root.get(Productos_.id), psf.getIdProducto());
    }
    if (!StringUtils.isEmpty(psf.getCodigoPropio())) {
        p = cb.equal(root.get(Productos_.codigoPropio), psf.getCodigoPropio());
    }
    if (!StringUtils.isEmpty(psf.getTxt())) {
        for (String s : psf.getTxt().toUpperCase().split(WORDS)) {
            Predicate pTxt = null;
            String likeS = String.format(LIKE, s);
            Predicate p1 = cb.like(root.get(Productos_.descripcion), likeS);
            Predicate p2 = cb.like(root.get(Productos_.idRubro).get(ProductosRubros_.nombreRubro), likeS);
            Predicate p3 = cb.like(root.get(Productos_.idSubRubro).get(ProductosSubRubros_.nombreSubRubro), likeS);
            Predicate p4 = cb.like(root.get(Productos_.idMarca).get(ProductosMarcas_.nombreMarca), likeS);
            Predicate pCod = cb.like(root.get(Productos_.codigoPropio), likeS);
            pTxt = appendOrPredicate(cb, pTxt, pCod);
            pTxt = appendOrPredicate(cb, pTxt, p1);
            pTxt = appendOrPredicate(cb, pTxt, p2);
            pTxt = appendOrPredicate(cb, pTxt, p3);
            pTxt = appendOrPredicate(cb, pTxt, p4);
            if (StringUtils.isNumeric(s)) {
                Predicate pId = cb.equal(root.get(Productos_.id), Long.parseLong(s));
                pTxt = appendOrPredicate(cb, pTxt, pId);
            }
            p = appendAndPredicate(cb, p, pTxt);
        }
    }
    if (psf.getIdProveedorHabitual() != null) {
        Predicate p1 = cb.equal(root.get(Productos_.idProveedorHabitual), psf.getIdProveedorHabitual());
        p = appendAndPredicate(cb, p, p1);
    }
    if (psf.getPuedeComprarse() != null) {
        Predicate p1 = cb.equal(root.get(Productos_.idTipoProveeduria).get(ProductosTiposProveeduria_.puedeComprarse), psf.getPuedeComprarse());
        p = appendAndPredicate(cb, p, p1);
    }
    if (psf.getPuedeVenderse() != null) {
        Predicate p1 = cb.equal(root.get(Productos_.idTipoProveeduria).get(ProductosTiposProveeduria_.puedeVenderse), psf.getPuedeVenderse());
        p = appendAndPredicate(cb, p, p1);
    }
    if (psf.getIdRubro() != null) {
        Predicate p1 = cb.equal(root.get(Productos_.idRubro), psf.getIdRubro());
        p = appendAndPredicate(cb, p, p1);
    }
    if (psf.getIdSubRubro() != null) {
        Predicate p1 = cb.equal(root.get(Productos_.idSubRubro), psf.getIdSubRubro());
        p = appendAndPredicate(cb, p, p1);
    }
    if (psf.isActivo() != null) {
        Predicate p1 = cb.equal(root.get(Productos_.activo), psf.isActivo());
        p = appendAndPredicate(cb, p, p1);
    }
    //TODO para cuando se implemente el stock por depósito
    //        if (psf.getConStockEnDeposito() != null) {
    //            Predicate p1 = cb.isTrue(root.get(Productos_.idTipoProveeduria).get(ProductosTiposProveeduria_.controlStock));
    //
    //            p = appendAndPredicate(cb, p, p1);
    //        }
    if (psf.getIdTipoProveeduria() != null) {
        Predicate p1 = cb.equal(root.get(Productos_.idTipoProveeduria), psf.getIdTipoProveeduria());
        p = appendAndPredicate(cb, p, p1);
    }
    if (psf.getIdMarca() != null) {
        Predicate p1 = cb.equal(root.get(Productos_.idMarca), psf.getIdMarca());
        p = appendAndPredicate(cb, p, p1);
    }
    if (psf.getConStock() != null) {
        Predicate pstk = null;
        if (psf.getConStock()) {
            Predicate p1 = cb.gt(root.get(Productos_.stockActual), BigDecimal.ZERO);
            Predicate p2 = cb.isTrue(root.get(Productos_.idTipoProveeduria).get(ProductosTiposProveeduria_.controlStock));
            pstk = appendAndPredicate(cb, p1, p2);
        }
        Predicate p2 = cb.isFalse(root.get(Productos_.idTipoProveeduria).get(ProductosTiposProveeduria_.controlStock));
        pstk = appendOrPredicate(cb, pstk, p2);
        p = appendAndPredicate(cb, p, pstk);
    }
    return p;
}

[Buggy Hunk]
if (!StringUtils.isEmpty(psf.getTxt())) {

[Patch]
if (StringUtils.isNotEmpty(psf.getTxt())) {