[Demonstration 1]

[Buggy Method]
public void setRootViewId(int id) {
    mRootView = (ViewGroup) inflater.inflate(id, null);
    mTrack = (ViewGroup) mRootView.findViewById(R.id.tracks);
    mArrowDown = (ImageView) mRootView.findViewById(R.id.arrow_down);
    mArrowUp = (ImageView) mRootView.findViewById(R.id.arrow_up);
    mScroller = (ScrollView) mRootView.findViewById(R.id.scroller);
    //This was previously defined on show() method, moved here to prevent force close that occured
    //when tapping fastly on a view to show quickaction dialog.
    //Thanx to zammbi (github.com/zammbi)
    mRootView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    setContentView(mRootView);
}

[Buggy Hunk]
mRootView	= (ViewGroup) inflater.inflate(id, null);

[Patch]
mRootView	= (ViewGroup) mInflater.inflate(id, null);

[Demonstration 2]

[Buggy Method]
public Train createReverseTrain(String id, String number, int time, Train copiedTrain) {
    // create train
    Train train = copiedTrain.getDiagram().getPartFactory().createTrain(id);
    train.setNumber(number);
    train.setType(copiedTrain.getType());
    train.setDescription(copiedTrain.getDescription());
    train.setTopSpeed(copiedTrain.getTopSpeed());
    train.getAttributes().add(copiedTrain.getAttributes());
    // get original intervals in reverse order
    LinkedList<TimeInterval> reverseIntervals = new LinkedList<>();
    for (TimeInterval interval : copiedTrain.getTimeIntervalList()) {
        reverseIntervals.addFirst(interval);
    }
    int currentTime = time;
    // create time intervals
    for (TimeInterval originalInterval : reverseIntervals) {
        TimeInterval interval = null;
        if (originalInterval.isNodeOwner()) {
            interval = new TimeInterval(IdGenerator.getInstance().getId(), train, originalInterval.getOwner(), currentTime, currentTime + originalInterval.getLength(), null);
        } else {
            interval = new TimeInterval(IdGenerator.getInstance().getId(), train, originalInterval.getOwner(), 0, 0, originalInterval.getSpeedLimit(), originalInterval.getDirection().reverse(), null, originalInterval.getAddedTime());
        }
        currentTime = interval.getEnd();
        train.addInterval(interval);
    }
    train.recalculate();
    train.assignEmptyTracks();
    return train;
}

[Buggy Hunk]
train.getAttributes().add(copiedTrain.getAttributes());

[Patch]
copyAttributes(copiedTrain, train);

[Demonstration 3]

[Buggy Method]
public static Vector makeShapeVector(final FaceData faceData) {
    final Point2D anchor = faceData.getPoint(ANCHOR_POINT_INDEX);
    final double scale = calculateNormalizationScale(faceData);
    final Vector r = new Vector(faceData.getPointCount() * 2);
    int i = 0;
    for (final Point2D point : faceData.getPoints()) {
        r.set(i++, (point.getX() - anchor.getX()) * scale);
        r.set(i++, (point.getY() - anchor.getY()) * scale);
    }
    return r;
}

[Buggy Hunk]
final Point2D anchor = faceData.getPoint(ANCHOR_POINT_INDEX);

[Patch]
final Point2D anchor = getAnchorPoint(faceData);