[Demonstration 1]

[Buggy Method]
@Override
protected void onPostExecute(Boolean result) {
    mHandler.removeCallbacks(mShowWaiting);
    mShowWaitingDialog = false;
    if (mProgress != null) {
        mProgress.dismiss();
    }
    if (result.booleanValue()) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        if (finish != null) {
            builder.setOnCancelListener(new DialogInterface.OnCancelListener() {

                @Override
                public void onCancel(DialogInterface dialog) {
                    finish.finish();
                }
            });
        }
        builder.setView(mLayout);
        final AlertDialog test = builder.create();
        /* Stupid hack for wrong measured dialog size */
        if (mHasSpannableActors && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
            final OnPreDrawListener preDrawListener = new OnPreDrawListener() {

                @Override
                public boolean onPreDraw() {
                    mLayout.getViewTreeObserver().removeOnPreDrawListener(this);
                    int scrollHeight = mLayout.findViewById(R.id.test_test_test).getMeasuredHeight();
                    if (scrollHeight < mLayout.getMeasuredHeight()) {
                        test.getWindow().setLayout(mLayout.getMeasuredWidth() + 40, scrollHeight + 100);
                    }
                    return true;
                }
            };
            mLayout.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
        }
        if (mLayout instanceof SwipeScrollView) {
            mLayout.setOnTouchListener(new View.OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    boolean result = false;
                    if (((SwipeScrollView) mLayout).isSwipeLeft()) {
                        ((SwipeScrollView) mLayout).resetSwipe();
                        if (mNextId != -1) {
                            test.dismiss();
                            UiUtils.showProgramInfo(context, mNextId, finish, parent, handler);
                            result = true;
                        }
                    } else if (((SwipeScrollView) mLayout).isSwipeRight()) {
                        ((SwipeScrollView) mLayout).resetSwipe();
                        if (mPreviousId != -1) {
                            test.dismiss();
                            UiUtils.showProgramInfo(context, mPreviousId, finish, parent, handler);
                            result = true;
                        }
                    }
                    return result;
                }
            });
        }
        try {
            test.show();
        } catch (BadTokenException e) {
        }
    }
    new Thread("SHOW PROGRAM INFO ALLOWING THREAD") {

        @Override
        public void run() {
            try {
                sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            mShowingProgramInfo = false;
        }
    }.start();
}

[Buggy Hunk]
if(mProgress != null) {

[Patch]
if(mProgress != null && mProgress.isShowing()) {

[Demonstration 2]

[Buggy Method]
private void fetchMessage() throws IOException {
    int fetchMessageNumber = (int) (inputSplit.getEndMessageOffset() - nextMessageOffset);
    if (fetchMessageNumber > TalosClientConfigKeys.GALAXY_TALOS_CONSUMER_MAX_FETCH_RECORDS_DEFAULT) {
        fetchMessageNumber = TalosClientConfigKeys.GALAXY_TALOS_CONSUMER_MAX_FETCH_RECORDS_DEFAULT;
    }
    int retryTimes = 0;
    TException exception = null;
    while (retryTimes < configuration.getMaxRetrys()) {
        try {
            messageAndOffsetList.addAll(simpleConsumer.fetchMessage(nextMessageOffset, fetchMessageNumber));
            if (messageAndOffsetList.size() == 0) {
                retryTimes = 0;
                try {
                    Thread.sleep(200);
                } catch (InterruptedException e) {
                }
            } else {
                return;
            }
        } catch (TException e) {
            LOG.info("TopicAndPartition: " + topicAndPartition + " fetchMessage with startMessageOffset: " + nextMessageOffset + " failed", e);
            exception = e;
            ++retryTimes;
        }
    }
    throw new IOException("TopicAndPartition: " + topicAndPartition + " fetchMessage with startMessageOffset: " + nextMessageOffset + " failed", exception);
}

[Buggy Hunk]
int fetchMessageNumber = (int)(inputSplit.getEndMessageOffset() - nextMessageOffset);

[Patch]
int fetchMessageNumber = (int)(inputSplit.getEndMessageOffset() - nextMessageOffset + 1);

[Demonstration 3]

[Buggy Method]
@Override
public String getLabel() {
    return BundleUtil.getString(MODULE_BUNDLE, "label." + this.getClass().getSimpleName(), getCredits().toString(), getConfiguration().getCurricularPeriod().getFullLabel());
}

[Buggy Hunk]
getConfiguration().getCurricularPeriod().getFullLabel());

[Patch]
getYearMin().toString());