[Demonstration 1]

[Buggy Method]
public int read(byte[] buffer, int off, int len) throws IOException {
    int[] byteSums = new int[len];
    byte[] singleRead = new byte[len];
    int totalReads = 0;
    int maxLen = 0;
    for (int a = 0; a < trackList.size(); a++) {
        Track t = trackList.get(a);
        int frameSize = t.getFormat().getFrameSize();
        if (t.startSample() * frameSize < (curSample + len) && curSample < (t.startSample() + t.getLengthInSamples()) * frameSize) {
            totalReads++;
            long samplesToRead;
            int offset = 0;
            if (curSample < t.startSample() * frameSize) {
                samplesToRead = (curSample + len) - t.startSample() * frameSize;
                offset = (int) (t.startSample() - curSample);
            } else if ((curSample + len) > (t.startSample() + t.getLengthInSamples()) * frameSize) {
                samplesToRead = (t.startSample() + t.getLengthInSamples()) * frameSize - (curSample);
            } else {
                samplesToRead = len;
            }
            t.getDataStream().read(singleRead, offset, (int) samplesToRead);
            for (int b = 0; b < samplesToRead; b++) {
                byteSums[b + offset] += singleRead[b + offset];
            }
            maxLen = Math.max((int) samplesToRead, maxLen);
        }
    }
    for (int a = 0; a < len; a++) {
        if (byteSums[a] > Byte.MAX_VALUE)
            byteSums[a] = Byte.MAX_VALUE;
        if (byteSums[a] < Byte.MIN_VALUE)
            byteSums[a] = Byte.MIN_VALUE;
        buffer[a] = (byte) (byteSums[a]);
    }
    curSample += (len);
    if (totalReads == 0)
        return -1;
    else
        return maxLen;
}

[Buggy Hunk]
offset = (int)(t.startSample() - curSample);

[Patch]
offset = (int)((t.startSample() * frameSize) - curSample);

[Demonstration 2]

[Buggy Method]
void switchTwoColumns(int columnIndex, int columnToIndex) {
    for (int i = 0; i < getRowCount(); i++) {
        Object cellData = getItems()[i][columnToIndex];
        getItems()[i][columnToIndex] = getItems()[i][columnIndex];
        getItems()[i][columnIndex] = cellData;
    }
}

[Buggy Hunk]
for (int i = 0; i < getRowCount(); i++) {

[Patch]
for (int i = 0; i < getRowCount() - 1; i++) {

[Demonstration 3]

[Buggy Method]
private void checkFinished() {
    for (TypeRecord record : getState().getTypeRecordsByTypeName().values()) {
        if (record.isInterface() || typesWithAssignedProto.contains(record)) {
            continue;
        }
        JSTypeExpression extendedType = record.getExtendedType();
        if (extendedType != null) {
            Node rootNode = extendedType.getRootNode();
            if (rootNode.getType() == Token.BANG && rootNode.getFirstChild() != null) {
                rootNode = rootNode.getFirstChild();
            }
            getContext().reportErrorAtOffset(rootNode.getSourceOffset(), String.format("No __proto__ assigned for type %s having @extends", record.typeName));
        }
    }
}

[Buggy Hunk]
Node rootNode = extendedType.getRootNode();

[Patch]
Node rootNode = extendedType.getRoot();