class PersianCalendar extends AbstractCalendar {

    @Override
    public DateTimeUnit plusMonths( DateTimeUnit dateTimeUnit, int months )
    {
        if ( months < 0 )
        {
            return minusMonths( dateTimeUnit, Math.abs( months ) );
        }

        DateTimeUnit result = new DateTimeUnit( dateTimeUnit );
        int newMonths = months;

        while ( newMonths != 0 )
        {
            result.setMonth( result.getMonth() + 1 );

            if ( result.getMonth() > monthsInYear() )
            {
                result.setMonth( 1 );
                result.setYear( result.getYear() + 1 );
            }

            newMonths--;
        }

        updateDateUnit( result );

        return result;
    }

}