[Demonstration 1]

[Buggy Method]
public static Pageable getPageable(ExtDirectStoreReadRequest request) {
    System.out.println("received request: " + request.toString());
    List<Sort.Order> sorters = Lists.newArrayList();
    for (SortInfo sortinfo : request.getSorters()) {
        String field = sortinfo.getProperty();
        Sort.Direction dir = sortinfo.getDirection() == SortDirection.DESCENDING ? Sort.Direction.DESC : Sort.Direction.ASC;
        sorters.add(new Sort.Order(dir, field));
    }
    Sort sort = new Sort(sorters);
    //System.out.println("sorts: "+sort.toString());
    Pageable pageable = new PageRequest(request.getPage(), request.getLimit(), sort);
    return pageable;
}

[Buggy Hunk]
Pageable pageable=new PageRequest(request.getPage(),request.getLimit(), sort);

[Patch]
Pageable pageable=new PageRequest(request.getPage()-1,request.getLimit(), sort);

[Demonstration 2]

[Buggy Method]
@Override
public Page<SubjectJson> findAllJson(Pageable pageable) {
    Page<Subject> page = findAll(pageable);
    List<SubjectJson> list = page.getContent().stream().map(c -> new SubjectJson(c)).collect(Collectors.toList());
    return new PageImpl<SubjectJson>(list, pageable, page.getTotalElements());
}

[Buggy Hunk]
Page<Subject> page = findAll(pageable);

[Patch]
Page<Subject> page = repository.findByOrderByUpdatedTimeDesc(pageable);

[Demonstration 3]

[Buggy Method]
public synchronized void updateFromXMLFile(File xmlFile, boolean deleteFileAfterProcessing) throws IOException, InterruptedException, SaxonException, TransformerException, IndexerException, XMLStreamException {
    String sourceLocation = getPreferences().getString("bs.studies.source-location");
    if (isNotBlank(sourceLocation)) {
        logger.info("Reload of experiment data from [{}] requested", sourceLocation);
        Indexer indexer = new Indexer(INDEX_ID, saxon.getxPathEvaluator());
        if (xmlFile.getName() == "studies.xml") {
            indexer.clearIndex(false);
        }
        try (InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(xmlFile), "UTF-8")) {
            XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(inputStreamReader);
            XMLEventWriter writer = null;
            StringWriter buffer = null;
            XMLOutputFactory outputFactory = XMLOutputFactory.newFactory();
            // Advance to statements element
            XMLEvent xmlEvent = reader.nextEvent();
            List<Source> submissionQueue = new ArrayList<>();
            int count = 0;
            do {
                if (writer != null)
                    writer.add(xmlEvent);
                if (xmlEvent.isStartElement() && "submission".equalsIgnoreCase(((StartElement) xmlEvent).getName().getLocalPart())) {
                    buffer = new StringWriter();
                    writer = outputFactory.createXMLEventWriter(buffer);
                    writer.add(xmlEvent);
                } else if (xmlEvent.isEndElement() && "submission".equalsIgnoreCase(((EndElement) xmlEvent).getName().getLocalPart())) {
                    writer.flush();
                    writer.close();
                    submissionQueue.add(saxon.buildDocument(buffer.toString()));
                    if (++count % 1000 == 0) {
                        logger.info("Processed {} submissions", count - 1);
                        logger.info("Queued {} submissions for processing", submissionQueue.size());
                        try {
                            processSubmissionQueue(indexer, submissionQueue, false);
                        } catch (Exception ie) {
                            logger.error("Indexer threw an exception", ie);
                            logger.debug("Trying to index the rest of the submissions");
                        }
                        submissionQueue.clear();
                    }
                    writer = null;
                    buffer = null;
                }
                xmlEvent = reader.nextEvent();
            } while (!xmlEvent.isEndDocument());
            logger.info("Queued {} submissions for processing", submissionQueue.size());
            processSubmissionQueue(indexer, submissionQueue, true);
        }
        autocompletion.rebuild();
    }
    if (deleteFileAfterProcessing) {
        xmlFile.delete();
    }
}

[Buggy Hunk]
if (xmlFile.getName()=="studies.xml") {

[Patch]
if (xmlFile.getName().equalsIgnoreCase("studies.xml")) {