[Demonstration 1]

[Buggy Method]
private Optional<S3ObjectInfo> openFile(S3ObjectSummary objSummary) {
    S3Object object = s3Client.getObject(bucketName, objSummary.getKey());
    S3ObjectInputStream is = object.getObjectContent();
    String key = objSummary.getKey();
    try {
        // roll the meta file, if needed
        PositionTracker tracker = DurablePositionTracker.getInstance(metaFile, key);
        if (!tracker.getTarget().equals(key)) {
            tracker.close();
            System.out.println("Deleting META FILE -------------------------");
            deleteMetaFile();
            tracker = DurablePositionTracker.getInstance(metaFile, key);
        }
        // sanity check
        Preconditions.checkState(tracker.getTarget().equals(key), "Tracker target %s does not equal expected filename %s", tracker.getTarget(), key);
        ResettableInputStream in = new ResettableGenericInputStream(new S3StreamCreator(s3Client, bucketName, key), tracker, ResettableGenericInputStream.DEFAULT_BUF_SIZE, inputCharset, decodeErrorPolicy, objSummary.getSize());
        EventDeserializer deserializer = EventDeserializerFactory.getInstance(deserializerType, deserializerContext, in);
        return Optional.of(new S3ObjectInfo(key, deserializer, objSummary.getSize()));
    } catch (FileNotFoundException e) {
        // File could have been deleted in the interim
        logger.warn("Could not find file: " + key, e);
        return Optional.absent();
    } catch (IOException e) {
        logger.error("Exception opening file: " + key, e);
        return Optional.absent();
    }
}

[Buggy Hunk]
System.out.println("Deleting META FILE -------------------------");

[Patch]
logger.debug("Deleting Meta file");

[Demonstration 2]

[Buggy Method]
public String get(String key) {
    //MagicBooleans.trace("predicates.get(key: " + key + ")");
    String result = super.get(key);
    result = jedis.get(buildKey(key));
    logger.debug("read value {}, {}", key, result);
    if (result == null)
        result = MagicStrings.default_get;
    //MagicBooleans.trace("in predicates.get, returning: " + result);
    return result;
}

[Buggy Hunk]
logger.debug("read value {}, {}", key, result);

[Patch]
logger.trace("read value {}, {}", key, result);

[Demonstration 3]

[Buggy Method]
public static Result service(String ownerName, String projectName, String service, boolean isAdvertise) throws IOException, UnsupportedOperationException, ServletException {
    if (!isSupportedService(service)) {
        return forbidden(String.format("Unsupported service: '%s'", service));
    }
    Project project = Project.findByOwnerAndProjectName(ownerName, projectName);
    if (project == null) {
        return notFound();
    }
    models.User user = UserApp.currentUser();
    if (!isAllowed(project, service)) {
        if (user.isAnonymous()) {
            return BasicAuthAction.unauthorized(response());
        } else {
            // If you want the Git client showing your custom message to
            // the user, the Content-Type should be exact "text/plain"
            // without any parameter. For more details, see the code at
            // https://github.com/git/git/commit/426e70d4a11ce3b4f70636d57c6a0ab16ae08a00#diff-eea0ad565ec5903a11b6023755d491cfR154
            response().setHeader("Content-Type", "text/plain");
            return forbidden(String.format("'%s' has no permission to '%s/%s'.", user.name, ownerName, projectName));
        }
    }
    if (isAdvertise) {
        return ok(RepositoryService.gitAdvertise(project, service, response()));
    } else {
        if (request().body().isMaxSizeExceeded()) {
            return status(REQUEST_ENTITY_TOO_LARGE);
        } else {
            user.visits(project);
            return ok(RepositoryService.gitRpc(project, service, request(), response()));
        }
    }
}

[Buggy Hunk]
user.name, ownerName, projectName));

[Patch]
user.loginId, ownerName, projectName));