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 Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġyear Diff Ġ= Ġthis . year Ġ- Ġother . year ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( year Diff Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmonth Diff Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . month Ġ- Ġother . month ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( month Diff Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . day OfMonth Ġ- Ġother . day OfMonth ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonth Diff ĊĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyear Diff ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġtest ( date 1 : ĠMy Date , Ġdate 2 : ĠMy Date ) Ġ{ ĊĠĠĠ Ġ// Ġthis Ġcode Ġshould Ġcompile : ĊĠĠĠ Ġprintln ( date 1 Ġ< Ġdate 2 ) Ċ } Ċ