[Demonstration 1]

[Buggy Method]
@Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {
    Long userId = (Long) req.getSession().getAttribute("userId");
    Map<String, String> pathVariables = (Map) req.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE);
    if (userId != null && !CollectionUtils.isEmpty(pathVariables)) {
        String docId = pathVariables.get("docId");
        String url = InterceptorUtil.removeVariablesFromURI(req, pathVariables);
        if (docId != null && permitAccess(Long.valueOf(docId), userId, url)) {
            return true;
        }
    }
    resp.setStatus(HttpStatus.BAD_REQUEST.value());
    return false;
}

[Buggy Hunk]
if (docId != null && permitAccess(Long.valueOf(docId), userId, url)) {

[Patch]
if (docId != null && StringUtils.isNumeric(docId) && permitAccess(Long.valueOf(docId), userId, url)) {

[Demonstration 2]

[Buggy Method]
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    String dataEntryErrors = userService.getDataEntryErrors(request);
    User user = getUserFromParams(request);
    String userId = request.getParameter("userId");
    if (dataEntryErrors.isEmpty()) {
        if (userId == null || userId.isEmpty()) {
            userService.addUser(user);
        } else {
            user.setId(Integer.parseInt(userId));
            userService.updateUser(user);
        }
        response.sendRedirect("users");
    } else {
        request.setAttribute("user", user);
        request.setAttribute("errors", dataEntryErrors);
        RequestDispatcher view = request.getRequestDispatcher(ADD_OR_UPDATE);
        view.forward(request, response);
    }
}

[Buggy Hunk]
if(userId == null || userId.isEmpty()){

[Patch]
if(userId == null || userId.isEmpty() || userId.equals("0")){

[Demonstration 3]

[Buggy Method]
@Override
public Set<Tuple<RTLNumber>> projectionFromConcretization(RTLExpression... expressions) {
    Tuple<Set<RTLNumber>> tupleOfSets = new Tuple<Set<RTLNumber>>(expressions.length);
    for (int i = 0; i < expressions.length; i++) {
        Set<RTLNumber> concreteValues = new FastSet<RTLNumber>();
        for (AbstractDomainElement el : abstractEvalPowerSet(expressions[i])) {
            Set<RTLNumber> c = el.concretize();
            if (c == RTLNumber.ALL_NUMBERS) {
                if (expressions[i].getBitWidth() == 1) {
                    // bitWidth is 1, we can just force 1 and 0 here
                    concreteValues.add(ExpressionFactory.TRUE);
                    concreteValues.add(ExpressionFactory.FALSE);
                } else {
                    concreteValues = RTLNumber.ALL_NUMBERS;
                    break;
                }
            } else {
                concreteValues.addAll(c);
            }
        }
        tupleOfSets.set(i, concreteValues);
    }
    return Sets.crossProduct(tupleOfSets);
}

[Buggy Hunk]
if (c == RTLNumber.ALL_NUMBERS) {

[Patch]
if (c.size() == 1 && c.iterator().next() == null /*c == RTLNumber.ALL_NUMBERS*/) {