import Ġcom . github . aj alt . cli kt . parameters . groups . Option Group Ċ import Ġcom . sk sam uel . scri mage . color . H SL Color Ċ import Ġcom . sk sam uel . scri mage . color . RGB Color Ċ import Ġjava . util . Comparator . comp aring Ċ Ċ sealed Ġclass ĠSort ing Function ( comparator : ĠComparator < RGB Color >) Ġ: ĠOption Group () Ġ{ ĊĊĠĠĠ Ġval Ġcomparator : ĠComparator < RGB Color > Ġ= Ġcomparator . reversed () ĊĊĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis :: class . simple Name !!. lowercase () ĊĊĠĠĠ Ġval Ġchoice : ĠPair < String , ĠSort ing Function > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġname Ġto Ġthis ĊĊĠĠĠ Ġsealed Ġclass ĠH SL ( private Ġval Ġfield To Compare : ĠH SL Color . () Ġ-> ĠFloat ) Ġ: ĊĠĠĠĠĠĠĠ ĠSort ing Function ( comp aring Ġ{ Ġit . to H SL (). field To Compare () Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġobject ĠH ue Ġ: ĠH SL ({ Ġhue Ġ}) ĊĊĠĠĠĠĠĠĠ Ġobject ĠSat uration Ġ: ĠH SL ({ Ġsat uration Ġ}) ĊĊĠĠĠĠĠĠĠ Ġobject ĠLight ness Ġ: ĠH SL ({ Ġlight ness Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠRGB ( private Ġval Ġfield To Compare : ĠRGB Color . () Ġ-> ĠInt ) Ġ: ĊĠĠĠĠĠĠĠ ĠSort ing Function ( comp aring Ġ{ Ġit . field To Compare () Ġ}) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġobject ĠInt ensity Ġ: ĠRGB ({ Ġred Ġ+ Ġgreen Ġ+ Ġblue Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠReverse ( sorting Function : ĠSort ing Function ) Ġ: ĊĠĠĠĠĠĠĠ ĠSort ing Function ( sorting Function . comparator ) Ċ } Ċ