[Demonstration 1]

[Buggy Method]
@Override
protected void doWrite(Message<?> message) throws Exception {
    Object payload = message.getPayload();
    if (payload instanceof String) {
        String data = (String) payload;
        log.info("data:" + data);
        if (delimiter != null) {
            processor.onNext(Buffer.wrap(data));
        } else {
            processor.onNext(Buffer.wrap(data));
        }
        if (meter != null) {
            if ((meterCount++ % rateInterval) == 0) {
                meter.mark(rateInterval);
                log.info("METER: 1 minute rate = " + meter.getOneMinuteRate() + " mean rate = " + meter.getMeanRate());
            }
        }
    } else {
        throw new MessageHandlingException(message, "message not a String");
    }
}

[Buggy Hunk]
processor.onNext(Buffer.wrap(data));

[Patch]
processor.onNext(Buffer.wrap(data+delimiter));

[Demonstration 2]

[Buggy Method]
@Override
public AutoViewHolder onCreateViewHolder(@NonNull final ViewGroup parent, final int layoutId) {
    AutoViewHolder viewHolder = mAutoViewHolderFactory.createViewHolder(parent, layoutId);
    Class rendererClass = mAutoViewHolderFactory.getRendererClass(layoutId);
    final PublishSubject itemClickPublishSubject = mItemViewClickBinding.get(rendererClass);
    if (itemClickPublishSubject != null) {
        viewHolder.getViewHolderOnClickObservable().subscribe(new Observer<AutoViewHolder>() {

            @Override
            public void onSubscribe(Disposable d) {
                itemClickPublishSubject.onSubscribe(d);
            }

            @SuppressWarnings("unchecked")
            @Override
            public void onNext(AutoViewHolder autoViewHolder) {
                int positioon = autoViewHolder.getAdapterPosition();
                ItemInfo info = new ItemInfo(positioon, getItem(positioon), autoViewHolder);
                itemClickPublishSubject.onNext(info);
            }

            @Override
            public void onError(Throwable e) {
                itemClickPublishSubject.onError(e);
            }

            @Override
            public void onComplete() {
                itemClickPublishSubject.onComplete();
            }
        });
    }
    final Map<Integer, PublishSubject> childViewsClickMap = mChildViewsClickBinding.get(rendererClass);
    if (childViewsClickMap != null) {
        for (Map.Entry<Integer, PublishSubject> entry : childViewsClickMap.entrySet()) {
            final PublishSubject publishSubject = entry.getValue();
            viewHolder.getViewHolderOnChildClickObservable(entry.getKey()).subscribe(new Observer<AutoViewHolder>() {

                @Override
                public void onSubscribe(Disposable d) {
                    publishSubject.onSubscribe(d);
                }

                @SuppressWarnings("unchecked")
                @Override
                public void onNext(AutoViewHolder autoViewHolder) {
                    int positioon = autoViewHolder.getAdapterPosition();
                    ItemInfo info = new ItemInfo(positioon, getItem(positioon), autoViewHolder);
                    publishSubject.onNext(info);
                }

                @Override
                public void onError(Throwable e) {
                    publishSubject.onError(e);
                }

                @Override
                public void onComplete() {
                    publishSubject.onComplete();
                }
            });
        }
    }
    return viewHolder;
}

[Buggy Hunk]
Class rendererClass = mAutoViewHolderFactory.getRendererClass(layoutId);

[Patch]
Class rendererClass = mLayoutRendererMaping.get(layoutId);

[Demonstration 3]

[Buggy Method]
public Message sendVoice(SendVoice sendVoice) throws TelegramApiException {
    String responseContent;
    try {
        String url = getBaseUrl() + SendVoice.PATH;
        HttpPost httppost = new HttpPost(url);
        httppost.setConfig(requestConfig);
        if (sendVoice.isNewVoice()) {
            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
            builder.addTextBody(SendVoice.CHATID_FIELD, sendVoice.getChatId());
            builder.addBinaryBody(SendVoice.AUDIO_FIELD, new java.io.File(sendVoice.getAudio()), ContentType.create("audio/ogg"), sendVoice.getVoiceName());
            if (sendVoice.getReplayMarkup() != null) {
                builder.addTextBody(SendVoice.REPLYMARKUP_FIELD, sendVoice.getReplayMarkup().toJson().toString());
            }
            if (sendVoice.getReplayToMessageId() != null) {
                builder.addTextBody(SendVoice.REPLYTOMESSAGEID_FIELD, sendVoice.getReplayToMessageId().toString());
            }
            if (sendVoice.getDisableNotification() != null) {
                builder.addTextBody(SendVoice.DISABLENOTIFICATION_FIELD, sendVoice.getDisableNotification().toString());
            }
            if (sendVoice.getDuration() != null) {
                builder.addTextBody(SendVoice.DURATION_FIELD, sendVoice.getDuration().toString());
            }
            HttpEntity multipart = builder.build();
            httppost.setEntity(multipart);
        } else {
            List<NameValuePair> nameValuePairs = new ArrayList<>();
            nameValuePairs.add(new BasicNameValuePair(SendVoice.CHATID_FIELD, sendVoice.getChatId()));
            nameValuePairs.add(new BasicNameValuePair(SendVoice.AUDIO_FIELD, sendVoice.getAudio()));
            if (sendVoice.getReplayMarkup() != null) {
                nameValuePairs.add(new BasicNameValuePair(SendVoice.REPLYMARKUP_FIELD, sendVoice.getReplayMarkup().toJson().toString()));
            }
            if (sendVoice.getReplayToMessageId() != null) {
                nameValuePairs.add(new BasicNameValuePair(SendVoice.REPLYTOMESSAGEID_FIELD, sendVoice.getReplayToMessageId().toString()));
            }
            if (sendVoice.getDisableNotification() != null) {
                nameValuePairs.add(new BasicNameValuePair(SendVoice.DISABLENOTIFICATION_FIELD, sendVoice.getDisableNotification().toString()));
            }
            if (sendVoice.getDuration() != null) {
                nameValuePairs.add(new BasicNameValuePair(SendVoice.DURATION_FIELD, sendVoice.getDuration().toString()));
            }
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, StandardCharsets.UTF_8));
        }
        try (CloseableHttpResponse response = httpclient.execute(httppost)) {
            HttpEntity ht = response.getEntity();
            BufferedHttpEntity buf = new BufferedHttpEntity(ht);
            responseContent = EntityUtils.toString(buf, StandardCharsets.UTF_8);
        }
    } catch (IOException e) {
        throw new TelegramApiException("Unable to send sticker", e);
    }
    JSONObject jsonObject = new JSONObject(responseContent);
    if (!jsonObject.getBoolean(Constants.RESPONSEFIELDOK)) {
        throw new TelegramApiException("Error at sendVoice", jsonObject.getString(ERRORDESCRIPTIONFIELD), jsonObject.getInt(ERRORCODEFIELD));
    }
    return new Message(jsonObject.getJSONObject(Constants.RESPONSEFIELDRESULT));
}

[Buggy Hunk]
builder.addTextBody(SendVoice.REPLYMARKUP_FIELD, sendVoice.getReplayMarkup().toJson().toString());

[Patch]
builder.addTextBody(SendVoice.REPLYMARKUP_FIELD, sendVoice.getReplayMarkup().toJson().toString(), ContentType.create("text/plain", StandardCharsets.UTF_8));