[Demonstration 1]

[Buggy Method]
@Override
public ViewDef newViewDef(String name, Site site) {
    if (name.equals(m_name)) {
        ViewDef view_def = new EventViewDef(m_name, m_support_registrations);
        if (m_access_policy != null)
            view_def.setAccessPolicy(m_access_policy);
        view_def.setFrom(m_events_table);
        view_def.setRecordName("Event");
        ArrayList<String> column_names_form = new ArrayList<String>();
        DBConnection db = new DBConnection(site);
        for (int i = 0; i < m_filter_columns.size(); i += 2) {
            column_names_form.add(m_filter_columns.get(i));
            view_def.setColumn(new Column(m_filter_columns.get(i)).setDefaultValue(m_filter_columns.get(i + 1)).setIsHidden(true));
        }
        db.close();
        column_names_form.add("date");
        view_def.setColumn(new Column("date").setIsRequired(true));
        if (m_events_have_start_time)
            column_names_form.add("start_time");
        if (m_events_have_end_time)
            column_names_form.add("end_time");
        if (m_events_have_event) {
            column_names_form.add("event");
            view_def.setColumn(new Column("event").setIsRequired(true));
        }
        if (m_events_can_repeat) {
            column_names_form.add("repeat");
            view_def.setColumn(new Column("repeat").setInputAndValueRenderers(new SelectRenderer(s_repeat_periods).setOnChange("$('end_date_row').style.display=this.selectedIndex==0?'none':null;return false"), true));
            column_names_form.add("end_date");
        }
        if (m_events_have_category) {
            column_names_form.add("category");
            view_def.setColumn(new Column("category").setShowPreviousValuesDropdown(true));
        }
        if (m_locations != null) {
            column_names_form.add(m_locations_table + "_id");
            view_def.setColumn(m_locations.newColumn(m_locations_table + "_id").setDisplayName("location"));
        }
        if (m_events_have_color)
            column_names_form.add("color");
        if (m_support_registrations) {
            column_names_form.add("register_people");
            view_def.setColumn(new Column("register_people").setDisplayName("allow people to register for this " + getEventCrumb()));
        }
        if (m_support_reminders)
            view_def.addRelationshipDef(new OneToMany(m_name + "_reminders").setSpanFormCols(false));
        if (m_events_are_owned) {
            if (m_access_policy == null)
                view_def.setAccessPolicy(new RecordOwnerAccessPolicy(true, true, true, false));
            column_names_form.add("_owner_");
            LookupColumn owner_column = new LookupColumn("_owner_", "people", "first,last").setDisplayName("posted by").setDefaultToUserId();
            if (m_role == null)
                owner_column.setIsReadOnly(true);
            view_def.setColumn(owner_column);
        }
        view_def.setColumnNamesForm(column_names_form.toArray(new String[column_names_form.size()]));
        return view_def;
    }
    if (name.equals(m_locations_table))
        return m_locations.newViewDef(name, site).setDefaultOrderBy("text").setRecordName("Location").setColumn(new Column("text").setDisplayName("location"));
    if (name.equals(m_name + "_registrations"))
        return new ViewDef(name).setFrom(m_events_table + "_registrations").setRecordName("Registration").setColumn(new LookupColumn("person", "people", "first,last").setFilter(site.getPeopleFilter()));
    if (name.equals(m_name + "_reminders")) {
        ViewDef view_def = new ViewDef(name);
        view_def.setFrom(m_events_table + "_reminders");
        RecordOwnerAccessPolicy access_policy = new RecordOwnerAccessPolicy(true, true, true, false);
        view_def.setAccessPolicy(access_policy);
        view_def.setRecordName("Reminder");
        view_def.setColumnNamesForm(new String[] { "num_days", "note", "email" });
        view_def.setColumnNamesTable(new String[] { "_owner_", "num_days" });
        view_def.setColumn(new EmailColumn("email") {

            @Override
            public String getDefaultValue(Request request) {
                return request.getUser().getEmail(request.db);
            }
        }.setDisplayName("send to"));
        view_def.setColumn(new Column("num_days").setDisplayName("when").setInputAndValueRenderers(new SelectRenderer(new String[] { "on the day", "one day before", "two days before", "three days before", "one week before", "two weeks before", "three weeks before" }, new String[] { "0", "-1", "-2", "-3", "-7", "-14", "-21" }), false));
        view_def.setColumn(access_policy.getColumn("person", site));
        return view_def;
    }
    return null;
}

[Buggy Hunk]
}.setDisplayName("send to"));

[Patch]
}.setDisplayName("send to").setIsRequired(true));

[Demonstration 2]

[Buggy Method]
public List<MagicPricesProvider> getEnabledPricers() {
    List<MagicPricesProvider> pricersE = new ArrayList<MagicPricesProvider>();
    for (MagicPricesProvider p : getSetPricers()) if (p.isEnable())
        pricersE.add(p);
    return pricersE;
}

[Buggy Hunk]
for(MagicPricesProvider p : getSetPricers())

[Patch]
for(MagicPricesProvider p : getPricers())

[Demonstration 3]

[Buggy Method]
synchronized protected void downloadAssetBundle(final AssetBundle assetBundle, HttpUrl baseUrl) {
    Set<AssetBundle.Asset> missingAssets = new HashSet<AssetBundle.Asset>();
    for (AssetBundle.Asset asset : assetBundle.getOwnAssets()) {
        // Create containing directories for the asset if necessary
        File containingDirectory = asset.getFile().getParentFile();
        if (!containingDirectory.exists()) {
            if (!containingDirectory.mkdirs()) {
                didFail(new IOException("Could not create containing directory: " + containingDirectory));
                return;
            }
        }
        // If we find a cached asset, we copy it
        AssetBundle.Asset cachedAsset = cachedAssetForAsset(asset);
        if (cachedAsset != null) {
            try {
                resourceApi.copyResource(cachedAsset.getFileUri(), asset.getFileUri());
            } catch (IOException e) {
                didFail(e);
                return;
            }
        } else {
            missingAssets.add(asset);
        }
    }
    // If all assets were cached, there is no need to start a download
    if (missingAssets.isEmpty()) {
        didFinishDownloadingAssetBundle(assetBundle);
        return;
    }
    assetBundleDownloader = new AssetBundleDownloader(assetBundle, baseUrl, missingAssets);
    assetBundleDownloader.setCallback(new AssetBundleDownloader.Callback() {

        @Override
        public void onFinished() {
            assetBundleDownloader = null;
            moveDownloadedAssetBundleIntoPlace(assetBundle);
            didFinishDownloadingAssetBundle(assetBundle);
        }

        @Override
        public void onFailure(Throwable cause) {
            didFail(cause);
        }
    });
    assetBundleDownloader.resume();
}

[Buggy Hunk]
assetBundleDownloader = new AssetBundleDownloader(assetBundle, baseUrl, missingAssets);

[Patch]
assetBundleDownloader = new AssetBundleDownloader(webAppConfiguration, assetBundle, baseUrl, missingAssets);