package Ġcom . so y wiz . k lock Ċ Ċ import Ġcom . so y wiz . k lock . internal . Serializable Ċ import Ġkotlin . jvm . Jvm Inline Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġcouple Ġof Ġ[ year ] Ġand Ġ[ month ]. Ċ Ġ* Ċ Ġ* ĠIt Ġis Ġpacked Ġin Ġa Ġvalue Ġclass Ġwrapping Ġan ĠInt Ġto Ġprevent Ġallocations . Ċ Ġ*/ Ċ @ Jvm Inline Ċ value Ġclass ĠYear Month ( internal Ġval Ġinternal Packed Info : ĠInt ) Ġ: ĠSerializable Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" May Be Constant ", Ġ" unused ") ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠserialVersionUID Ġ= Ġ 1 L ĊĊĠĠĠĠĠĠĠ Ġ/** ĠConstructs Ġa Ġnew Ġ[ Year Month ] Ġfrom Ġthe Ġ[ year ] Ġand Ġ[ month ] Ġcomponents . Ġ*/ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( year : ĠYear , Ġmonth : ĠMonth ) Ġ= ĠYear Month ( year . year , Ġmonth . index 1 ) ĊĠĠĠĠĠĠĠ Ġ/** ĠConstructs Ġa Ġnew Ġ[ Year Month ] Ġfrom Ġthe Ġ[ year ] Ġand Ġ[ month ] Ġcomponents . Ġ*/ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( year : ĠInt , Ġmonth : ĠMonth ) Ġ= ĠYear Month ( year , Ġmonth . index 1 ) ĊĠĠĠĠĠĠĠ Ġ/** ĠConstructs Ġa Ġnew Ġ[ Year Month ] Ġfrom Ġthe Ġ[ year ] Ġand Ġ[ month ] Ġcomponents . Ġ*/ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( year : ĠInt , Ġmonth 1 : ĠInt ) Ġ= ĠYear Month (( year Ġshl Ġ 4 ) Ġor Ġ( month 1 Ġand Ġ 1 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠThe Ġ[ year ] Ġpart . Ġ*/ ĊĠĠĠ Ġval Ġyear : ĠYear Ġget () Ġ= ĠYear ( year Int ) ĊĠĠĠ Ġ/** ĠThe Ġ[ year ] Ġpart Ġas Ġ[ Int ]. Ġ*/ ĊĠĠĠ Ġval Ġyear Int : ĠInt Ġget () Ġ= Ġinternal Packed Info Ġ ush r Ġ 4 ĊĊĠĠĠ Ġ/** ĠThe Ġ[ month ] Ġpart . Ġ*/ ĊĠĠĠ Ġval Ġmonth : ĠMonth Ġget () Ġ= ĠMonth [ month 1 ] ĊĠĠĠ Ġ/** ĠThe Ġ[ month ] Ġpart Ġas Ġ[ Int ] Ġwhere Ġ[ Month . January ] Ġis Ġ 1 . Ġ*/ ĊĠĠĠ Ġval Ġmonth 1 : ĠInt Ġget () Ġ= Ġinternal Packed Info Ġand Ġ 1 5 ĊĊĠĠĠ Ġ/** ĠDays Ġin Ġthis Ġ[ month ] Ġof Ġthis Ġ[ year ]. Ġ*/ ĊĠĠĠ Ġval Ġdays : ĠInt Ġget () Ġ= Ġmonth . days ( year ) ĊĠĠĠ Ġ/** ĠNumber Ġof Ġdays Ġsince Ġthe Ġstart Ġof Ġthe Ġ[ year ] Ġto Ġreach Ġthis Ġ[ month ]. Ġ*/ ĊĠĠĠ Ġval Ġdays To Start : ĠInt Ġget () Ġ= Ġmonth . days To Start ( year ) ĊĠĠĠ Ġ/** ĠNumber Ġof Ġdays Ġsince Ġthe Ġstart Ġof Ġthe Ġ[ year ] Ġto Ġreach Ġnext Ġ[ month ]. Ġ*/ ĊĠĠĠ Ġval Ġdays ToEnd : ĠInt Ġget () Ġ= Ġmonth . days ToEnd ( year ) ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( span : ĠMonth Span ): ĠYear Month Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Month Ġ= Ġthis . month 1 Ġ+ Ġspan . months ĊĠĠĠĠĠĠĠ Ġval Ġyear Adjust Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Month Ġ> Ġ 1 2 Ġ-> Ġ+ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Month Ġ< Ġ 1 Ġ-> Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠYear Month ( Year ( this . year Int Ġ+ Ġspan . years Ġ+ Ġyear Adjust ), ĠMonth [ new Month ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġminus ( span : ĠMonth Span ): ĠYear Month Ġ= Ġthis Ġ+ Ġ(- span ) ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ"$ month Ġ$ year Int " Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġ[ Year Month ] Ġrepresenting Ġ[ this ] Ġyear Ġand Ġthis Ġ[ month ]. Ċ Ġ*/ Ċ fun ĠYear . with Month ( month : ĠMonth ) Ġ= ĠYear Month ( this , Ġmonth ) Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġ[ Year Month ] Ġrepresenting Ġthis Ġ[ year ] Ġand Ġ[ this ] Ġmonth . Ċ Ġ*/ Ċ fun ĠMonth . with Year ( year : ĠYear ) Ġ= ĠYear Month ( year , Ġthis ) Ċ