[Demonstration 1]

[Buggy Method]
protected void onSessionStateChange(Session session, SessionState state, Exception exception) {
    if (session != null && session.isOpened()) {
        logAndShowOnScreen("\nLogged in. Getting user details.");
        Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {

            @Override
            public void onCompleted(GraphUser user, Response response) {
                if (user != null) {
                    System.out.println("onSessionStateChange: LoadNotes: session is open. username:" + user.getName());
                    loadNotes(getActivity(), getLoggedInUsername());
                }
            }
        });
        Request.executeBatchAsync(request);
    } else {
        logAndShowOnScreen("\nUser not already logged in.");
        System.out.println("onSessionStateChange: LoadNotes: session was closed.");
        loadNotes(getActivity(), getLoggedInUsername());
    }
}

[Buggy Hunk]
loadNotes(getActivity(), getLoggedInUsername());

[Patch]
loadNotes(getActivity(), user.getId());

[Demonstration 2]

[Buggy Method]
private void initialiseTargetsRegistry() throws WebMVCException {
    // get the actions configuration repository
    registry = new TargetRegistry();
    // set the root directory for HTML files and JSPs, for auto-configured
    // annotated actions
    registry.setJspPathInfo(Parameter.JSP_ROOT_PATH.getValueFor(filter), Parameter.JSP_PATH_PATTERN.getValueFor(filter));
    // pre-scan existing classes and methods in the default actions package
    TargetFactory loader = null;
    String value = Parameter.ACTIONS_ENABLE_VALIDATION.getValueFor(filter);
    if (Strings.isValid(value) && value.equalsIgnoreCase("true")) {
        loader = new TargetFactory(true);
    } else {
        loader = new TargetFactory(false);
    }
    String parameter = Parameter.ACTIONS_JAVA_PACKAGES.getValueFor(filter);
    if (Strings.isValid(parameter)) {
        logger.trace("scanning for actions in packages: '{}'", parameter);
        String[] packages = Strings.split(parameter, ",", true);
        for (String pkg : packages) {
            loader.makeFromJavaPackage(registry, interceptors, pkg);
        }
    } else {
        logger.error("no Java packages specified for actions: check parameter '{}'", Parameter.ACTIONS_JAVA_PACKAGES.getName());
        throw new DeploymentException("No Java package specified for actions: check parameter '" + Parameter.ACTIONS_JAVA_PACKAGES.getName() + "'");
    }
    logger.trace("actions configuration:\n{}", registry.toString());
}

[Buggy Hunk]
logger.trace("actions configuration:\n{}", registry.toString());

[Patch]
logger.info("actions configuration:\n{}", registry.toString());

[Demonstration 3]

[Buggy Method]
@Override
public Response fetch(Request request) throws FetchException {
    Response response = Response.create(request);
    try {
        if (!supportMethod(request)) {
            throw new FetchException("Not support method[" + request.method() + "].");
        }
        HttpUriRequest uriRequest = createHttpUriRequest(request);
        ResponseHandler<Object> responseHandler = new CompositedResponseHandler(response);
        this.httpClient.execute(uriRequest, responseHandler);
    } catch (ClientProtocolException e) {
        logger.error("Couldn't retrive response of url[{}].", request.url2str(), e);
        throw new FetchException(e);
    } catch (IOException e) {
        logger.error("Couldn't retrive response of url[{}].", request.url2str(), e);
    }
    return response;
}

[Buggy Hunk]
ResponseHandler<Object> responseHandler = new CompositedResponseHandler(response);

[Patch]
ResponseHandler<Object> responseHandler = new CompositedResponseHandler(request, response);