package Ġio . github . x lo pec . tea . time . travel . plugin . feature . component . model Ċ Ċ import Ġio . github . x lo pec . tea . time . travel . plugin . util . map Ċ import Ġio . github . x lo pec . tea . time . travel . plugin . model . Component Mapping Ċ import Ġio . github . x lo pec . tea . time . travel . plugin . model . Filtered Snapshot Ċ import Ġio . github . x lo pec . tea . time . travel . plugin . model . Invalid Ċ import Ġio . github . x lo pec . tea . time . travel . plugin . model . Original Snapshot Ċ import Ġio . github . x lo pec . tea . time . travel . plugin . model . Valid Ċ import Ġio . github . x lo pec . tea . time . travel . plugin . model . Value Ċ import Ġio . github . x lo pec . tea . time . travel . plugin . model . filtered By Ċ import Ġio . github . x lo pec . tea . time . travel . plugin . model . to Filtered Ċ import Ġio . github . x lo pec . tea . time . travel . protocol . Component Id Ċ import Ġkotlinx . collections . immutable . Persistent List Ċ import Ġkotlinx . collections . immutable . persistent ListOf Ċ import Ġkotlinx . collections . immutable . persistent Map Of Ċ Ċ data Ġclass ĠComponent State ( ĊĠĠĠ Ġval Ġid : ĠComponent Id , ĊĠĠĠ Ġval Ġstate : ĠValue , ĊĠĠĠ Ġ// Ġfix me Ġwe Ġshould Ġre - model Ġthis Ġbit , Ġinvariant Ġchecks Ġshould Ġres ide Ġinside Ġa Ġdedicated Ġentity ĊĠĠĠ Ġval Ġfilter : ĠFilter Ġ= ĠFilter . empty (), ĊĠĠĠ Ġval Ġsnapshots : ĠPersistent List < Original Snapshot > Ġ= Ġpersistent ListOf (), ĊĠĠĠ Ġval Ġfiltered Snapshots : ĠPersistent List < Filtered Snapshot > Ġ= Ġpersistent ListOf () Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġalready Ġreset Ġdebug Ġstate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġid : ĠComponent Id , ĊĠĠĠĠĠĠĠ Ġstate : ĠValue , ĊĠĠĠĠĠĠĠ Ġsnapshots : ĠPersistent List < Original Snapshot >, ĊĠĠĠ Ġ) Ġ: Ġthis ( id , Ġstate , ĠFilter . empty (), Ġsnapshots , Ġsnapshots . map ( Original Snapshot :: to Filtered )) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( filtered Snapshots . size Ġ<= Ġsnapshots . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Snapshots . size Ġ> Ġsnapshots . size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsnapshots =$ snapshots ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered =$ filtered Snapshots ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠComponent State . update Filter ( ĊĠĠĠ Ġfilter Input : ĠString , ĊĠĠĠ Ġignore Case : ĠBoolean , ĊĠĠĠ Ġoption : ĠFilter Option Ċ ): ĠComponent State Ġ= Ġupdate Filter ( Filter . new ( filter Input , Ġoption , Ġignore Case )) Ċ Ċ fun ĠComponent State . update Filter ( ĊĠĠĠ Ġfilter : ĠFilter Ċ ): ĠComponent State Ġ{ ĊĠĠĠ Ġval Ġfiltered Ġ= Ġwhen Ġ( val Ġvalidated Predicate Ġ= Ġfilter . predicate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠValid Ġ-> Ġsnapshots . filtered By ( validated Predicate . t ) ĊĠĠĠĠĠĠĠ Ġis ĠInvalid Ġ-> Ġfiltered Snapshots ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġcopy ( filter Ġ= Ġfilter , Ġfiltered Snapshots Ġ= Ġfiltered ) Ċ } Ċ Ċ data Ġclass ĠDebug State ( ĊĠĠĠ Ġval Ġcomponents : ĠComponent Mapping Ġ= Ġpersistent Map Of () Ċ ) Ċ