class PersianCalendar extends AbstractCalendar {

    @Override
    public DateTimeUnit plusDays( DateTimeUnit dateTimeUnit, int days )
    {
        if ( days < 0 )
        {
            return minusDays( dateTimeUnit, Math.abs( days ) );
        }

        int curYear = dateTimeUnit.getYear();
        int curMonth = dateTimeUnit.getMonth();
        int curDay = dateTimeUnit.getDay();
        int dayOfWeek = dateTimeUnit.getDayOfWeek();
        int newDays = days;

        while ( newDays != 0 )
        {
            if ( curDay < getDaysFromMap( curYear, curMonth ) )
            {
                curDay++;
            }
            else
            {
                curMonth++;
                curDay = 1;
                if ( curMonth == 13 )
                {
                    curMonth = 1;
                    curYear++;
                }
            }
            newDays--;
            dayOfWeek++;
            if ( dayOfWeek == 8 )
            {
                dayOfWeek = 1;
            }
        }

        return new DateTimeUnit( curYear, curMonth, curDay, dayOfWeek, false );
    }

}