[Demonstration 1]

[Buggy Method]
private void drawHeaderRowAndEvents(Canvas canvas) {
    // Calculate the available width for each day.
    mHeaderColumnWidth = mTimeTextWidth + mHeaderColumnPadding * 2;
    mWidthPerDay = getWidth() - mHeaderColumnWidth - mColumnGap * (mNumberOfVisibleDays - 1);
    mWidthPerDay = mWidthPerDay / mNumberOfVisibleDays;
    if (mAreDimensionsInvalid) {
        mAreDimensionsInvalid = false;
        if (mScrollToDay != null)
            goToDate(mScrollToDay);
        mAreDimensionsInvalid = false;
        if (mScrollToHour >= 0)
            goToHour(mScrollToHour);
        mScrollToDay = null;
        mScrollToHour = -1;
        mAreDimensionsInvalid = false;
    }
    if (mIsFirstDraw) {
        mIsFirstDraw = false;
        // If the week view is being drawn for the first time, then consider the first day of the week.
        if (mNumberOfVisibleDays >= 7 && mToday.get(Calendar.DAY_OF_WEEK) != mFirstDayOfWeek) {
            int difference = 7 + (mToday.get(Calendar.DAY_OF_WEEK) - mFirstDayOfWeek);
            mCurrentOrigin.x += (mWidthPerDay + mColumnGap) * difference;
        }
    }
    // Consider scroll offset.
    if (mCurrentScrollDirection == Direction.HORIZONTAL)
        mCurrentOrigin.x -= mDistanceX;
    int leftDaysWithGaps = (int) -(Math.ceil(mCurrentOrigin.x / (mWidthPerDay + mColumnGap)));
    float startFromPixel = mCurrentOrigin.x + (mWidthPerDay + mColumnGap) * leftDaysWithGaps + mHeaderColumnWidth;
    float startPixel = startFromPixel;
    // Prepare to iterate for each day.
    Calendar day = (Calendar) mToday.clone();
    day.add(Calendar.HOUR, 6);
    // Prepare to iterate for each hour to draw the hour lines.
    int lineCount = (int) ((getHeight() - mHeaderTextHeight - mHeaderRowPadding * 2 - mHeaderMarginBottom) / mHourHeight) + 1;
    lineCount = (lineCount) * (mNumberOfVisibleDays + 1);
    float[] hourLines = new float[lineCount * 4];
    // Clear the cache for event rectangles.
    if (mEventRects != null) {
        for (EventRect eventRect : mEventRects) {
            eventRect.rectF = null;
        }
    }
    // Iterate through each day.
    Calendar oldFirstVisibleDay = mFirstVisibleDay;
    mFirstVisibleDay = (Calendar) mToday.clone();
    mFirstVisibleDay.add(Calendar.DATE, leftDaysWithGaps);
    if (!mFirstVisibleDay.equals(oldFirstVisibleDay) && mScrollListener != null) {
        mScrollListener.onFirstVisibleDayChanged(mFirstVisibleDay, oldFirstVisibleDay);
    }
    for (int dayNumber = leftDaysWithGaps + 1; dayNumber <= leftDaysWithGaps + mNumberOfVisibleDays + 1; dayNumber++) {
        // Check if the day is today.
        day = (Calendar) mToday.clone();
        mLastVisibleDay = (Calendar) day.clone();
        day.add(Calendar.DATE, dayNumber - 1);
        mLastVisibleDay.add(Calendar.DATE, dayNumber - 2);
        boolean sameDay = isSameDay(day, mToday);
        // Get more events if necessary. We want to store the events 3 months beforehand. Get
        // events only when it is the first iteration of the loop.
        if (mEventRects == null || mRefreshEvents || (dayNumber == leftDaysWithGaps + 1 && mFetchedMonths[1] != day.get(Calendar.MONTH) + 1 && day.get(Calendar.DAY_OF_MONTH) == 15)) {
            getMoreEvents(day);
            mRefreshEvents = false;
        }
        // Draw background color for each day.
        float start = (startPixel < mHeaderColumnWidth ? mHeaderColumnWidth : startPixel);
        if (mWidthPerDay + startPixel - start > 0)
            canvas.drawRect(start, mHeaderTextHeight + mHeaderRowPadding * 2 + mTimeTextHeight / 2 + mHeaderMarginBottom, startPixel + mWidthPerDay, getHeight(), sameDay ? mTodayBackgroundPaint : mDayBackgroundPaint);
        // Prepare the separator lines for hours.
        int i = 0;
        for (int hourNumber = 0; hourNumber < 24; hourNumber++) {
            float top = mHeaderTextHeight + mHeaderRowPadding * 2 + mCurrentOrigin.y + mHourHeight * hourNumber + mTimeTextHeight / 2 + mHeaderMarginBottom;
            if (top > mHeaderTextHeight + mHeaderRowPadding * 2 + mTimeTextHeight / 2 + mHeaderMarginBottom - mHourSeparatorHeight && top < getHeight() && startPixel + mWidthPerDay - start > 0) {
                hourLines[i * 4] = start;
                hourLines[i * 4 + 1] = top;
                hourLines[i * 4 + 2] = startPixel + mWidthPerDay;
                hourLines[i * 4 + 3] = top;
                i++;
            }
        }
        // Draw the lines for hours.
        canvas.drawLines(hourLines, mHourSeparatorPaint);
        // Draw the events.
        drawEvents(day, startPixel, canvas);
        // In the next iteration, start from the next day.
        startPixel += mWidthPerDay + mColumnGap;
    }
    // Draw the header background.
    canvas.drawRect(0, 0, getWidth(), mHeaderTextHeight + mHeaderRowPadding * 2, mHeaderBackgroundPaint);
    // Draw the header row texts.
    startPixel = startFromPixel;
    for (int dayNumber = leftDaysWithGaps + 1; dayNumber <= leftDaysWithGaps + mNumberOfVisibleDays + 1; dayNumber++) {
        // Check if the day is today.
        day = (Calendar) mToday.clone();
        day.add(Calendar.DATE, dayNumber - 1);
        boolean sameDay = isSameDay(day, mToday);
        // Draw the day labels.
        String dayLabel = getDateTimeInterpreter().interpretDate(day);
        if (dayLabel == null)
            throw new IllegalStateException("A DateTimeInterpreter must not return null date");
        canvas.drawText(dayLabel, startPixel + mWidthPerDay / 2, mHeaderTextHeight + mHeaderRowPadding, sameDay ? mTodayHeaderTextPaint : mHeaderTextPaint);
        startPixel += mWidthPerDay + mColumnGap;
    }
}

[Buggy Hunk]
int difference = 7 + (mToday.get(Calendar.DAY_OF_WEEK) - mFirstDayOfWeek);

[Patch]
int difference = (7 + (mToday.get(Calendar.DAY_OF_WEEK) - mFirstDayOfWeek)) % 7;

[Demonstration 2]

[Buggy Method]
private String getDateMonthYearName(Date toDate) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(toDate);
    int date = calendar.get(Calendar.DATE);
    int month = calendar.get(Calendar.MONTH) + 1;
    int year = (calendar.get(Calendar.YEAR)) % 100;
    String dateString;
    if (date < 10) {
        dateString = "0" + String.valueOf(date);
    } else
        dateString = String.valueOf(date);
    String monthString = calendar.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.ENGLISH);
    String yearString = String.valueOf(year);
    return dateString + " " + monthString + " " + yearString;
}

[Buggy Hunk]
int date=calendar.get(Calendar.DATE);

[Patch]
int date=calendar.get(Calendar.DATE)-1;

[Demonstration 3]

[Buggy Method]
public static void main(String[] args) {
    System.out.println("How many players do you have?: ");
    int numberOfPlayers = Validator.getValidInt(1, 19);
    int[] exceptionList = new int[2 * (numberOfPlayers + 1)];
    exceptionList[0] = 0;
    teamReturn = new Team[2][numberOfPlayers];
    playerTeam = new int[2][numberOfPlayers];
    int exceptionListIncrement;
    list = fileIOHandler.readData();
    for (int x = 1; x <= 2; x++) {
        exceptionListIncrement = (x - 1) * numberOfPlayers;
        System.out.println("");
        for (int i = 1; i <= numberOfPlayers; i++) {
            teamSelection = randomTeam();
            if (IntStream.of(exceptionList).anyMatch(y -> y == teamSelection)) {
                i--;
            } else {
                playerTeam[x - 1][i - 1] = teamSelection;
                teamReturn[x - 1][i - 1] = findTeam(list, teamSelection);
                exceptionList[exceptionListIncrement + (i)] = teamSelection;
                System.out.print(list.get(teamSelection).getName() + "\t" + "\t");
            }
        }
    }
}

[Buggy Hunk]
System.out.print(list.get(teamSelection).getName() + "\t" + "\t");

[Patch]
System.out.print(list.get(teamSelection - 1).getName() + "\t");