package Ġrun . q on tract . core . pattern Ċ Ċ import Ġrun . q on tract . core . Resolver Ċ import Ġrun . q on tract . core . utilities . with Null Pattern Ċ Ċ data Ġclass ĠMember List ( private Ġval Ġfinite List : ĠList < Pattern >, Ġprivate Ġval Ġrest : ĠPattern ?) Ġ{ ĊĠĠĠ Ġfun Ġget En compass able List ( count : ĠInt , Ġresolver : ĠResolver ): ĠList < Pattern > Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( count Ġ> Ġ 0 Ġ&& Ġfinite List . isEmpty () Ġ&& Ġrest Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠContract Exception (" The Ġlengths Ġof Ġthe Ġexpected Ġand Ġactual Ġarray Ġpatterns Ġdon 't Ġmatch .") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ> Ġfinite List . size Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( rest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġthrow ĠContract Exception (" The Ġlengths Ġof Ġthe Ġexpected Ġand Ġactual Ġarray Ġpatterns Ġdon 't Ġmatch .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmissing Entry Count Ġ= Ġcount Ġ- Ġfinite List . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmissing Entries Ġ= Ġ 0 . until ( missing Entry Count ). map Ġ{ Ġrest Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpadded Pattern Ġ= Ġfinite List . plus ( missing Entries ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget En compass able List ( padded Pattern , Ġresolver ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget En compass able List ( finite List , Ġresolver ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget En compass able List ( pattern : ĠList < Pattern >, Ġresolver : ĠResolver ): ĠList < Pattern > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresolver With Null Type Ġ= Ġwith Null Pattern ( resolver ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpattern . map Ġ{ Ġresolved Hop ( it , Ġresolver With Null Type ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget En compass ables ( resolver : ĠResolver ): ĠList < Pattern > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( rest ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinite List . plus ( it ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġfinite List ). map Ġ{ Ġresolved Hop ( it , Ġresolver ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis End less (): ĠBoolean Ġ= Ġrest Ġ!= Ġnull Ċ }