[Demonstration 1]

[Buggy Method]
private void doPinCardReplacementRequest(final String pinCardJson, final boolean newPin, final CallbackBuilder callbackBuilder) {
    pinClient.putFormAsyncWith2Params("/services/pin/invalidateCard", "pinCard", pinCardJson, "newPin", newPin, (code, contentType, body) -> {
        if (code == HTTP_OK) {
            MessageWrapper messageWrapper = jsonConverter.fromJson(JSONParser.removeEscapeCharacters(body), MessageWrapper.class);
            if (!messageWrapper.isError()) {
                sendPinCardReplacementCallback(body, callbackBuilder);
            } else {
                callbackBuilder.build().reply(body);
            }
        } else {
            callbackBuilder.build().reply(jsonConverter.toJson(JSONParser.createMessageWrapper(true, 500, "An unknown error occurred.", "There was a problem with one of the HTTP requests")));
        }
    });
}

[Buggy Hunk]
sendPinCardReplacementCallback(body, callbackBuilder);

[Patch]
sendPinCardReplacementCallback(JSONParser.removeEscapeCharacters(body), callbackBuilder);

[Demonstration 2]

[Buggy Method]
@Test
public void testAuthenticatedApplicationTokenRepositoryCleanup() throws Exception {
    int applications = AuthenticatedApplicationTokenRepository.getMapSize();
    ApplicationCredential cred = new ApplicationCredential("1212", "testapp", "dummy");
    ApplicationToken imp = ApplicationTokenMapper.fromApplicationCredentialXML(ApplicationCredentialMapper.toXML(cred));
    imp.setExpires(String.valueOf(System.currentTimeMillis() + DEFAULT_SESSION_EXTENSION_TIME_IN_SECONDS * 1000));
    AuthenticatedApplicationTokenRepository.addApplicationToken(imp);
    ApplicationToken imp2 = ApplicationTokenMapper.fromApplicationCredentialXML(ApplicationCredentialMapper.toXML(cred));
    imp2.setExpires(String.valueOf(System.currentTimeMillis() + 1 * 1000));
    AuthenticatedApplicationTokenRepository.addApplicationToken(imp2);
    int applicationsNow = AuthenticatedApplicationTokenRepository.getMapSize();
    assertTrue(applications == applicationsNow - 2);
    Thread.sleep(1500);
    AuthenticatedApplicationTokenRepository.cleanApplicationTokenMap();
    int applicationsNow2 = AuthenticatedApplicationTokenRepository.getMapSize();
    assertTrue(applications == applicationsNow2 - 1);
}

[Buggy Hunk]
imp2.setExpires(String.valueOf(System.currentTimeMillis() + 1 * 1000));

[Patch]
imp2.setExpires(String.valueOf(System.currentTimeMillis() + 1 * 300));  // Only one second here

[Demonstration 3]

[Buggy Method]
@Override
public Collection<?> valuesAt(String path, Object object) {
    final Converter converter = new StandardConverter();
    @SuppressWarnings("unchecked")
    final Map<String, Object> map = (Map<String, Object>) converter.convert(object).to(Map.class);
    if (map == null || map.isEmpty())
        return Collections.emptyList();
    if (path.startsWith("/"))
        path = path.substring(1);
    String[] pathParts = path.split("/");
    if (pathParts.length <= 0)
        return Collections.emptyList();
    List<String> contexts = Arrays.asList(pathParts);
    return valuesAt("", map, contexts, 0);
}

[Buggy Hunk]
final Map<String, Object> map = (Map<String, Object>)converter.convert( object ).to( Map.class );

[Patch]
final Map<String, Object> map = (Map<String, Object>)converter.convert(object).sourceAs(DTO.class).to( Map.class );