[Demonstration 1]

[Buggy Method]
@Override
public int remove(int idx) {
    if (idx < 0 || idx >= length) {
        printLengthError();
        return 0;
    }
    if (length * 4 <= bufferSize) {
        reallocate(bufferSize * 2);
    }
    length--;
    int item = buffer[idx];
    System.arraycopy(buffer, idx + 1, buffer, idx, length - idx);
    return item;
}

[Buggy Hunk]
reallocate(bufferSize * 2);

[Patch]
reallocate(bufferSize / 2);

[Demonstration 2]

[Buggy Method]
private AudioRecord setupRecorder() {
    int channelConfig = AudioFormat.CHANNEL_IN_MONO;
    int encoding = AudioFormat.ENCODING_PCM_16BIT;
    int minBufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, encoding);
    if (minBufferSize != AudioRecord.ERROR_BAD_VALUE) {
        AudioRecord record = new AudioRecord(AudioSource.MIC, sampleRate, channelConfig, encoding, minBufferSize);
        if (record.getState() == AudioRecord.STATE_INITIALIZED) {
            this.bufferIndex = 0;
            this.tBufferSize = minBufferSize;
            this.tBufferSize = 128;
            //this.mAudioFormat = encoding;
            mSampleRate = sampleRate;
            Log.i(TAG, "Buffer size: " + this.tBufferSize);
            mRecordBuffer = new short[sampleRate * REC_SECONDS];
            // 1 sec
            mHeterodyneBuffer = new float[sampleRate * 1];
            return record;
        }
    }
    Log.e(TAG, "Cannot record with sample rate = " + sampleRate);
    return null;
}

[Buggy Hunk]
mHeterodyneBuffer = new float[sampleRate * 1]; // 1 sec

[Patch]
mHeterodyneBuffer = new double[sampleRate * 1]; // 1 sec

[Demonstration 3]

[Buggy Method]
public static SessionStartPointer someSecondsBack(int secondsBackToStartTheSessionFrom) {
    return new SessionStartPointer(secondsBackToStartTheSessionFrom * 1000);
}

[Buggy Hunk]
return new SessionStartPointer(secondsBackToStartTheSessionFrom * 1000);

[Patch]
return new SessionStartPointer(-Math.abs(secondsBackToStartTheSessionFrom * 1000));