package Ġi ii _ con ventions Ċ Ċ import Ġjava . util . Calendar Ċ Ċ data Ġclass ĠMy Date ( val Ġyear : ĠInt , Ġval Ġmonth : ĠInt , Ġval Ġday OfMonth : ĠInt ): ĠComparable < My Date > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠMy Date ): ĠInt Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . year Ġ> Ġother . year Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠ Ġthis . year Ġ< Ġother . year Ġ-> Ġ- 1 ĊĠĠĠĠĠĠĠ Ġthis . month Ġ> Ġother . month Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠ Ġthis . month Ġ< Ġother . month Ġ-> Ġ- 1 ĊĠĠĠĠĠĠĠ Ġthis . day OfMonth Ġ> Ġother . day OfMonth Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠ Ġthis . day OfMonth Ġ< Ġother . day OfMonth Ġ-> Ġ- 1 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠ Ġ} Ċ } Ċ Ċ operator Ġfun ĠMy Date . range To ( other : ĠMy Date ): ĠDate Range Ġ= ĠDate Range ( this , Ġother ) Ċ Ċ enum Ġclass ĠTime Interval Ġ{ ĊĠĠĠ ĠDAY , ĊĠĠĠ ĠW EEK , ĊĠĠĠ ĠYEAR Ċ } Ċ Ċ operator Ġfun ĠMy Date . plus ( interval : ĠTime Interval ): ĠMy Date Ġ{ ĊĠĠĠ Ġreturn Ġthis . add Time Intervals ( interval , Ġ 1 ) Ċ } Ċ Ċ data Ġclass ĠRe peated Time Interval ( val Ġinterval : ĠTime Interval , Ġval Ġtimes : ĠInt ) Ċ Ċ operator Ġfun ĠTime Interval . times ( rhs : ĠInt ): ĠRe peated Time Interval Ġ= ĠRe peated Time Interval ( this , Ġrhs ) Ċ Ċ operator Ġfun ĠMy Date . plus ( repeated Interval : ĠRe peated Time Interval ): ĠMy Date Ġ{ ĊĠĠ Ġreturn Ġthis . add Time Intervals ( repeated Interval . interval , Ġrepeated Interval . times ) Ċ } Ċ Ċ class ĠDate Range ( val Ġstart : ĠMy Date , Ġval Ġend Inclusive : ĠMy Date ): ĠIterable < My Date > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < My Date > Ġ= Ġobject Ġ: ĠIterator < My Date > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcurrent : ĠMy Date Ġ= Ġstart ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Next (): ĠBoolean Ġ= Ġcurrent Ġ<= Ġend Inclusive ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext (): ĠMy Date Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcurrent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . next Day () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġcontains ( d : ĠMy Date ) Ġ= Ġd Ġ>= Ġstart Ġ&& Ġd Ġ<= Ġend Inclusive Ċ } Ċ