package Ġorg . know ledger . ledger . storage . w itness Ċ Ċ import Ġorg . know ledger . ledger . database . Managed Session Ċ import Ġorg . know ledger . ledger . database . Storage ID Ċ import Ġorg . know ledger . ledger . results . Outcome Ċ import Ġorg . know ledger . ledger . service . results . Update Failure Ċ import Ġorg . know ledger . ledger . storage . Indexed Ċ import Ġorg . know ledger . ledger . storage . Storage Aware Ċ import Ġorg . know ledger . ledger . storage . Storage Pairs Ċ import Ġorg . know ledger . ledger . storage . Transaction Output Ċ import Ġorg . know ledger . ledger . storage . adapters . Transaction Output Storage Adapter Ċ import Ġorg . know ledger . ledger . storage . replace Ċ import Ġorg . know ledger . ledger . storage . update Linked ĊĊ Ċ internal Ġclass ĠStorage Aware W itness Ġprivate Ġconstructor ( ĊĠĠĠ Ġinternal Ġval Ġw itness : ĠHas hed W itness Impl Ċ ) Ġ: ĠHas hed W itness Ġby Ġw itness , ĠIndexed Ġby Ġw itness , ĊĠĠĠ ĠPay out Adding Ġby Ġw itness , ĠStorage Aware < Has hed W itness > Ġ{ ĊĠĠĠ Ġoverride Ġvar Ġid : ĠStorage ID ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġ_ invalid ated : ĠArray < Storage Pairs <* >> Ġ= ĊĠĠĠĠĠĠĠ Ġempty Array () ĊĊĠĠĠ Ġoverride Ġval Ġinvalid ated : ĠArray < Storage Pairs <* >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ invalid ated ĊĊĠĠĠ Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġtransaction Output Storage Adapter : ĠTransaction Output Storage Adapter , ĊĠĠĠĠĠĠĠ Ġw itness : ĠHas hed W itness Impl ĊĠĠĠ Ġ) Ġ: Ġthis ( w itness ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ invalid ated Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Pairs . Hash (" hash "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Pairs . Native (" index "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Pairs . LinkedList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" transaction Outputs ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Output Storage Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠaddTo Pay out ( transaction Output : ĠTransaction Output ) Ġ{ ĊĠĠĠĠĠĠĠ Ġw itness . addTo Pay out ( transaction Output ) ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid ated . replace ( 0 , Ġhash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid ated . replace ( 2 , Ġtransaction Outputs ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmark Index ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ!= Ġthis . index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw itness . mark Index ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid ated . replace ( 1 , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( ĊĠĠĠĠĠĠĠ Ġsession : ĠManaged Session ĊĠĠĠ Ġ): ĠOut come < Storage ID , ĠUpdate Failure > Ġ= ĊĠĠĠĠĠĠĠ Ġupdate Linked ( session , Ġinvalid ated ) ĊĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġw itness Ġ== Ġother ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġw itness . hashCode () Ċ }