[Demonstration 1]

[Buggy Method]
private List<News> getNews(HtmlPage page) {
    List<News> newsList = new ArrayList<>();
    List<Callable<News>> tasks = new ArrayList<>();
    List<HtmlElement> contents = page.getByXPath(XPATH_NEWS_BODY);
    contents.forEach(content -> tasks.add(new NewsParser(client, content, logger)));
    try {
        executor.invokeAll(tasks).stream().map(future -> {
            try {
                return future.get();
            } catch (Exception e) {
                throw new IllegalStateException(e);
            }
        }).forEach(newsList::add);
    } catch (InterruptedException e) {
        logger.error(e, e);
    }
    logger.debug("List of news: " + Arrays.toString(newsList.toArray()));
    return newsList;
}

[Buggy Hunk]
contents.forEach(content -> tasks.add(new NewsParser(client, content, logger)));

[Patch]
contents.forEach(content -> tasks.add(new NewsParser(content, logger)));

[Demonstration 2]

[Buggy Method]
public static boolean add(String productId, String token, Connection conn) {
    Integer cid = ClientKeeper.get(productId, token);
    if (cid != null) {
        //关闭旧连接.
        Connection c = pools.remove(cid);
        if (c != null) {
            ServerMetrics.decrConnection();
        }
    }
    cid = conn.getContext().hashCode();
    ClientKeeper.add(productId, token, cid);
    pools.put(cid, conn);
    ServerMetrics.incrConnection();
    return true;
}

[Buggy Hunk]
cid = conn.getContext().hashCode();

[Patch]
cid = conn.getContext().channel().hashCode();

[Demonstration 3]

[Buggy Method]
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);
    ButterKnife.bind(this);
    Intent intent = getIntent();
    if (intent == null) {
        finish();
    }
    cafe = intent.getParcelableExtra(ARGS_CAFE_DATA);
    initializeMapView();
    tvTitle.setText(cafe.getName());
    tvAddress.setText(cafe.getAddress());
    if (!cafe.getOpen_time().equals("")) {
        tvTime.setText(getString(R.string.open_time, cafe.getOpen_time()));
        tvTime.setVisibility(View.VISIBLE);
    }
    if (!cafe.getLimited_time().equals("")) {
        tvLimitedTime.setText(getString(R.string.limited_time, cafe.getLimited_time()));
        tvLimitedTime.setVisibility(View.VISIBLE);
    }
    if (!cafe.getSocket().equals("")) {
        tvSocket.setText(getString(R.string.socket, cafe.getSocket()));
        tvSocket.setVisibility(View.VISIBLE);
    }
    if (!cafe.getStanding_desk().equals("")) {
        tvStandingDesk.setText(getString(R.string.socket, cafe.getStanding_desk()));
        tvStandingDesk.setVisibility(View.VISIBLE);
    }
    if (!cafe.getMrt().equals("")) {
        tvMrt.setText(getString(R.string.mrt, cafe.getMrt()));
        tvMrt.setVisibility(View.VISIBLE);
    }
    View wifiGroup = LayoutInflater.from(this).inflate(R.layout.view_rate_group_detail, null);
    ((TextView) ButterKnife.findById(wifiGroup, R.id.tv_name)).setText(R.string.wifi);
    ((SimpleRatingBar) ButterKnife.findById(wifiGroup, R.id.srb_value)).setRating(cafe.getWifi());
    llRateGroup.addView(wifiGroup);
    View seatGroup = LayoutInflater.from(this).inflate(R.layout.view_rate_group_detail, null);
    ((TextView) ButterKnife.findById(seatGroup, R.id.tv_name)).setText(R.string.seat);
    ((SimpleRatingBar) ButterKnife.findById(seatGroup, R.id.srb_value)).setRating(cafe.getSeat());
    llRateGroup.addView(seatGroup);
    View quietGroup = LayoutInflater.from(this).inflate(R.layout.view_rate_group_detail, null);
    ((TextView) ButterKnife.findById(quietGroup, R.id.tv_name)).setText(R.string.quiet);
    ((SimpleRatingBar) ButterKnife.findById(quietGroup, R.id.srb_value)).setRating(cafe.getQuiet());
    llRateGroup.addView(quietGroup);
    View tastyGroup = LayoutInflater.from(this).inflate(R.layout.view_rate_group_detail, null);
    ((TextView) ButterKnife.findById(tastyGroup, R.id.tv_name)).setText(R.string.tasty);
    ((SimpleRatingBar) ButterKnife.findById(tastyGroup, R.id.srb_value)).setRating(cafe.getTasty());
    llRateGroup.addView(tastyGroup);
    View cheapGroup = LayoutInflater.from(this).inflate(R.layout.view_rate_group_detail, null);
    ((TextView) ButterKnife.findById(cheapGroup, R.id.tv_name)).setText(R.string.cheap);
    ((SimpleRatingBar) ButterKnife.findById(cheapGroup, R.id.srb_value)).setRating(cafe.getCheap());
    llRateGroup.addView(cheapGroup);
    View musicGroup = LayoutInflater.from(this).inflate(R.layout.view_rate_group_detail, null);
    ((TextView) ButterKnife.findById(musicGroup, R.id.tv_name)).setText(R.string.music);
    ((SimpleRatingBar) ButterKnife.findById(musicGroup, R.id.srb_value)).setRating(cafe.getMusic());
    llRateGroup.addView(musicGroup);
}

[Buggy Hunk]
tvStandingDesk.setText(getString(R.string.socket, cafe.getStanding_desk()));

[Patch]
tvStandingDesk.setText(getString(R.string.standing_desk, cafe.getStanding_desk()));