package Ġim . to ss . util . cache Ċ Ċ import Ġjava . lang . Exception Ċ Ċ interface ĠCache Value Loader < T : ĠAny > Ġ{ ĊĠĠĠ Ġval Ġversion : ĠLong ĊĊĠĠĠ Ġ@ Throws ( Already Loaded Exception :: class ) ĊĠĠĠ Ġsuspend Ġfun Ġload ( value : ĠT ): ĠLoad Result < T > ĊĠĠĠ Ġsuspend Ġfun Ġrelease () Ċ } Ċ Ċ class ĠAlready Loaded Exception Ġ: ĠException () Ċ Ċ class ĠResult Get Or Lock For Load < T : ĠAny >( ĊĠĠĠ Ġval Ġvalue : ĠT ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġloader : ĠCache Value Loader < T >? Ġ= Ġnull Ċ ) Ċ Ċ data Ġclass ĠLoad Result < T >( ĊĠĠĠ Ġval Ġvalue : ĠT , ĊĠĠĠ Ġval Ġsuccess : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġval Ġis Optim istic Lock Failure : ĠBoolean Ġ= Ġfalse Ċ ) Ċ