[Demonstration 1]

[Buggy Method]
@Override
public void putMetric(String metricName, Object metric) {
    if (!METRIC_NAMES.contains(metricName)) {
        throw new IllegalArgumentException("Unrecognised metric " + metricName);
    }
    if (!(metric instanceof Double)) {
        throw new IllegalArgumentException("Metric must be a double (got " + metricName.getClass().getName() + ")");
    }
    metrics.put(metricName, (Double) metric);
}

[Buggy Hunk]
public void putMetric(String metricName, Object metric) {

[Patch]
public void putMetric(final String metricName, final Object metric) {

[Demonstration 2]

[Buggy Method]
public StepCounter newInstance(String name) {
    return new StepCounter(MonitorConfig.builder(name).build(), step, clock);
}

[Buggy Hunk]
return new StepCounter(MonitorConfig.builder(name).build(), step, clock);

[Patch]
return new StepCounter(MonitorConfig.builder(name).build(), STEP, clock);

[Demonstration 3]

[Buggy Method]
private void startDataReport(final MemeLib memeLib, final CallbackContext callbackContext) {
    mDataReportCallback = callbackContext;
    MemeStatus status = memeLib.startDataReport(new MemeRealtimeListener() {

        @Override
        public void memeRealtimeCallback(final MemeRealtimeData memeRealtimeData) {
            if (cordova.getActivity() == null) {
                return false;
            }
            cordova.getActivity().runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    if (mIsRunning && isAvailable(mDataReportCallback)) {
                        try {
                            PluginResult result = new PluginResult(PluginResult.Status.OK, Message.convertToJSONObject(memeRealtimeData));
                            result.setKeepCallback(true);
                            mDataReportCallback.sendPluginResult(result);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }
            });
        }
    });
    if (MemeStatus.MEME_OK != status) {
        debug("Failed to start data report: " + status);
        mDataReportCallback = null;
        callbackContext.error(Message.getError(status));
    }
}

[Buggy Hunk]
if(cordova.getActivity() == null) {

[Patch]
if(!cordova.getActivity()) {