[Demonstration 1]

[Buggy Method]
public String moveUpCommandHistory() {
    if (indexOfCommand <= 0 || commandHistory == null || commandHistory.isEmpty()) {
        indexOfCommand = -1;
        return null;
    } else {
        indexOfCommand--;
        return commandHistory.get(indexOfCommand);
    }
}

[Buggy Hunk]
if (indexOfCommand <= 0 || commandHistory == null || commandHistory.isEmpty()) {

[Patch]
if (indexOfCommand <= 0 || commandHistory == null || commandHistory.size() < indexOfCommand) {

[Demonstration 2]

[Buggy Method]
@Override
public AppendEntriesResponse onAppendEntriesRequest(AppendEntriesRequest request) {
    logger.info("[{}] append entries request / heartbeat from {}, term {}", getCurrentRole(), request.getLeaderId(), request.getLeaderTerm());
    syncCurrentTerm(request.getLeaderTerm(), request.getLeaderId());
    heartbeats.addLast(System.currentTimeMillis());
    final AppendEntriesResponse.Builder builder = AppendEntriesResponse.newBuilder().setSuccess(false);
    // the term is new
    if (request.getLeaderTerm() >= getCurrentTerm()) {
        final LogEntry lastEntry = persistence.getLastLogEntry();
        if (lastEntry == null) {
            request.getLogEntriesList().stream().forEach(persistence::applyLogEntry);
            updateCommitIndex(request);
            builder.setSuccess(true);
        } else if (lastEntry.getLogIndex() >= request.getPrevLogIndex()) {
            final LogEntry entry = persistence.getLogEntry(request.getPrevLogIndex());
            if (entry.getTerm() == request.getPrevLogTerm()) {
                request.getLogEntriesList().stream().forEach(persistence::applyLogEntry);
                updateCommitIndex(request);
                builder.setSuccess(true);
            } else {
                logger.warn("[{}] prev entry mismatch, local last term {}, remote prev term {}", getCurrentRole(), entry.getTerm(), request.getPrevLogTerm());
            }
        } else {
            logger.warn("[{}] log entries are too new, remote prev index {}", getCurrentRole(), request.getPrevLogIndex());
        }
    }
    return builder.setSenderID(getServerId()).setTerm(getCurrentTerm()).build();
}

[Buggy Hunk]
} else if (lastEntry.getLogIndex() >= request.getPrevLogIndex()) {

[Patch]
} else if (persistence.getLastLogIndex() >= request.getPrevLogIndex()) {

[Demonstration 3]

[Buggy Method]
public static boolean falseInConfig(String key) {
    boolean keyExists = existsInConfig(key);
    if (keyExists) {
        return !isTrue(key);
    } else {
        return false;
    }
}

[Buggy Hunk]
return !isTrue(key);

[Patch]
return !isTrue(configuration.get(key));