[Demonstration 1]

[Buggy Method]
@Override
public void entryRemoved(EntryEvent<String, Vehicle> entry) {
    socket.notifyVehicleRemoved(entry.getValue().toDTO());
}

[Buggy Hunk]
socket.notifyVehicleRemoved(entry.getValue().toDTO());

[Patch]
supervisor.notifyVehicleRemoved(entry.getValue().toDTO());

[Demonstration 2]

[Buggy Method]
@Override
public void run() {
    try {
        ServerSocketChannel serverSocketChannel = ServerSocketChannel.open();
        serverSocketChannel.configureBlocking(false);
        ServerSocket serverSocket = serverSocketChannel.socket();
        InetSocketAddress inetSocketAddress = new InetSocketAddress(ServerUtil.getHostInetAddress(), port);
        serverSocket.bind(inetSocketAddress);
        // register the selector
        serverSocketChannel.register(this.selector, SelectionKey.OP_ACCEPT);
        logger.info("Server started on: " + inetSocketAddress.getHostString() + ":" + port);
    } catch (IOException e) {
        logger.error(e.getMessage(), e);
    }
    while (!Thread.interrupted()) {
        int numOfKeys = 0;
        try {
            numOfKeys = selector.select();
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
        // no new selected keys. start the loop again.
        if (numOfKeys == 0) {
            continue;
        }
        Set keys = selector.selectedKeys();
        Iterator it = keys.iterator();
        while (it.hasNext()) {
            SelectionKey key = (SelectionKey) it.next();
            it.remove();
            if (!key.isValid()) {
                continue;
            }
            if (key.isAcceptable()) {
                // Handling accept connections in the selector thread itself.
                try {
                    SocketChannel socketChannel = ((ServerSocketChannel) key.channel()).accept();
                    if (socketChannel != null) {
                        lastAssignedReactor = lastAssignedReactor++ % ioReactors.length;
                        IOReactor ioReactor = ioReactors[lastAssignedReactor];
                        ioReactor.registerSocketChannel(socketChannel);
                    }
                } catch (IOException e) {
                    logger.error(e.getMessage(), e);
                }
            }
        }
    }
}

[Buggy Hunk]
lastAssignedReactor = lastAssignedReactor++ % ioReactors.length;

[Patch]
lastAssignedReactor = ++lastAssignedReactor % ioReactors.length;

[Demonstration 3]

[Buggy Method]
public boolean isEmpty(Position pos) {
    if (pos.i >= row || pos.j >= col) {
        //если позиция за границами поля
        return false;
    } else {
        return matrix.get(pos.i * col + pos.j);
    }
}

[Buggy Hunk]
if(pos.i >= row || pos.j >= col){

[Patch]
if(pos.i < 0 || pos.i >= row || pos.j < 0 || pos.j >= col){