[Demonstration 1]

[Buggy Method]
@Override
public void run() {
    log.info("receiver started");
    //init the communication side
    ZMQ.Context zmqContext = ZMQ.context(1);
    ZMQ.Socket listenerSocket = null;
    try {
        listenerSocket = zmqContext.socket(ZMQ.PULL);
        if (listenerSocket == null)
            throw new Exception("cannot obtain local socket");
        //port to listen for incomming data
        listenerSocket.bind("tcp://*:" + portNo);
        log.info("receiver waiting");
        //"an entry point" for the input data
        byte[] incomingData = null;
        //"busy wait" up to the given period of time
        int timeAlreadyWaited = 0;
        while (timeAlreadyWaited < timeoutTime && incomingData == null) {
            if (timeAlreadyWaited % 10 == 0)
                log.info("receiver waiting already " + timeAlreadyWaited + " seconds");
            //check if there is some data from a sender
            incomingData = listenerSocket.recv(ZMQ.NOBLOCK);
            //if nothing found, wait a while before another checking attempt
            if (incomingData == null)
                Thread.sleep(1000);
            ++timeAlreadyWaited;
        }
        //process incoming data if there is some...
        if (incomingData != null) {
            final ImgPacker<?> ip = new ImgPacker<>();
            imgP = ip.receiveAndUnpack(new String(incomingData), listenerSocket);
            //NB: this guy returns the ImgPlus that we desire...
        }
        log.info("receiver closed");
    } catch (ZMQException e) {
        System.out.println("ZeroMQ error: " + e.getMessage());
        log.info("receiver crashed");
    } catch (Exception e) {
        System.out.println("System error: " + e.getMessage());
        e.printStackTrace();
    } finally {
        if (listenerSocket != null)
            listenerSocket.close();
        zmqContext.term();
    }
}

[Buggy Hunk]
if (timeAlreadyWaited % 10 == 0)

[Patch]
if (timeAlreadyWaited % 10 == 0 && timeAlreadyWaited > 0)

[Demonstration 2]

[Buggy Method]
public static Result service(String ownerName, String projectName, String service, boolean isAdvertise) throws IOException, UnsupportedOperationException, ServletException {
    if (!isSupportedService(service)) {
        return forbidden(String.format("Unsupported service: '%s'", service));
    }
    Project project = Project.findByOwnerAndProjectName(ownerName, projectName);
    if (project == null) {
        return notFound();
    }
    models.User user = UserApp.currentUser();
    if (!isAllowed(project, service)) {
        if (user.isAnonymous()) {
            return BasicAuthAction.unauthorized(response());
        } else {
            // If you want the Git client showing your custom message to
            // the user, the Content-Type should be exact "text/plain"
            // without any parameter. For more details, see the code at
            // https://github.com/git/git/commit/426e70d4a11ce3b4f70636d57c6a0ab16ae08a00#diff-eea0ad565ec5903a11b6023755d491cfR154
            response().setHeader("Content-Type", "text/plain");
            return forbidden(String.format("'%s' has no permission to '%s/%s'.", user.name, ownerName, projectName));
        }
    }
    if (isAdvertise) {
        return ok(RepositoryService.gitAdvertise(project, service, response()));
    } else {
        if (request().body().isMaxSizeExceeded()) {
            return status(REQUEST_ENTITY_TOO_LARGE);
        } else {
            user.visits(project);
            return ok(RepositoryService.gitRpc(project, service, request(), response()));
        }
    }
}

[Buggy Hunk]
user.name, ownerName, projectName));

[Patch]
user.loginId, ownerName, projectName));

[Demonstration 3]

[Buggy Method]
public int getType() {
    return (int) getOption(ZMQ.ZMQ_TYPE);
}

[Buggy Hunk]
return (int) getOption(ZMQ.ZMQ_TYPE);

[Patch]
return (Integer) getOption(ZMQ.ZMQ_TYPE);