package Ġnet . jam mos . utils . types Ċ Ċ abstract Ġclass ĠRe vers ible Enum < out ĠT : ĠAny , Ġin ĠV >( values : ĠArray < T >, Ġre verser : Ġ( T ) Ġ-> ĠV ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġby Value Ġ= Ġvalues . associate By Ġ{ Ġre verser ( it ) Ġ} ĊĊĠĠĠ Ġfun Ġof Value ( value : ĠV ) Ġ= Ġof Value OrNull ( value ) Ġ?: Ġthrow ĠIllegalArgumentException (" Unknown Ġvalue : Ġ" Ġ+ Ġvalue ) ĊĠĠĠ Ġfun Ġof Value OrNull ( value : ĠV ) Ġ= Ġby Value [ value ] Ċ } Ċ Ċ abstract Ġclass ĠRe vers ible Byte < out ĠT : ĠWrite able Byte >( values : ĠArray < T >): ĠRe vers ible Enum < T , ĠShort >( values , ĠWrite able Byte :: value ) Ċ