package Ġxyz . magenta ize . dynamic data . list Ċ Ċ import Ġxyz . magenta ize . dynamic data . domain . Person Ċ import Ġorg . am sh ove . k lu ent . shouldBe EqualTo Ċ import Ġkotlin . test . Test Ċ Ċ internal Ġclass ĠRef Count Fixture Ġ{ ĊĠĠĠ Ġval Ġsource Ġ= ĠSource List < Person >() ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġchain Is Inv oked Once For Multiple Sub scribers () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcreated Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġdis posals Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġlong Chain Ġ= Ġsource . connect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. transform Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Each Ġ{ Ġcreated ++ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġdis posals ++ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ref Count () ĊĊĠĠĠĠĠĠĠ Ġval Ġs 1 Ġ= Ġlong Chain . subscribe () ĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġlong Chain . subscribe () ĊĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġlong Chain . subscribe () ĊĊĠĠĠĠĠĠĠ Ġsource . add ( Person (" Name ", Ġ 1 0 )) ĊĠĠĠĠĠĠĠ Ġs 1 . dispose () ĊĠĠĠĠĠĠĠ Ġs 2 . dispose () ĊĠĠĠĠĠĠĠ Ġs 3 . dispose () ĊĊĠĠĠĠĠĠĠ Ġcreated ĠshouldBe EqualTo Ġ 1 ĊĠĠĠĠĠĠĠ Ġdis posals ĠshouldBe EqualTo Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Res ub scribe () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcreated Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġdis posals Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġsource . add ( Person (" Name ", Ġ 1 0 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġlong Chain Ġ= Ġsource . connect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. transform Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Each Ġ{ Ġcreated ++ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do Finally Ġ{ Ġdis posals ++ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ref Count () ĊĊĠĠĠĠĠĠĠ Ġvar Ġs Ġ= Ġlong Chain . subscribe () ĊĠĠĠĠĠĠĠ Ġs . dispose () ĊĊĠĠĠĠĠĠĠ Ġs Ġ= Ġlong Chain . subscribe () ĊĠĠĠĠĠĠĠ Ġs . dispose () ĊĊĠĠĠĠĠĠĠ Ġcreated ĠshouldBe EqualTo Ġ 2 ĊĠĠĠĠĠĠĠ Ġdis posals ĠshouldBe EqualTo Ġ 2 ĊĠĠĠ Ġ} Ċ } Ċ