package Ġme . alex pe tr ak ov . cy clone . units . domain . model . unit sof measure Ċ Ċ import Ġme . alex pe tr ak ov . cy clone . units . domain . model . converters . Converter Ċ import Ġme . alex pe tr ak ov . cy clone . units . domain . model . converters . Linear Converter Ċ import Ġme . alex pe tr ak ov . cy clone . units . domain . model . converters . Nothing Converter Ċ import Ġme . alex pe tr ak ov . cy clone . units . domain . model . measure ments . Measurement Ċ Ċ enum Ġclass ĠLength Unit ( ĊĠĠĠ Ġoverride Ġval Ġsymbol : ĠString , ĊĠĠĠ Ġoverride Ġval Ġconverter : ĠConverter Ċ ) Ġ: ĠUnit Dimension < Length Unit > Ġ{ ĊĊĠĠĠ ĠMet ers (" m ", ĠNothing Converter ), ĊĊĠĠĠ ĠK ilo meters (" km ", ĠLinear Converter ( 1 0 0 0 . 0 )), ĊĊĠĠĠ ĠM iles (" mi ", ĠLinear Converter ( 1 6 0 9 . 3 4 4 )); ĊĊĠĠĠ Ġoverride Ġval Ġbase Unit : ĠLength Unit ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠMet ers ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( symbol : ĠString ): ĠLength Unit ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalues (). find Ġ{ Ġit . symbol Ġ== Ġsymbol Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ type alias ĠLength Ġ= ĠMeasurement < Length Unit > Ċ type alias ĠDistance Ġ= ĠLength