[Demonstration 1]

[Buggy Method]
@Path("/{" + Constants.ID + "}/data")
@GET
public Response getDataById(@PathParam(Constants.ID) String id, @HeaderParam("Range") ByteRange range) {
    Optional<? extends Media> optional = mediaService.getById(id, true);
    if (optional.isPresent()) {
        Media media = optional.get();
        if (range == null) {
            range = ByteRange.from(0);
        }
        return MediaStreamingResponse.media(media).range(range).cacheControl(CacheControlUtils.permanent()).build();
    } else {
        return Response.status(Response.Status.NOT_FOUND).build();
    }
}

[Buggy Hunk]
range = ByteRange.from(0);

[Patch]
range = ByteRange.between(0, media.getLength());

[Demonstration 2]

[Buggy Method]
private void publishProgress(long totalBytes, long bytesRead) {
    if (progressListener == null)
        return;
    if (totalBytes >= 0) {
        progressListener.onIndeterminate();
    } else {
        progressListener.onProgress(totalBytes, bytesRead);
    }
}

[Buggy Hunk]
if(totalBytes >= 0) {

[Patch]
if(totalBytes <= 0 || bytesRead <= 0) {

[Demonstration 3]

[Buggy Method]
public void extract() {
    PrintStream stdOut = System.out;
    PrintStream stdErr = System.err;
    FileOutputStream logFile = null;
    try {
        File outputDirectory = this.outputDirectory;
        // If output directory is not specified, default to working directory
        if (outputDirectory == null) {
            outputDirectory = new File(".");
        }
        if (logFileEnabled) {
            try {
                outputDirectory.mkdirs();
                logFile = new FileOutputStream(new File(outputDirectory, "TExtract.log"));
                System.setOut(new PrintStream(new TeeOutputStream(stdOut, logFile)));
                System.setErr(new PrintStream(new TeeOutputStream(stdErr, logFile)));
            } catch (IOException ex) {
                ex.printStackTrace();
                return;
            }
        }
        for (File inputFile : inputFiles) totalBytes += count(inputFile);
        for (File inputFile : inputFiles) traverse(inputFile, inputFile.getParentFile(), outputDirectory);
    } finally {
        if (logFileEnabled) {
            System.setOut(stdOut);
            System.setErr(stdErr);
            IOUtils.closeQuietly(logFile);
        }
    }
}

[Buggy Hunk]
totalBytes += count(inputFile);

[Patch]
totalFiles += count(inputFile);