[Demonstration 1]

[Buggy Method]
public void generate() {
    logger.info("Generating Extended NRO Stats");
    try {
        List<ParsedRIRStats> parsedRIRStats = fetchAndParseAllRirStats(extendedInputConfig.getRir());
        ParsedRIRStats parsedIANAStats = fetchAndParseIanaStats("iana", extendedInputConfig.getIana());
        ParsedRIRStats parsedRIRSwaps = fetchAndParseRirSwapStats(StatsSource.RIRSWAP.name(), extendedInputConfig.getSwaps());
        // some data sets need extra preprocessing
        preProcessor.processRirStats(parsedRIRStats);
        preProcessor.processIanaStats(parsedIANAStats);
        List<ParsedRIRStats> combinedStats = new ArrayList<>();
        combinedStats.addAll(parsedRIRStats);
        combinedStats.add(parsedIANAStats);
        combinedStats.add(parsedRIRSwaps);
        ParsedRIRStats nroStats = recordsMerger.merge(combinedStats);
        writer.write(nroStats);
        logger.info("Finished Generating Extended NRO stats");
    } catch (Exception e) {
        logger.error("Failed while generating NRO Extended stats", e);
    }
}

[Buggy Hunk]
ParsedRIRStats parsedRIRSwaps = fetchAndParseRirSwapStats(StatsSource.RIRSWAP.name(), extendedInputConfig.getSwaps());

[Patch]
ParsedRIRStats parsedRIRSwaps = fetchAndParseRirSwapStats(StatsSource.RIRSWAP.getValue(), extendedInputConfig.getSwaps());

[Demonstration 2]

[Buggy Method]
public void nytSoccerSportsNews() {
    NytAPI.NytRx nytSports = NytAPI.createRx();
    Observable<NytSportsResults> observable = nytSports.nytSportsResults("all", "sports", NYT_SOCCER);
    observable.subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<NytSportsResults>() {

        @Override
        public void onCompleted() {
        }

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

        @Override
        public void onNext(NytSportsResults nytSportsResults) {
            allSportsAdapter.updateData(nytSportsResults);
            sportsNewsList.clear();
            Collections.addAll(sportsNewsList, nytSportsResults.getResults());
            swipeContainer.setRefreshing(false);
        }
    });
}

[Buggy Hunk]
Timber.e(e.getMessage());

[Patch]
e.printStackTrace();

[Demonstration 3]

[Buggy Method]
public void parseAndStoreAnchorContent(Element root, String pageType, Date pageDate) {
    List<Element> itemElements = root.getChildren();
    for (Element itemElement : itemElements) {
        String roomNumberText = itemElement.getChildText("room_number");
        if (roomNumberText == null) {
            continue;
        }
        Long roomNumber = Long.valueOf(roomNumberText);
        if (invalidAliasIds.contains(roomNumber)) {
            System.out.println("-_-> invalid alias id " + roomNumber + ", ignore this page");
            continue;
        }
        String nickName = itemElement.getChildText("nickname");
        String area = itemElement.getChildText("area");
        AnchorObject anchorInCache = resourceManager.getDatabaseCache().getAnchorObjectFromCache(roomNumber);
        if (anchorInCache == null) {
            Anchor anchor = new Anchor(platformId, roomNumber, nickName, pageDate);
            anchor.setArea(area);
            anchor.setType(pageType);
            resourceManager.getDatabaseSession().save(anchor);
            resourceManager.getDatabaseCache().setAnchorObjectInCache(anchor.getAnchorAliasId(), new AnchorObject(anchor.getAnchorId(), anchor.getArea(), anchor.getType()));
        } else if (anchorInCache.area == null || anchorInCache.type == null) {
            Anchor anchor = (Anchor) resourceManager.getDatabaseSession().load(Anchor.class, anchorInCache.anchorId);
            anchor.setArea(area);
            anchor.setType(pageType);
            resourceManager.getDatabaseSession().update(anchor);
        }
    }
    resourceManager.commit();
}

[Buggy Hunk]
if (roomNumberText == null) {

[Patch]
if (StringUtils.isNullOrEmpty(roomNumberText)) {