package Ġno . nav . hel se . person Ċ Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Year Month Ċ import Ġno . nav . hel se . hen del ser . Per i ode Ċ import Ġno . nav . hel se . hen del ser . til Ċ import Ġno . nav . hel se . sy k dom st ids lin je . Sy k dom st ids lin je H en del se Ċ Ċ internal Ġclass ĠS yk meld ing sper iod er ( ĊĠĠĠ Ġprivate Ġvar Ġperiod er : ĠList < Per i ode > Ġ= ĠlistOf () Ċ ) Ġ{ ĊĊĠĠĠ Ġinternal Ġfun Ġaccept ( visitor : ĠS yk meld ing sper iod er Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisitor . pre Visit Sy k meld ing sper iod er ( this ) ĊĠĠĠĠĠĠĠ Ġperiod er . forEach Ġ{ Ġvisitor . visit Sy k meld ing sp eri ode ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġvisitor . post Visit Sy k meld ing sper iod er ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġlag re ( peri ode : ĠPer i ode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( over l app ende Period er , Ġgap Period er ) Ġ= Ġperiod er . partition Ġ{ Ġit . overlap per Med ( peri ode ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsam men h eng ende Period er Ġ= Ġover l app ende Period er Ġ+ ĠlistOf ( peri ode ) ĊĠĠĠĠĠĠĠ Ġval Ġny Per i ode Ġ= Ġsam men h eng ende Period er . min Of Ġ{ Ġit . start Ġ} Ġtil Ġsam men h eng ende Period er . max Of Ġ{ Ġit . end Inclusive Ġ} ĊĠĠĠĠĠĠĠ Ġperiod er Ġ= Ġ( gap Period er Ġ+ ĠlistOf ( ny Per i ode )). sorted By Ġ{ Ġit . start Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġhar Sy k meld ing sp eri ode I ( m Ã¥ ned : ĠYear Month ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġperiod er . flatten (). any Ġ{ ĠYear Month . from ( it ) Ġ== ĠmÃ¥ ned Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġhar Sy k meld ing sp eri ode () Ġ= Ġperiod er . isNotEmpty () ĊĊĠĠĠ Ġinternal Ġfun Ġkan Fort set te Be handling ( ved tak sp eri ode : ĠPer i ode ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġl av este D ato Ġ= Ġperiod er . min Of OrNull Ġ{ Ġit . start Ġ} Ġ?: Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġl av este D ato Ġ> Ġved tak sp eri ode . end Inclusive ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġf j ern ( tom : ĠLocalDate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġperiod er Ġ= Ġperiod er . map NotNull Ġ{ Ġit . be hold D ager Et ter ( tom ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġb lir Tr uff et Av ( inn tek ts meld ing : ĠS yk dom st ids lin je H en del se ) Ġ= Ġperiod er . any ( inn tek ts meld ing :: er Re levant ) ĊĠĠĠ Ġinternal Ġfun Ġhar Sy k meld ing sp eri ode F Ã¸ r ( dat o : ĠLocalDate ) Ġ= Ġperiod er . any Ġ{ Ġit . start Ġ< Ġdat o Ġ} Ċ } Ċ internal Ġinterface ĠS yk meld ing sper iod er Visitor Ġ{ ĊĠĠĠ Ġfun Ġpre Visit Sy k meld ing sper iod er ( sy k meld ing sper iod er : ĠS yk meld ing sper iod er ) Ġ{} ĊĠĠĠ Ġfun Ġvisit Sy k meld ing sp eri ode ( peri ode : ĠPer i ode ) Ġ{} ĊĠĠĠ Ġfun Ġpost Visit Sy k meld ing sper iod er ( sy k meld ing sper iod er : ĠS yk meld ing sper iod er ) Ġ{} Ċ } Ċ