package Ġcom . by but ter . sis y ph us . protobuf Ċ Ċ import Ġcom . by but ter . sis y ph us . protobuf . primitives . Enum Descriptor Proto Ċ import Ġcom . by but ter . sis y ph us . reflect . getType Argument Ċ import Ġkotlin . reflect . K Class Ċ Ċ abstract Ġclass ĠEnum Support < T Ġ: ĠProto Enum < T >> Ġ: ĊĠĠĠ ĠProto Support < Enum Descriptor Proto > Ġ{ ĊĠĠĠ Ġval Ġenum Class : ĠK Class < T > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġ( this . java Class . getType Argument ( Enum Support :: class . java , Ġ 0 ) Ġas ĠClass < T >). kotlin ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġvalues (): ĠArray < T > ĊĊĠĠĠ Ġprivate Ġval Ġnumber Map Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġvalues (). associate By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . number ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġname Map Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġvalues (). associate By Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . proto ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfrom Number ( value : ĠInt ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnumber Map [ value ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfrom Proto ( value : ĠString ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġname Map [ value ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalues (). first () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( value : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfrom Number ( value ) Ġ?: Ġinvoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( value : ĠString ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfrom Proto ( value ) Ġ?: Ġinvoke () ĊĠĠĠ Ġ} Ċ } Ċ