[Demonstration 1]

[Buggy Method]
@Override
public void run() {
    Observable.range(1, 10).lift(new OperatorMapInterceptor<Integer, Integer>(new Func1<Integer, Integer>() {

        @Override
        public Integer call(Integer integer) {
            return integer * 2;
        }
    })).subscribe(new Action1<Integer>() {

        @Override
        public void call(Integer integer) {
            log(integer);
        }
    });
}

[Buggy Hunk]
.lift(new OperatorMapInterceptor<Integer, Integer>(new Func1<Integer, Integer>() {

[Patch]
.lift(new MyMapOperator<Integer, Integer>(new Func1<Integer, Integer>() {

[Demonstration 2]

[Buggy Method]
protected void parseExpression(final Expression expression) {
    // Create the logic graph
    LegoExpressionGraphBuilder legoLogicGraphBuilder = new LegoExpressionGraphBuilder(terminologyStoreDI, expression);
    legoLogicGraphBuilder.create();
    LogicGraph logicGraph = legoLogicGraphBuilder;
    //TODO run through classification service, should get a number back.
    ClassifiedPce cPce = new ClassifiedPce();
    //TODO store concept ID, and logic graph expression
    classPceStore.save(cPce);
}

[Buggy Hunk]
classPceStore.save(cPce);

[Patch]
classifiedPceStore.save(cPce);

[Demonstration 3]

[Buggy Method]
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mei_tuan_shoping);
    mRl = (RelativeLayout) findViewById(R.id.rl);
    mRv = (RecyclerView) findViewById(R.id.rv);
    mCart = (ImageView) findViewById(R.id.cart);
    mList = new ArrayList<>();
    mList.add(R.drawable.eco);
    mList.add(R.drawable.eep);
    mList.add(R.drawable.eer);
    mList.add(R.drawable.eft);
    mList.add(R.drawable.kys);
    mList.add(R.drawable.img2);
    mList.add(R.drawable.img3);
    mList.add(R.drawable.eer);
    mList.add(R.drawable.eft);
    mList.add(R.drawable.kys);
    mList.add(R.drawable.img2);
    mList.add(R.drawable.img3);
    mList.add(R.drawable.img4);
    CommonAdapter<Integer> mAdapter = new CommonAdapter<Integer>(this, R.layout.item, mList) {

        @Override
        protected void convert(final ViewHolder holder, Integer integer, int position) {
            holder.setImageResource(R.id.iv, integer);
            final ImageView imageView = holder.getView(R.id.iv);
            TextView view = holder.getView(R.id.buy);
            view.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    AddCartAnimation.AddToCart(imageView, mCart, mContext, mRl, 1);
                }
            });
        }
    };
    mRv.setLayoutManager(new LinearLayoutManager(this));
    mRv.setAdapter(mAdapter);
}

[Buggy Hunk]
CommonAdapter<Integer> mAdapter = new CommonAdapter<Integer>(this, R.layout.item, mList) {

[Patch]
CommonAdapter<Integer> mAdapter = new CommonAdapter<Integer>(this, R.layout.item_shop, mList) {