package Ġcom . d ick ow . ch ort lin . checker . checker . session Ċ Ċ import Ġcom . d ick ow . ch ort lin . checker . ch oreo graphy . Ch oreo graphy Ċ import Ġcom . d ick ow . ch ort lin . checker . correlation . Correlation Value Ċ import Ġcom . d ick ow . ch ort lin . checker . trace . Trace Ċ import Ġcom . d ick ow . ch ort lin . checker . trace . Trace Event Ċ import Ġcom . d ick ow . ch ort lin . shared . observation . Observable Ċ import Ġjava . util .* Ċ Ċ class ĠSession ( val ĠsessionId : ĠUUID , Ġval Ġch oreo graphy : ĠCh oreo graphy , Ġtrace : ĠTrace Event ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtraces : ĠMutable List < Trace Event > Ġ= ĠLinkedList () ĊĠĠĠ Ġprivate Ġval Ġcorrelation Keys : ĠMutable Set < Correlation Value > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġch oreo graphy . getC orre lation ( trace . get Observation ()) !!. get Addition Keys ( trace ). to Mutable Set () ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( other Ġis ĠSession ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . sessionId Ġ== Ġother . sessionId ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠsessionId . hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġobserved Tr aces (): ĠTrace Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTrace ( traces ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcorre lates To ( trace : ĠTrace Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġch oreo graphy . getC orre lation ( trace . get Observation ()) ?. retrieve Key ( trace . get Argument Tree ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( key Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcorrelation Keys . contains ( key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstore ( trace : ĠTrace Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . traces . add ( trace ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcontains Observable ( observable : ĠObservable ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġch oreo graphy . contains ( observable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġextend Keys ( trace : ĠTrace Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcorrelation Keys . addAll ( ch oreo graphy . getC orre lation ( trace . get Observation ()) !!. get Addition Keys ( trace )) ĊĠĠĠ Ġ} Ċ }