package Ġorg . ca fe jo jo . s cha api . models . library usage graph . j imple Ċ Ċ import Ġcom . n ha ar man . mockito _ kotlin . mock Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . jetbrains . spe k . api . Spe k Ċ import Ġorg . jetbrains . spe k . api . dsl . context Ċ import Ġorg . jetbrains . spe k . api . dsl . describe Ċ import Ġorg . jetbrains . spe k . api . dsl . it Ċ import Ġso ot . Equivalent Value Ċ import Ġso ot . Immediate Ċ import Ġso ot . Int Type Ċ import Ġso ot . Modifier Ċ import Ġso ot . Ref Type Ċ import Ġso ot . S oot Class Ċ import Ġso ot . S oot Field Ċ import Ġso ot . S oot Method Ċ import Ġso ot . Value Ċ import Ġso ot . j imple . Any New Expr Ċ import Ġso ot . j imple . Expr Ċ import Ġso ot . j imple . Field Ref Ċ import Ġso ot . j imple . Int Constant Ċ import Ġso ot . j imple . Invoke Expr Ċ import Ġso ot . j imple . J imple Ċ import Ġso ot . j imple . Ref Ċ import Ġso ot . j imple . tool k its . info flow . Abstract DataSource Ċ import Ġso ot . j imple . tool k its . thread . synchron ization . New Static Lock Ċ Ċ /** Ċ Ġ* ĠUnit Ġtests Ġfor Ġ[ J imple Value Visitor ]. Ċ Ġ*/ Ċ internal Ġobject ĠJ imple Value Visitor Test Ġ: ĠSpe k ({ ĊĠĠĠ Ġdescribe (" J imple Ġvalue Ġvisitor ") Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġvisitor : ĠJ imple Value Accumulator ĊĊĠĠĠĠĠĠĠ ĠbeforeEach Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisitor Ġ= ĠJ imple Value Accumulator () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġgiven Ġelement Ġitself ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmock < Value > Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġin Ġan Ġunknown ĠExpr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmock < Expr > Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġonly Ġvalue Ġof Ġan ĠUn op Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconst Ġ= ĠInt Constant . v ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Neg Expr ( const ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġconst ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġboth Ġvalues Ġof Ġa ĠBin op Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconst A Ġ= ĠInt Constant . v ( 4 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconst B Ġ= ĠInt Constant . v ( 5 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Sub Expr ( const A , Ġconst B ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġconst A , Ġconst B ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġan ĠInstance Of Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Ġ= ĠJ imple . v (). new Local (" local ", ĠRef Type . v (" Some Class ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new InstanceOf Expr ( local , ĠRef Type . v (" Some Other Class ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġlocal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġa ĠCast Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Ġ= ĠJ imple . v (). new Local (" local ", ĠRef Type . v (" Some Class ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Cast Expr ( local , ĠRef Type . v (" Some Other Class ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġlocal ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" Any New Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġan Ġunknown ĠAny New Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmock < Any New Expr > Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġa ĠNew Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new New Expr ( Ref Type . v (" Some Class ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġand Ġsize Ġof Ġa ĠNew Array Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Value Ġ= ĠJ imple . v (). new Local (" size ", ĠInt Type . v ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new New Array Expr ( Ref Type . v (" Some Class "), Ġsize Value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġsize Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġand Ġsizes Ġof Ġa ĠNew Multi Array Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Values Ġ= ĠArray ( 3 ) Ġ{ Ġi Ġ-> ĠJ imple . v (). new Local (" size $ i ", ĠInt Type . v ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ imple . v (). new New Multi Array Expr ( Ref Type . v (" Some Class "). array Type , Ġsize Values . to Mutable List ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Spread Operator ") Ġ// ĠE as ier Ġto Ġwrite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġ* size Values ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" Invoke Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġan Ġunknown ĠInvoke Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmock < Invoke Expr > Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue , Ġbase , Ġand Ġarguments Ġof Ġan ĠInstance Invoke Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠJ imple . v (). new Local (" base ", ĠRef Type . v (" Base Class ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= ĠS oot Method (" method ", ĠlistOf ( Ref Type . v (" Arg Type A "), ĠRef Type . v (" Arg Type B ")), ĠInt Type . v ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĠS oot Class (" Some Class "). add Method ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg A Ġ= ĠJ imple . v (). new Local (" arg A ", ĠRef Type . v (" Arg Type A ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg B Ġ= ĠJ imple . v (). new Local (" arg B ", ĠRef Type . v (" Arg Type B ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Special Invoke Expr ( base , Ġmethod . make Ref (), ĠlistOf ( arg A , Ġarg B )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġbase , Ġarg A , Ġarg B ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġarguments Ġof Ġa ĠStatic Invoke Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= ĠS oot Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" method ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Ref Type . v (" Arg Type A "), ĠRef Type . v (" Arg Type B ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt Type . v (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . STATIC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĠS oot Class (" Some Class "). add Method ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg A Ġ= ĠJ imple . v (). new Local (" arg A ", ĠRef Type . v (" Arg Type A ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg B Ġ= ĠJ imple . v (). new Local (" arg B ", ĠRef Type . v (" Arg Type B ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Static Invoke Expr ( method . make Ref (), ĠlistOf ( arg A , Ġarg B )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġarg A , Ġarg B ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġarguments Ġof Ġa ĠDynamic Invoke Expr ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= ĠS oot Method (" method ", ĠlistOf ( Ref Type . v (" Arg Type A "), ĠRef Type . v (" Arg Type B ")), ĠInt Type . v ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĠS oot Class ( S oot Class . INV OK ED Y NAMIC _ D UMMY _ CLASS _ NAME ). add Method ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbs Arg A Ġ= ĠJ imple . v (). new Local (" bs Arg A ", ĠRef Type . v (" Arg Type A ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbs Arg B Ġ= ĠJ imple . v (). new Local (" bs Arg B ", ĠRef Type . v (" Arg Type B ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg A Ġ= ĠJ imple . v (). new Local (" arg A ", ĠRef Type . v (" Arg Type A ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg B Ġ= ĠJ imple . v (). new Local (" arg B ", ĠRef Type . v (" Arg Type B ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Dynamic Invoke Expr ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . make Ref (), ĠlistOf ( bs Arg A , Ġbs Arg B ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . make Ref (), ĠlistOf ( arg A , Ġarg B ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġbs Arg A , Ġbs Arg B , Ġarg A , Ġarg B ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" Ref ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġan Ġunknown ĠRef ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmock < Ref > Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġan ĠIdentity Ref ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new This Ref ( Ref Type . v (" Some Class ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext (" Field Ref ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġan Ġunknown ĠField Ref ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmock < Field Ref > Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġand Ġbase Ġof Ġan ĠInstance Field Ref ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠJ imple . v (). new Local (" base ", ĠRef Type . v (" Some Class ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Ġ= ĠS oot Field (" field ", ĠInt Type . v (), ĠModifier . PUBLIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġit . decl aring Class Ġ= Ġmock Ġ{} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). newInstance Field Ref ( base , Ġfield . make Ref ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġbase ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġa ĠStatic Field Ref ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Ġ= ĠS oot Field (" field ", ĠInt Type . v (), ĠModifier . PUBLIC Ġ+ ĠModifier . STATIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġit . decl aring Class Ġ= Ġmock Ġ{} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Static Field Ref ( field . make Ref ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue , Ġbase , Ġand Ġindex Ġof Ġan ĠArray Ref ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbase Ġ= ĠJ imple . v (). new Local (" base ", ĠRef Type . v (" Some Class "). array Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠJ imple . v (). new Local (" offset ", ĠInt Type . v ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Array Ref ( base , Ġindex ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value , Ġbase , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" Immediate ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġan Ġunknown ĠIm mediate ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmock < Immediate > Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġa ĠLocal ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Local (" local ", ĠRef Type . v (" Some Class ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġa ĠConstant ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠInt Constant . v ( 3 8 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontext (" mis cellaneous ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġand Ġequivalent Ġvalue Ġof Ġan ĠE quivalent Value ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠJ imple . v (). new Local (" local ", ĠInt Type . v ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeq Value Ġ= ĠE quivalent Value ( value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( eq Value )). contains Exactly ( eq Value , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġa ĠNew Static Lock ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= ĠS oot Class (" Some Class ", ĠModifier . PUBLIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠNew Static Lock ( clazz ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġof Ġan ĠAbstract DataSource ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠAbstract DataSource ( Any ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( visitor . visit ( value )). contains Exactly ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ