[Demonstration 1]

[Buggy Method]
private void initListener() {
    mBottomTopicLayout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (mTopicListView.getVisibility() == View.VISIBLE) {
                mTopicScrollView.setVisibility(View.GONE);
                mContentEditText.setEnabled(true);
            } else {
                mTopicScrollView.setVisibility(View.VISIBLE);
                mContentEditText.setEnabled(false);
            }
        }
    });
    mBottomAnonymousLayout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            mAnonymousCheckBox.setChecked(!mAnonymousCheckBox.isChecked());
        }
    });
    mBottomPhotoLayout.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            addImage();
        }
    });
    mImageGridView.setAddOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            addImage();
        }
    });
    mImageChooser = new ImageChooser(mContext, true, true, false, true);
    mImageChooser.setOnImageChosenListener(new ImageChooser.OnImageChosenListener() {

        @Override
        public void onImageChose(Bitmap bitmap, int type) {
            if (type == ImageChooser.TYPE_VIDEO) {
                mVideoImageView.setVisibility(View.VISIBLE);
                mVideoImageView.setData(bitmap, null, null);
                mImageGridView.clear();
                mImageGridView.setVisibility(View.GONE);
            } else {
                mImageGridView.setVisibility(View.VISIBLE);
                mImageGridView.addImage(bitmap);
                mVideoImageView.clear();
                mVideoImageView.setVisibility(View.GONE);
            }
            mImageType = type;
        }
    });
    mImageChooser.setOnOperationClickListener(new ImageChooser.OnOperationClickListener() {

        @Override
        public boolean onOperationClick(int type) {
            if (type == ImageChooser.TYPE_IMAGE && mImageGridView.isMax()) {
                ToastUtil.showToast(mContext, R.string.chatter_submit_max_image);
            }
            return true;
        }
    });
    mTopicAdapter = new ChatterTopicAdapter(mContext);
    mTopicCustomConfirmTextView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            String topic = mTopicCustomEditText.getText().toString().replace("#", "").replace(" ", "").trim();
            onTopicSelected(topic);
        }
    });
    mTopicListView.setOnItemClickListener(new NoScrollListView.OnNoScrollItemClickListener() {

        @Override
        public void onItemClick(View v, int position, long id) {
            ChatterTopic chatterTopic = (ChatterTopic) mTopicAdapter.getItem(position);
            onTopicSelected(chatterTopic.key);
        }
    });
    mTopicListView.setAdapter(mTopicAdapter);
    mVideoImageView.setOnImageDeleteListener(new VideoImageView.OnImageDeleteListener() {

        @Override
        public void onDelete() {
            mImageGridView.setVisibility(View.VISIBLE);
            mVideoImageView.clear();
            mVideoImageView.setVisibility(View.GONE);
            mImageType = -1;
        }
    });
    getTopicList();
}

[Buggy Hunk]
if (mTopicListView.getVisibility() == View.VISIBLE) {

[Patch]
if (mTopicScrollView.getVisibility() == View.VISIBLE) {

[Demonstration 2]

[Buggy Method]
ServiceEndpointsInfo parse(InputStream inputStream) {
    SAXParserFactory saxFactory = SAXParserFactory.newInstance();
    try {
        saxFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
        SAXParser xmlParser = saxFactory.newSAXParser();
        xmlParser.parse(inputStream, this);
        return serviceEndpointsInfo;
    } catch (ParserConfigurationException e) {
    } catch (SAXNotRecognizedException e) {
    } catch (SAXNotSupportedException e) {
    } catch (SAXException e) {
    } catch (IOException e) {
    }
    return new ServiceEndpointsInfo();
}

[Buggy Hunk]
ServiceEndpointsInfo parse(InputStream inputStream) {

[Patch]
protected ServiceEndpointsInfo parse(InputStream inputStream) {

[Demonstration 3]

[Buggy Method]
private void registerToolWindowIfNeeded() {
    if (myToolWindowWasRegistered || !shouldRegisterToolWindow())
        return;
    final ToolWindow toolWindow = myToolWindowManager.registerToolWindow(TOOL_WINDOW_ID, true, ToolWindowAnchor.BOTTOM, false);
    toolWindow.setIcon(OCamlIconUtil.getSmallOCamlIcon());
    toolWindow.setTitle(TOOL_WINDOW_ID);
    myToolWindowWasRegistered = true;
    final ContentManager contentManager = toolWindow.getContentManager();
    contentManager.addContentManagerListener(new ContentManagerAdapter() {

        @Override
        public void contentRemoved(@NotNull final ContentManagerEvent event) {
            if (contentManager.getContentCount() == 0) {
                OCamlToolWindowUtil.addAndSelectStartContent(myProject, contentManager);
            }
        }
    });
    OCamlToolWindowUtil.addAndSelectStartContent(myProject, contentManager);
}

[Buggy Hunk]
if (myToolWindowWasRegistered || !shouldRegisterToolWindow()) return;

[Patch]
if (myToolWindowWasRegistered || !toolWindowShouldBeRegistered()) return;