package Ġcom . github . ca ij h . framework . core . util Ċ Ċ import Ġcom . github . ca ij h . framework . core . exception . Biz Exception Ċ import Ġcom . github . ca ij h . framework . core . lambda . S Function Ċ import Ġcom . github . ca ij h . framework . core . lambda . Serialized Lambda Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ object ĠLambda Utils Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSerialized Lambda Ġ åıį åºıåĪĹåĮĸ ç¼ĵåŃĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠFUNC _ CACHE : ĠMutable Map < Class <* >, ĠWeak Reference < Serialized Lambda >> Ġ= ĠConcurrent HashMap () ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġ< T > Ġresolve ( func : ĠS Function < T , Ġ* >): ĠSerialized Lambda Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclazz : ĠClass < *> Ġ= Ġfunc . java Class ĊĠĠĠĠĠĠĠ Ġval Ġserialized Lambda Ġ= ĠOptional . of Nullable ( FUNC _ CACHE [ clazz ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġobj : ĠWeak Reference < Serialized Lambda > Ġ-> Ġobj . get () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orElse Get Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSerialized Lambda . resolve ( func ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠB iz Exception (" Resolve ĠSerialized Lambda Ġfail ") ĊĊĠĠĠĠĠĠĠ ĠFUNC _ CACHE [ clazz ] Ġ= ĠWeak Reference ( serialized Lambda ) ĊĠĠĠĠĠĠĠ Ġreturn Ġserialized Lambda ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ