package Ġcom . bos w el ja . ep hemer is . core . datetime Ċ Ċ import Ġkotlinx . datetime . DateTime Unit Ċ import Ġkotlinx . datetime . LocalDate Ċ import Ġkotlinx . datetime . Month Ċ import Ġkotlinx . datetime . minus Ċ import Ġkotlinx . datetime . number Ċ import Ġkotlinx . datetime . plus Ċ Ċ public Ġdata Ġclass ĠYear Month ( ĊĠĠĠ Ġval Ġyear : ĠInt , ĊĠĠĠ Ġval Ġmonth : ĠMonth Ċ ) Ġ{ ĊĠĠĠ Ġval ĠstartDate : ĠLocalDate Ġ= ĠLocalDate ( year , Ġmonth , Ġ 1 ) ĊĠĠĠ Ġval ĠendDate : ĠLocalDate Ġ= ĠstartDate . plus ( DateTime Unit . MONTH ). minus ( 1 , ĠDateTime Unit . DAY ) Ċ } Ċ Ċ public Ġval ĠLocalDate . year Month : ĠYear Month ĊĠĠĠ Ġget () Ġ= ĠYear Month ( year , Ġmonth ) Ċ Ċ public Ġfun ĠYear Month . plus ( months : ĠInt ): ĠYear Month Ġ{ ĊĠĠĠ Ġval Ġlocal Date Ġ= ĠLocalDate ( year , Ġmonth , Ġ 1 ) ĊĠĠĠ Ġreturn Ġlocal Date . plus ( months , ĠDateTime Unit . MONTH ) ĊĠĠĠĠĠĠĠ Ġ. year Month Ċ } Ċ Ċ public Ġfun ĠYear Month . until ( other : ĠYear Month ): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġother ) Ġreturn Ġ 0 ĊĠĠĠ Ġval Ġyear Delta Ġ= Ġ- 1 Ġ* Ġ( year Ġ- Ġother . year ) ĊĠĠĠ Ġval Ġmonth Delta Ġ= Ġ- 1 Ġ* Ġ( month . number Ġ- Ġother . month . number ) Ġ% Ġall Months . size ĊĠĠĠ Ġreturn Ġ( year Delta Ġ* Ġall Months . size ) Ġ+ Ġmonth Delta Ċ } Ċ Ċ private Ġval Ġall Months Ġ= ĠMonth . values () Ċ