package Ġcom . github . ad ri ant od t . lin . vm . scope Ċ Ċ import Ġcom . github . ad ri ant od t . lin . vm . types . L Any Ċ Ċ public Ġsealed Ġclass ĠMutable Scope Ġ: ĠScope () Ġ{ ĊĠĠĠ Ġpublic Ġabstract Ġfun Ġdeclare Variable ( name : ĠString , Ġmutable : ĠBoolean ) ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġimpl Set ( name : ĠString , Ġvalue : ĠL Any ) ĊĊĠĠĠ Ġoverride Ġfun Ġset ( name : ĠString , Ġvalue : ĠL Any ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs : ĠScope ? Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġwhile Ġ( s Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ! is ĠMutable Scope ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ= Ġs . parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmutable Ġ= Ġs . impl Is Declared ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mutable Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ= Ġs . parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! mutable Ġ&& Ġs . impl IsSet ( name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Tri ed Ġto Ġset Ġimmutable Ġvariable Ġ$ name Ġwith Ġvalue Ġalready Ġset .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs . impl Set ( name , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Tri ed Ġto Ġset Ġvariable Ġ$ name Ġnot Ġdeclared Ġin Ġany Ġscope Ġyet .") ĊĠĠĠ Ġ} Ċ } Ċ