package Ġcom . map k . fast k function . argument bucket Ċ Ċ import Ġkotlin . reflect . K Parameter Ċ import Ġjava . util . Abstract Map . Simple Entry Ġas ĠEntry Ċ Ċ class ĠArgument Bucket ( ĊĠĠĠ Ġprivate Ġval Ġkey List : ĠList < K Parameter >, ĊĠĠĠ Ġprivate Ġval Ġvalue Array : ĠArray < Any ? >, ĊĠĠĠ Ġprivate Ġvar Ġcount : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġvalue Array Getter : Ġ( Array < Any ?> ) Ġ-> ĠArray < Any ?> Ċ ) Ġ: ĠMap < K Parameter , ĠAny ?> Ġ{ ĊĠĠĠ Ġfun Ġis Full Initialized (): ĠBoolean Ġ= Ġcount Ġ== Ġkey List . size ĊĊĠĠĠ Ġ// ĠgetValue Array ãģ¯ åĨħéĥ¨ åĩ¦çĲĨ ãģ§ ãģĹãģ ĭ åĪ©çĶ¨ ãģĹãģªãģĦ ãģŁãĤģ internal åĮĸ ĊĠĠĠ Ġinternal Ġfun ĠgetValue Array (): ĠArray < Any ?> Ġ= Ġvalue Array Getter ( value Array ) ĊĊĠĠĠ Ġoperator Ġfun Ġset ( key : ĠK Parameter , Ġvalue : ĠAny ?): ĠAny ? Ġ= Ġset ( key . index , Ġvalue ) ĊĊĠĠĠ Ġoperator Ġfun Ġset ( index : ĠInt , Ġvalue : ĠAny ?): ĠAny ? Ġ= Ġif Ġ( isInitialized ( index )) ĊĠĠĠĠĠĠĠ Ġvalue Array [ index ]. apply Ġ{ Ġvalue Array [ index ] Ġ= Ġvalue Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠ Ġvalue Array [ index ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġnull Ġ// Ġ åĢ¤ ãģĮ AB SENT _ VALUE ãģª ãĤī null ãĤĴ è¿Ķ ãģĻ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġspecified Ġkey Ġis Ġnot Ġalready Ġassociated Ġwith Ġa Ġvalue Ġassoci ates Ġit Ġwith Ġthe Ġgiven Ġvalue Ġand Ġreturns ĊĠĠĠĠ Ġ* Ġ{@ code Ġnull }, Ġelse Ġreturns Ġthe Ġcurrent Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset If Absent ( key : ĠK Parameter , Ġvalue : ĠAny ?): ĠAny ? Ġ= Ġset If Absent ( key . index , Ġvalue ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġspecified Ġkey Ġis Ġnot Ġalready Ġassociated Ġwith Ġa Ġvalue Ġassoci ates Ġit Ġwith Ġthe Ġgiven Ġvalue Ġand Ġreturns ĊĠĠĠĠ Ġ* Ġ{@ code Ġnull }, Ġelse Ġreturns Ġthe Ġcurrent Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset If Absent ( index : ĠInt , Ġvalue : ĠAny ?): ĠAny ? Ġ= Ġif Ġ( isInitialized ( index )) ĊĠĠĠĠĠĠĠ Ġvalue Array [ index ] ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠ Ġvalue Array [ index ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġnull Ġ// Ġ åĢ¤ ãģĮ AB SENT _ VALUE ãģª ãĤī null ãĤĴ è¿Ķ ãģĻ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Initialized ( index : ĠInt ): ĠBoolean Ġ= Ġvalue Array [ index ] Ġ!== ĠA BS ENT _ VALUE ĊĊĠĠĠ Ġoverride Ġval Ġentries : ĠSet < Map . Entry < K Parameter , ĠAny ? >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġkey List . fold ( HashSet ()) Ġ{ Ġacc , Ġcur Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc . apply Ġ{ Ġif Ġ( isInitialized ( cur . index )) Ġadd ( Entry ( cur , Ġvalue Array [ cur . index ])) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġval Ġkeys : ĠSet < K Parameter > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġkey List . fold ( HashSet ()) Ġ{ Ġacc , Ġcur Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacc . apply Ġ{ Ġif Ġ( isInitialized ( cur . index )) Ġadd ( cur ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġval Ġsize : ĠInt Ġget () Ġ= Ġcount ĊĠĠĠ Ġoverride Ġval Ġvalues : ĠCollection < Any ?> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġvalue Array . filter Ġ{ Ġit Ġ!== ĠA BS ENT _ VALUE Ġ} ĊĊĠĠĠ Ġ// Ġkey ãģ¯ ãĤ¤ãĥ³ ãĤ¹ãĤ¿ ãĥ³ãĤ¹ ãģ® ä¸Ģèĩ´ ãģ¨ åĪĿ æľŁ åĮĸ çĬ¶æħĭ ãĤĴ è¦ĭ ãĤĭ ĊĠĠĠ Ġoverride Ġfun Ġcontains Key ( key : ĠK Parameter ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġkey List [ key . index ] Ġ=== Ġkey Ġ&& Ġis Initialized ( key . index ) ĊĊĠĠĠ Ġoverride Ġfun Ġcontains Value ( value : ĠAny ?): ĠBoolean Ġ= Ġvalue Array . with Index () ĊĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġis Initialized ( it . index ) Ġ&& Ġit . value Ġ== Ġvalue Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ( key : ĠK Parameter ): ĠAny ? Ġ= Ġvalue Array [ key . index ] ĊĠĠĠ Ġoperator Ġfun Ġget ( index : ĠInt ): ĠAny ? Ġ= Ġvalue Array [ index ] ĊĊĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ= Ġcount Ġ== Ġ 0 Ċ } Ċ