[Demonstration 2]

[Buggy Method]
void dropSessionData(VaadinSessionDestroyEvent event) {
    long sessionId = event.getSessionId();
    getLogger().fine("Dropping session data for session: " + sessionId);
    SessionData sessionData = storageMap.remove(sessionId);
    if (sessionData != null) {
        synchronized (sessionData) {
            Map<Integer, UIData> map = sessionData.getUiDataMap();
            for (UIData uiData : new ArrayList<UIData>(map.values())) {
                dropUIData(sessionData, uiData);
            }
        }
    }
}

[Buggy Hunk]
dropUIData(sessionData, uiData);

[Patch]
dropUIData(sessionData, uiData.getUiId());

[Demonstration 3]

[Buggy Method]
@GetMapping("/callback")
Object callback(@RequestParam String code) {
    GithubTokenResponse response = restTemplate.postForEntity(githubConfig.getAccessTokenUri(code), null, GithubTokenResponse.class).getBody();
    logger.info("tokenResponse: {}", response);
    GithubUser user = restTemplate.getForEntity(githubConfig.getUserUri(response.getAccessToken()), GithubUser.class).getBody();
    logger.info("user: {}");
    SecurityContextHolder.getContext().setAuthentication(user.toAuthentication());
    return "redirect:/";
}

[Buggy Hunk]
logger.info("user: {}");

[Patch]
logger.info("user: {}", user);