package Ġru . gr ak hell . phot io . core . util Ċ /* Ċ Copyright Ġ 2 0 2 2 ĠD mit ri i ĠZ . Ċ Ċ Licensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ you Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ You Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ċ Unless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ distributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ WITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ See Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ limitations Ġunder Ġthe ĠLicense . Ċ */ Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ class ĠM emo izer < in ĠT , Ġout ĠR >( val Ġfunc : Ġ( T ) Ġ-> ĠR ) Ġ: Ġ( T ) Ġ-> ĠR Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcache Ġ= ĠConcurrent HashMap < T , ĠR >() ĊĊĊĠĠĠ Ġ@ Suppress (" NULL ABLE _ TYPE _ PARAMETER _ AG A INST _ NOT _ NULL _ TYPE _ PARAMETER ") ĊĠĠĠ Ġoverride Ġfun Ġinvoke ( value : ĠT ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcache . compute If Absent ( value ) Ġ{ Ġfunc ( value ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ< P , ĠR > Ġ(( P ) Ġ-> ĠR ). memo ized (): Ġ( P ) Ġ-> ĠR Ġ= ĠM emo izer ( this )