[Demonstration 1]

[Buggy Method]
@Override
public ApplicationAttemptReport createApplicationAttemptReport() {
    this.readLock.lock();
    ApplicationAttemptReport attemptReport = null;
    try {
        // AM container maybe not yet allocated. and also unmangedAM doesn't have
        // am container.
        ContainerId amId = masterContainer == null ? null : masterContainer.getId();
        attemptReport = ApplicationAttemptReport.newInstance(this.getAppAttemptId(), this.getHost(), this.getRpcPort(), this.getTrackingUrl(), this.getOriginalTrackingUrl(), this.getDiagnostics(), YarnApplicationAttemptState.valueOf(this.getState().toString()), amId, this.startTime, this.finishTime);
    } finally {
        this.readLock.unlock();
    }
    return attemptReport;
}

[Buggy Hunk]
YarnApplicationAttemptState.valueOf(this.getState().toString()),

[Patch]
this.createApplicationAttemptState(),

[Demonstration 2]

[Buggy Method]
public void addRequest(Request req) {
    requests.add(req);
}

[Buggy Hunk]
public void addRequest(Request req) {

[Patch]
public synchronized void addRequest(Request req) {

[Demonstration 3]

[Buggy Method]
public void addRequest(BaseDeferredRequest request, Object owner) {
    request.setTag(owner);
    request.setRetryPolicy(new VolleyRetryPolicy(TIMEOUT_MS, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    requestQueue.add(request);
    LogHelper.instance().log("Adding request to queue (%s): %s", owner, request.getUrl());
}

[Buggy Hunk]
request.setTag(owner);

[Patch]
request.setTag(owner.getClass().getSimpleName());