question: protected DateTimeData parse ( String str ) throws SchemaDateTimeException { DateTimeData date = new DateTimeData ( str , this ) ; int len = str . length ( ) ; date . year = YEAR ; if ( str . charAt ( 0 ) != '-' || str . charAt ( 1 ) != '-' ) { throw new SchemaDateTimeException ( "Invalid format for gMonthDay: " + str ) ; } date . month = parseInt ( str , 2 , 4 ) ; int start = 4 ; if ( str . charAt ( start ++ ) != '-' ) { throw new SchemaDateTimeException ( "Invalid format for gMonthDay: " + str ) ; } date . day = parseInt ( str , start , start + 2 ) ; if ( MONTHDAY_SIZE < len ) { if ( ! isNextCharUTCSign ( str , MONTHDAY_SIZE , len ) ) { throw new SchemaDateTimeException ( "Error in month parsing:" + str ) ; } else { getTimeZone ( str , date , MONTHDAY_SIZE , len ) ; } } validateDateTime ( date ) ; saveUnnormalized ( date ) ; if ( date . utc != 0 && date . utc != 'Z' ) { normalize ( date ) ; } date . position = 1 ; return date ; }
target:  Parses, validates and computes normalized version of gMonthDay object