package Ġru . Dm N . Project . k vm . common . data . impl Ċ Ċ import Ġru . Dm N . Project . core . obj . I Object Ċ import Ġru . Dm N . Project . core . util . Atomic Int Ċ import Ġru . Dm N . Project . k vm . common . data . api . IF S Ċ import Ġru . Dm N . Project . k vm . common . obj . api . Function Ċ import Ġru . Dm N . Project . k vm . common . obj . api . I Function Ċ import Ġru . Dm N . Project . k vm . common . vm . api . I VM Ċ Ċ @ Suppress (" OVERRIDE _ BY _ INLINE ", Ġ" UN CHECK ED _ CAST ") Ċ class ĠIF S Impl < C , ĠV Ġ: ĠI VM < C , ĠV , ĠO >, ĠO Ġ: ĠI Object > Ġ: ĠIF S < C , ĠV , ĠO > Ġ{ ĊĠĠĠ Ġval Ġdata Ġ= ĠArrayList < I Function < C , ĠV , ĠO >>() ĊĠĠĠ Ġoverride Ġinline Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdata . size ĊĊĠĠĠ Ġconstructor () ĊĠĠĠ Ġconstructor ( var arg Ġos : ĠI Function < C , ĠV , ĠO >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( o Ġin Ġos ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . add ( o ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġinline Ġfun Ġadd ( obj : ĠFunction < C , ĠV , ĠO >) Ġ{ Ġdata . add ( obj ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġget ( name : ĠString , Ġargs : ĠList < I Object > ?, Ġi _: ĠAtomic Int ): ĠI Function < C , ĠV , ĠO >? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfunc : ĠI Function < C , ĠV , ĠO >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġi _ ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġ 0 Ġuntil Ġdata . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġdata [ x ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj Ġ= ĠAtomic Int () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . name Ġ== Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( args Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . args . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . name Ġ== Ġname Ġ&& Ġit . arg Equals ( args , Ġj ) Ġ&& Ġj . value Ġ< Ġi . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunc Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ= Ġj ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfunc ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġremove ( name : ĠString ): ĠI Function < C , ĠV , ĠO >? Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġdata . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data [ i ]. name Ġ== Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata . remove At ( i ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġinline Ġfun Ġas Array (): ĠArray < I Function < C , ĠV , ĠO >> Ġ= Ġdata . to Typed Array () ĊĠĠĠ Ġoverride Ġinline Ġfun Ġas List (): ĠList < I Function < C , ĠV , ĠO >> Ġ= Ġdata ĊĠĠĠ Ġoverride Ġinline Ġfun Ġas ArrayList (): ĠArrayList < I Function < C , ĠV , ĠO >> Ġ= Ġdata Ċ }