[Demonstration 1]

[Buggy Method]
private Node<T> find(Node<T> start, T value) {
    int comparison = start.value.compareTo(value);
    if (comparison == 0) {
        return start;
    } else if (comparison < 0) {
        if (start.left == null)
            return start;
        return find(start.left, value);
    } else {
        if (start.right == null)
            return start;
        return find(start.right, value);
    }
}

[Buggy Hunk]
int comparison = start.value.compareTo(value);

[Patch]
int comparison = value.compareTo(start.value);

[Demonstration 2]

[Buggy Method]
@Override
public Runnable start(Listener listener) {
    this.listener = Preconditions.checkNotNull(listener, "listener");
    //TODO: configurable
    this.bufferPool = new DefaultByteBufferPool(true, 2048);
    if (enableKeepAlive) {
        //TODO: this should just use the IO thread
        scheduler = SharedResourceHolder.get(TIMER_SERVICE);
        keepAliveManager = new KeepAliveManager(new KeepAliveManager.ClientKeepAlivePinger(this), scheduler, keepAliveTimeNanos, keepAliveTimeoutNanos, keepAliveWithoutCalls);
        keepAliveManager.onTransportStarted();
    }
    try {
        UndertowClient.getInstance().connect(new ClientCallback<ClientConnection>() {

            @Override
            public void completed(ClientConnection result) {
                clientConnection = result;
                listener.transportReady();
            }

            @Override
            public void failed(IOException e) {
                listener.transportShutdown(Status.fromThrowable(e));
            }
        }, new URI(sslContext == null ? "http" : "https", null, address.getHostString(), address.getPort(), "/", null, null), executor, bufferPool, OptionMap.create(UndertowOptions.ENABLE_HTTP2, true));
    } catch (URISyntaxException e) {
        throw new RuntimeException(e);
    }
    return () -> {
    };
}

[Buggy Hunk]
this.bufferPool = new DefaultByteBufferPool(true, 2048);//TODO: configurable

[Patch]
this.bufferPool = new DefaultByteBufferPool(true, 2048, -1, 2, 0);//TODO: configurable

[Demonstration 3]

[Buggy Method]
@Override
protected void writeData(int[] data, Map<String, Object> context) throws Exception {
    XBeeAddress64 address = (XBeeAddress64) context.get("xbeeAddress");
    //xbee.sendAsynchronous(new ZNetTxRequest(address, data));
    try {
        // TODO make configurable timeout
        xbee.sendSynchronous(new ZNetTxRequest(address, data), 500);
    } catch (XBeeTimeoutException e) {
        System.out.println("No tx ack after 500ms" + e.getMessage());
    }
}

[Buggy Hunk]
System.out.println("No tx ack after 500ms" + e.getMessage());

[Patch]
System.out.println("No tx ack after 500ms");