package Ġcom . j ag ro sh . j ag tag Ċ Ċ class ĠEnvironment Ġ: ĠHashMap < String , ĠAny >() Ġ{ ĊĊĠĠĠ Ġ/** Ġreturns Ġthe Ġvalue Ġof Ġthe Ġre ified Ġtype Ġfrom Ġkey Ġor Ġnull Ġ**/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġget Re ified ( key : ĠString ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġget ( key ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( value Ġis ĠT ?) Ġvalue ĊĠĠĠĠĠĠĠ Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġreturns Ġthe Ġvalue Ġof Ġthe Ġre ified Ġtype Ġfrom Ġkey Ġor Ġthe Ġdefault Ġvalue Ġ**/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġget OrDefault Re ified ( key : ĠString , ĠdefaultValue : ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġany Ġ= Ġget OrDefault ( key , ĠdefaultValue Ġas ĠAny ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( any Ġis ĠT ) Ġany ĊĠĠĠĠĠĠĠ Ġelse ĠdefaultValue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġreturns Ġthe Ġvalue Ġof Ġthe Ġre ified Ġtype Ġfrom Ġkey Ġor Ġthrows Ġan Ġexception Ġ**/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġget Re ified X ( key : ĠString ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġget ( key ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( value Ġis ĠT ) Ġvalue ĊĠĠĠĠĠĠĠ Ġelse Ġthrow ĠIllegalArgumentException (" value Ġis Ġnot Ġthe Ġcorrect Ġtype , Ġvalue : Ġ$ value ") ĊĠĠĠ Ġ} Ċ } Ċ