/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . compose . compiler . plugins . kotlin Ċ Ċ import Ġorg . intellij . lang . annotations . Language Ċ import Ġorg . junit . Test Ċ Ċ abstract Ġclass ĠFunction Body Skipping Trans f om r Tests Base Ġ: ĠCompose Ir Transform Test () Ġ{ ĊĠĠĠ Ġprotected Ġfun Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠĠĠĠĠ Ġunchecked : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Language (" kotlin ") ĊĠĠĠĠĠĠĠ Ġchecked : ĠString , ĊĠĠĠĠĠĠĠ Ġexpected Trans formed : ĠString , ĊĠĠĠĠĠĠĠ Ġdump Tree : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ= Ġverify Compose Ir Transform ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Non Restart able Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . ReadOnly Composable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ checked ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠ Ġexpected Trans formed , ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Composable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ$ unchecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġused ( x : ĠAny ?) Ġ{} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), ĊĠĠĠĠĠĠĠ Ġdump Tree Ġ= Ġdump Tree ĊĠĠĠ Ġ) Ċ } Ċ Ċ class ĠFunction Body Skipping Transform Tests Ġ: ĠFunction Body Skipping Trans f om r Tests Base () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest If In Lambda (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠWrap ( content : Ġ@ Composable Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt , Ġy : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< Wrap >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( y )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrap ( comp osable Lambda (% composer , Ġ< >, Ġtrue ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ"< A ( x )> ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ 0 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty , Ġ 0 b 0 0 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ"< A ( x )> ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ 0 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty , Ġ 0 b 0 0 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( x , Ġy , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Basic Text (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . ui . text . style . Text Overflow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . ui . text . TextStyle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . ui . text . Text Layout Result ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠBasic Text ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle : ĠTextStyle Ġ= ĠTextStyle . Default , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Text Layout : Ġ( Text Layout Result ) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverflow : ĠText Overflow Ġ= ĠText Overflow . Clip , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( style ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( on Text Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( overflow ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠBasic Text ( style : ĠTextStyle ?, Ġon Text Layout : ĠFunction 1 < Text Layout Result , ĠUnit > ?, Ġoverflow : ĠText Overflow , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Basic Text ) P ( 2 !, 1 : c # ui . text . style . Text Overflow ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( style )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( on Text Layout )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed (< unsafe - coerce >( overflow ))) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 0 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠComp anion . Default ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Text Layout Ġ= Ġ{ Ġit : ĠText Layout Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverflow Ġ= ĠComp anion . Clip ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( style ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( on Text Layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( overflow ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBasic Text ( style , Ġon Text Layout , Ġoverflow , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Arrange ment (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . foundation . layout . Arrange ment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . foundation . layout . Arrange ment . Vertical ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrange ment : ĠVertical Ġ= ĠArrange ment . Top ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( arrange ment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( arrange ment : ĠVertical ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( A ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( arrange ment )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrange ment Ġ= ĠArrange ment . Top ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( arrange ment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( arrange ment , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable Sing letons Are Static (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( content : ĠFunction 2 < Composer , ĠInt , ĠUnit > ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example )< conten ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( content )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= ĠComp osable Sing letons % Test Kt . lambda - 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent (% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( content , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : ĠFunction 2 < Composer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Fun Interfaces (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġinterface ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun Ġcompute ( value : ĠInt ): ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a : ĠA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample Ġ{ Ġit Ġ-> Ġa . compute ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a : ĠA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( class Ġ< no Ġname Ġprovided > Ġ: ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompute ( it : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( compute )< comp ut ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( it )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa . compute ( it , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 _ rc vr Ġ= Ġ< this > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp 0 _ rc vr . compute ( it , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< no Ġname Ġprovided >()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Fun Interfaces 2 (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . ui . graphics . Color ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun Ġcondition (): ĠBoolean Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġinterface ĠButton Colors Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun Ġget Color (): ĠColor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . material . Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . ui . graphics . Color ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠButton ( colors : ĠButton Colors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" hello Ġworld ", Ġcolor Ġ= Ġcolors . getColor ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( condition ()) ĠColor . Red Ġelse ĠColor . Blue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠButton ( colors : ĠButton Colors , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Button )< get Col ... >,< Text (" ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( colors )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText (" hello Ġworld ", Ġnull , Ġcolors . getColor (% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ), Ġ< unsafe - coerce >( 0 L ), Ġnull , Ġnull , Ġnull , Ġ< unsafe - coerce >( 0 L ), Ġnull , Ġnull , Ġ< unsafe - coerce >( 0 L ), Ġ< unsafe - coerce >( 0 ), Ġfalse , Ġ 0 , Ġnull , Ġnull , Ġ% composer , Ġ 0 b 0 1 1 0 , Ġ 0 , Ġ 0 b 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( colors , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< Button >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠButton ( class Ġ< no Ġname Ġprovided > Ġ: ĠButton Colors Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Color (% composer : ĠComposer ?, Ġ% changed : ĠInt ): ĠColor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( getColor )< cond it ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= Ġif Ġ( condition (% composer , Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp anion . Red ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComp anion . Blue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< no Ġname Ġprovided >(), Ġ% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Simple Column (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Immutable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠModifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ: ĠModifier Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Immutable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠArrange ment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Immutable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠVertical Ġ: ĠArrange ment ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠTop Ġ: ĠVertical ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenum Ġclass ĠLayout Orientation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHorizontal , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVertical ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenum Ġclass ĠSize Mode Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExpand ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Immutable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠAlignment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvertical Bias : ĠFloat , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhorizontal Bias : ĠFloat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Immutable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠHorizontal ( val Ġbias : ĠFloat ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠStart Ġ= ĠAlignment . Horizontal (- 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠRow Column Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation : ĠLayout Orientation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrange ment : ĠArrange ment . Vertical Ġ= ĠArrange ment . Top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcross AxisAlignment : ĠAlignment . Horizontal Ġ= ĠAlignment . Start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcross Axis Size : ĠSize Mode Ġ= ĠSize Mode . Wrap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent : Ġ@ Composable () Ġ() -> Unit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( orientation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( arrange ment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( cross AxisAlignment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( cross Axis Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Arrange ment : ĠArrange ment . Vertical Ġ= ĠArrange ment . Top , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Gravity : ĠAlignment . Horizontal Ġ= ĠAlignment . Start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent : Ġ@ Composable () Ġ() -> Unit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow Column Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠLayout Orientation . Vertical , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrange ment Ġ= Ġvertical Arrange ment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcross AxisAlignment Ġ= Ġhorizontal Gravity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcross Axis Size Ġ= ĠSize Mode . Wrap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= Ġmodifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠRow Column Impl ( orientation : ĠLayout Orientation , Ġmodifier : ĠModifier ?, Ġarrange ment : ĠVertical ?, Ġcross AxisAlignment : ĠHorizontal ?, Ġcross Axis Size : ĠSize Mode ?, Ġcontent : ĠFunction 2 < Composer , ĠInt , ĠUnit >, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Row Column Impl ) P ( 5 , 4 ! 1 , 2 , 3 )< conten ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( orientation )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( modifier )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( arrange ment )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 1 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( cross AxisAlignment )) Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( cross Axis Size )) Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( content )) Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠComp anion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrange ment Ġ= ĠTop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcross AxisAlignment Ġ= ĠComp anion . Start ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcross Axis Size Ġ= ĠSize Mode . Wrap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( orientation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( arrange ment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( cross AxisAlignment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( cross Axis Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent (% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġshr Ġ 0 b 1 1 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow Column Impl ( orientation , Ġmodifier , Ġarrange ment , Ġcross AxisAlignment , Ġcross Axis Size , Ġcontent , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠColumn ( modifier : ĠModifier ?, Ġvertical Arrange ment : ĠVertical ?, Ġhorizontal Gravity : ĠHorizontal ?, Ġcontent : ĠFunction 2 < Composer , ĠInt , ĠUnit >, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Column ) P ( 2 , 3 , 1 )< Row Col ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( modifier )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( vertical Arrange ment )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( horizontal Gravity )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 1 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( content )) Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 1 0 0 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠComp anion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Arrange ment Ġ= ĠTop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhorizontal Gravity Ġ= ĠComp anion . Start ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 _ orientation Ġ= ĠLayout Orientation . Vertical ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 1 _ cross Axis Size Ġ= ĠSize Mode . Wrap ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow Column Impl ( tmp 0 _ orientation , Ġmodifier , Ġvertical Arrange ment , Ġhorizontal Gravity , Ġtmp 1 _ cross Axis Size , Ġcontent , Ġ% composer , Ġ 0 b 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 1 1 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠColumn ( modifier , Ġvertical Arrange ment , Ġhorizontal Gravity , Ġcontent , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Simp ler Box (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Stable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠModifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ: ĠModifier Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSimple Box ( modifier : ĠModifier Ġ= ĠModifier ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSimple Box ( modifier : ĠModifier ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Simple Box ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( modifier )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠComp anion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Box ( modifier , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Default Skipping (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġnew Int (): ĠInt Ġ= Ġ 1 2 3 ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a : ĠInt Ġ= Ġnew Int ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ&& Ġ% composer . changed ( a )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ= Ġnew Int () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 1 1 1 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 1 1 1 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( a , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Local Composable Functions (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( a : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠInner () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInner () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example )< Inner (... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠInner (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Inner )< A ( a ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( a , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInner (% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( a , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Loop With Continue And Call After (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠCall () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcondition (): ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Non Restart able Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 .. 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( condition ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Non Restart able Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example )< Call () >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall (% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 _ iterator Ġ= Ġ 0 Ġ.. Ġ 1 . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( tmp 0 _ iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ"< Call () >,< Call ()> ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġtmp 0 _ iterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall (% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( condition ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall (% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Simple Box With Shape (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Stable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠModifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ: ĠModifier Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠShape Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠRectangle Shape Ġ= Ġobject Ġ: ĠShape Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSimple Box ( modifier : ĠModifier Ġ= ĠModifier , Ġshape : ĠShape Ġ= ĠRectangle Shape ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( shape ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSimple Box ( modifier : ĠModifier ?, Ġshape : ĠShape ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Simple Box ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( modifier )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ=== Ġ 0 Ġ&& Ġ% composer . changed ( shape )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠComp anion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape Ġ= ĠRectangle Shape ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( shape ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Box ( modifier , Ġshape , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Simple Box (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Stable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠModifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ: ĠModifier Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSimple Box ( modifier : ĠModifier Ġ= ĠModifier , Ġcontent : Ġ@ Composable () Ġ() Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSimple Box ( modifier : ĠModifier ?, Ġcontent : ĠFunction 2 < Composer , ĠInt , ĠUnit > ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Simple Box ) P ( 1 )< conten ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( modifier )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( content )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠComp anion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= ĠComp osable Sing letons % Test Kt . lambda - 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent (% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġshr Ġ 0 b 0 0 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple Box ( modifier , Ġcontent , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : ĠFunction 2 < Composer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable Lambda With Stable Params (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Immutable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Immutable Ġclass ĠFoo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠB ( y : ĠFoo ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfoo Ġ= Ġ@ Composable Ġ{ Ġx : ĠInt , Ġy : ĠFoo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfoo : ĠFunction 4 < Int , ĠFoo , ĠComposer , ĠInt , ĠUnit > Ġ= ĠComp osable Sing letons % Test Kt . lambda - 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : ĠFunction 4 < Int , ĠFoo , ĠComposer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġx : ĠInt , Ġy : ĠFoo , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C < A ( x ) >,< B ( y ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( y )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 0 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( y , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġshr Ġ 0 b 0 0 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable Lambda With Un stable Params (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo ( var Ġvalue : ĠInt Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠB ( y : ĠFoo ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfoo Ġ= Ġ@ Composable Ġ{ Ġx : ĠInt , Ġy : ĠFoo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfoo : ĠFunction 4 < Int , ĠFoo , ĠComposer , ĠInt , ĠUnit > Ġ= ĠComp osable Sing letons % Test Kt . lambda - 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : ĠFunction 4 < Int , ĠFoo , ĠComposer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġx : ĠInt , Ġy : ĠFoo , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C < A ( x ) >,< B ( y ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% changed ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( y , Ġ% composer , Ġ 0 b 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable Lambda With Stable Params And ReturnValue (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠSome Thing ( content : Ġ@ Composable () Ġ() Ġ-> ĠUnit ) Ġ{ Ġcontent () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSome Thing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġobject Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSome Thing ( content : ĠFunction 2 < Composer , ĠInt , ĠUnit >, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Some Thing )< conten ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( content )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent (% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSome Thing ( content , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example )< Some Th ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSome Thing ( Composable Sing letons % Test Kt . lambda - 1 , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : ĠFunction 2 < Composer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġobject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Primitive Var arg Params (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB ( var arg Ġvalues : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB ( values : ĠInt Array , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( B ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Mov able Group (< >, Ġvalues . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 _ iterator Ġ= Ġvalues . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( tmp 0 _ iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġtmp 0 _ iterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( value )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Mov able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB (* values , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Stable Var arg Params (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Immutable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Immutable Ġclass ĠFoo ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB ( var arg Ġvalues : ĠFoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB ( values : ĠArray < out ĠFoo >, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( B ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Mov able Group (< >, Ġvalues . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 _ iterator Ġ= Ġvalues . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( tmp 0 _ iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġtmp 0 _ iterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( value )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Mov able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB (* values , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Un stable Var arg Params (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo ( var Ġvalue : ĠInt Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB ( var arg Ġvalues : ĠFoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB ( values : ĠArray < out ĠFoo >, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( B ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( values ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB (* values , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Receiver Param Sk ipp ability (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcounter : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" hello Ġworld ") ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠB () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( counter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ St ability In ferred ( parameters Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcounter : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( A ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" hello Ġworld ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 _ rc vr Ġ= Ġ< this > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp 0 _ rc vr . A (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( B ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( counter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 _ rc vr Ġ= Ġ< this > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp 0 _ rc vr . B (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġval Ġ% stable : ĠInt Ġ= Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable Parameter (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun Ġmake Int (): ĠInt Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a : ĠInt Ġ= Ġ 0 , Ġb : ĠInt Ġ= Ġmake Int (), Ġc : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a : ĠInt , Ġb : ĠInt , Ġc : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example )< make In ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ=== Ġ 0 Ġ&& Ġ% composer . changed ( b )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( c )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 0 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġmake Int (% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( a , Ġb , Ġc , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable With And Without Default Params (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠWrap ( y : ĠInt , Ġcontent : Ġ@ Composable Ġ( x : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent ( y ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrap ( 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠWrap ( y : ĠInt , Ġcontent : ĠFunction 3 < @ [ ParameterName ( name Ġ= Ġ' x ')] ĠInt , ĠComposer , ĠInt , ĠUnit >, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Wrap ) P ( 1 )< conten ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( y )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( content )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent ( y , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrap ( y , Ġcontent , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt , Ġy : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< Wrap ( 1 ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( y )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( y ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWrap ( 1 0 , Ġcomp osable Lambda (% composer , Ġ< >, Ġtrue ) Ġ{ Ġit : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C < A ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( it )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ 0 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty , Ġ 0 b 0 0 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ% composer , Ġ 0 b 0 0 1 1 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( x , Ġy , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable With ReturnValue (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġx Ġ+ Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt , Ġy : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< A ( x , >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġy , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% changed Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% changed , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= Ġx Ġ+ Ġy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable Lambda (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest Ġ= Ġ@ Composable Ġ{ Ġx : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtest : ĠFunction 3 < Int , ĠComposer , ĠInt , ĠUnit > Ġ= ĠComp osable Sing letons % Test Kt . lambda - 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : ĠFunction 3 < Int , ĠComposer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġx : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C < A ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ 0 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty , Ġ 0 b 0 0 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable Fun Expr Body (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ): ĠInt Ġ{ Ġreturn Ġ 1 0 Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠTest ( x : ĠInt ) Ġ= ĠA () ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< A () >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= ĠA ( 0 , Ġ 0 , Ġ% composer , Ġ 0 , Ġ 0 b 0 0 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Param Re ordering (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ): ĠInt Ġ{ Ġreturn Ġ 1 0 Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠTest ( x : ĠInt , Ġy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( y Ġ= Ġy , Ġx Ġ= Ġx ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt , Ġy : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< A ( y >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( y )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġy , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( x , Ġy , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Stable Un stable Params (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt Ġ= Ġ 0 , Ġy : ĠInt Ġ= Ġ 0 ): ĠInt Ġ{ Ġreturn Ġ 1 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo ( var Ġvalue : ĠInt Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠCan Skip ( a : ĠInt Ġ= Ġ 0 , Ġb : ĠFoo Ġ= ĠFoo ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠCannot Skip ( a : ĠInt , Ġb : ĠFoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠNo Params () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠCan Skip ( a : ĠInt , Ġb : ĠFoo ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Can Skip ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= ĠFoo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCan Skip ( a , Ġb , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠCannot Skip ( a : ĠInt , Ġb : ĠFoo , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Cannot Skip ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCannot Skip ( a , Ġb , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠNo Params (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( No Params ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNo Params (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Optional Un stable With Stable Extension Receiver (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo ( var Ġvalue : ĠInt Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠBar ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠBar . Can Skip ( b : ĠFoo Ġ= ĠFoo ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠBar . Can Skip ( b : ĠFoo ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Can Skip ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 b 0 0 0 1 Ġ|| Ġ% dirty Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= ĠFoo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCan Skip ( b , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest No Params (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA () Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< A () >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA (% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Stable Param (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< A ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Inline Class Default Parameter (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinline Ġclass ĠColor ( val Ġvalue : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠUn set Ġ= ĠColor ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB ( text : ĠString , Ġcolor : ĠColor Ġ= ĠColor . Unset ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( text : ĠString , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( A )< B ( text ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( text )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( text , Ġ< unsafe - coerce >( 0 ), Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty , Ġ 0 b 0 0 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( text , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB ( text : ĠString , Ġcolor : ĠColor , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( B ) P ( 1 , 0 : Color ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( text )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed (< unsafe - coerce >( color ))) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠComp anion . Unset ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( text , Ġcolor , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Static Detection (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Stable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġenum Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBar , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB am ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval Ġconst Int : ĠInt Ġ= Ġ 1 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnorm Int Ġ= Ġ 3 4 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstable TopLevel Prop : ĠModifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠC ( x : ĠAny ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠModifier Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ: ĠModifier Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinline Ġclass ĠD p ( val Ġvalue : ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġstable Fun ( x : ĠInt ): ĠInt Ġ= Ġx Ġ* Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperator Ġfun ĠD p . plus ( other : ĠD p ): ĠD p Ġ= ĠD p ( this . value Ġ+ Ġother . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠInt . dp : ĠD p Ġget () Ġ= ĠD p ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠD ( content : Ġ@ Composable () Ġ() Ġ-> ĠUnit ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġall Ġof Ġthese Ġshould Ġresult Ġin Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ 1 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ({}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( stable Fun ( 1 2 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( 1 6 . dp Ġ+ Ġ 1 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Dp ( 1 6 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( norm Int ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Int . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( stable TopLevel Prop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Foo . Bar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( const Int ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( 1 2 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( 1 2 3 Ġ+ Ġ 3 4 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( x Ġ* Ġ 1 2 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġall Ġof Ġthese Ġshould Ġresult Ġin Ġ 0 b 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠB () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Math . random ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Math . random () Ġ/ Ġ 1 0 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( A )< D >,< C ({}) >,< C ( stab ... >,< C ( 1 6 . d ... >,< C ( Dp ( 1 ... >,< C ( 1 6 . d ... >,< C ( norm ... >,< C ( Int .... >,< C ( stab ... >,< C ( Mod i ... >,< C ( Foo .... >,< C ( cons ... >,< C ( 1 2 3 ) >,< C ( 1 2 3 >,< C ( x ) >,< C ( x >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ 1 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD ( Composable Sing letons % Test Kt . lambda - 1 , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( stable Fun ( 1 2 3 ), Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( 1 6 . dp Ġ+ Ġ 1 0 . dp , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Dp ( 1 6 ), Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( 1 6 . dp , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( norm Int , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Companion . MAX _ VALUE , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( stable TopLevel Prop , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Companion , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( Foo . Bar , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( const Int , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( 1 2 3 , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( 1 2 3 Ġ+ Ġ 3 4 5 , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( x , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( x Ġ* Ġ 1 2 3 , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( B )< C ( Math ... >,< C ( Math ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( random (), Ġ% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ( random () Ġ/ Ġ 1 0 0 . 0 f , Ġ% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : ĠFunction 2 < Composer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Annotation Checker (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠD ( content : Ġ@ Composable () Ġ() Ġ-> ĠUnit ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠExample () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example )< D >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD ( Composable Sing letons % Test Kt . lambda - 1 , Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : ĠFunction 2 < Composer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Stable Param WithDefault (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt Ġ= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< A ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Stable Param With Composable Default (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠI (): ĠInt Ġ{ Ġreturn Ġ 1 0 Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt Ġ= ĠI ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< I () >,< A ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ&& Ġ% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= ĠI (% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 1 1 1 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 1 1 1 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Un stable Param (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠFoo ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo ( var Ġvalue : ĠInt Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠFoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠFoo , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< A ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ 0 b 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Un stable Param WithDefault (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( x : ĠFoo ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠFoo Ġ= ĠFoo ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( x : ĠFoo ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< A ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ&& Ġ% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ= ĠFoo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 1 1 1 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 1 1 1 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Many Non Optional Params (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( a : ĠInt , Ġb : ĠBoolean , Ġc : ĠInt , Ġd : ĠFoo , Ġe : ĠList < Int >) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( a : ĠInt , Ġb : ĠBoolean , Ġc : ĠInt Ġ= Ġ 0 , Ġd : ĠFoo Ġ= ĠFoo (), Ġe : ĠList < Int > Ġ= Ġempty List ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( a , Ġb , Ġc , Ġd , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( a : ĠInt , Ġb : ĠBoolean , Ġc : ĠInt , Ġd : ĠFoo ?, Ġe : ĠList < Int > ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< A ( a , >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( b )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( c )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ=== Ġ 0 Ġ&& Ġ% composer . changed ( d )) Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 b 0 0 0 1 0 0 0 0 Ġ|| Ġ% dirty Ġand Ġ 0 b 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd Ġ= ĠFoo () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( a , Ġb , Ġc , Ġd , Ġe , Ġ% composer , Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġor Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( a , Ġb , Ġc , Ġd , Ġe , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Recursive Call (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠX ( x : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX ( x Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠX ( x : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( X )< X ( x >,< X ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX ( x Ġ+ Ġ 1 , Ġ% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX ( x , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Lambda Skipping (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime .* ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠUser ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġinterface ĠLazy Paging Items < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Count : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperator Ġfun Ġget ( index : ĠInt ): ĠState < T ?> ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Stable Ġinterface ĠLazy List Scope Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġitems ( item Count : ĠInt , Ġitem Content : Ġ@ Composable ĠLazy Item Scope .( Int ) Ġ-> ĠUnit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Stable Ġinterface ĠLazy Item Scope ĊĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġ< T Ġ: ĠAny > ĠLazy List Scope . items Indexed ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlazy Paging Items : ĠLazy Paging Items < T >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Content : Ġ@ Composable ĠLazy Item Scope .( Int , ĠT ?) Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems ( lazy Paging Items . item Count ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġlazy Paging Items [ index ]. value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Content ( index , Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠLazy List Scope . Example ( items : ĠLazy Paging Items < User >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Indexed ( items ) Ġ{ Ġindex , Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠLazy List Scope . Example ( items : ĠLazy Paging Items < User >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems Indexed ( items , ĠComp osable Sing letons % Test Kt . lambda - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : Ġ@ [ Extension FunctionType ] ĠFunction 5 < Lazy Item Scope , ĠInt , ĠUser ?, ĠComposer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġindex : ĠInt , Ġuser : ĠUser ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 Ġ!== Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Passed Extension When Extension Is Pot entially Un stable (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠUn stable ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠUn stable . Test () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Something ( this ) Ġ// Ġdoes Ġthis Ġreference Ġ% dirty Ġwithout Ġ% dirty ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun Ġdo Something ( x : ĠUn stable ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠUn stable . Test (% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< do Some ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed (< this > )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Something (< this >, Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest (% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġdo Something ( x : ĠUn stable , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( do Something ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Something ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Receiver Issue (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠFoo ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Explicit Groups Composable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Explicit Groups Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( foo : ĠFoo ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfoo . b () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Explicit Groups Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinline Ġfun ĠFoo . b ( label : ĠString Ġ= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ( this , Ġlabel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Explicit Groups Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinline Ġfun Ġc ( foo : ĠFoo , Ġlabel : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Explicit Groups Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( foo : ĠFoo , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfoo . b ( null , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% changed , Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Explicit Groups Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠFoo . b ( label : ĠString ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc (< this >, Ġlabel , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% changed Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% changed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Explicit Groups Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġc ( foo : ĠFoo , Ġlabel : ĠString , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( label ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Different Parameters (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠB ( a : ĠInt , Ġb : ĠInt , Ġc : ĠInt , Ġd : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfoo Global Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( x : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdirect Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtransformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+ Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġliteral ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġexpression Ġwith Ġno Ġparameter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfoo Global ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( x : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( A )< B ( >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( x , Ġx Ġ+ Ġ 1 , Ġ 1 2 3 , Ġfoo Global , Ġ% composer , Ġ 0 b 1 1 0 1 1 0 0 0 0 0 0 0 Ġor Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Receiver Lambda Call (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Stable ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠFoo Ġ{ Ġval Ġx : ĠInt Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Stable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠSt able Foo Ġ{ Ġval Ġx : ĠInt Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġun stable Unused : Ġ@ Composable ĠFoo . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġun stable Used : Ġ@ Composable ĠFoo . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstable Unused : Ġ@ Composable ĠSt able Foo . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstable Used : Ġ@ Composable ĠSt able Foo . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġun stable Unused : Ġ@ [ Extension FunctionType ] ĠFunction 3 < Foo , ĠComposer , ĠInt , ĠUnit > Ġ= ĠComp osable Sing letons % Test Kt . lambda - 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġun stable Used : Ġ@ [ Extension FunctionType ] ĠFunction 3 < Foo , ĠComposer , ĠInt , ĠUnit > Ġ= ĠComp osable Sing letons % Test Kt . lambda - 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstable Unused : Ġ@ [ Extension FunctionType ] ĠFunction 3 < Stable Foo , ĠComposer , ĠInt , ĠUnit > Ġ= ĠComp osable Sing letons % Test Kt . lambda - 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstable Used : Ġ@ [ Extension FunctionType ] ĠFunction 3 < Stable Foo , ĠComposer , ĠInt , ĠUnit > Ġ= ĠComp osable Sing letons % Test Kt . lambda - 4 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : Ġ@ [ Extension FunctionType ] ĠFunction 3 < Foo , ĠComposer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 0 1 0 0 0 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 0 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 2 : Ġ@ [ Extension FunctionType ] ĠFunction 3 < Foo , ĠComposer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed (% this % null )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused (% this % null . x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 3 : Ġ@ [ Extension FunctionType ] ĠFunction 3 < Stable Foo , ĠComposer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 0 1 0 0 0 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 0 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 4 : Ġ@ [ Extension FunctionType ] ĠFunction 3 < Stable Foo , ĠComposer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed (% this % null )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused (% this % null . x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Nested Calls (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠB ( a : ĠInt Ġ= Ġ 0 , Ġb : ĠInt Ġ= Ġ 0 , Ġc : ĠInt Ġ= Ġ 0 ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠProvide ( content : Ġ@ Composable Ġ( Int ) Ġ-> ĠUnit ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( x : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProvide Ġ{ Ġy Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProvide Ġ{ Ġz Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( x , Ġy , Ġz ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( x : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( A )< Pro vid ... >,< B ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProvide ( comp osable Lambda (% composer , Ġ< >, Ġtrue ) Ġ{ Ġy : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C < Pro vid ... >,< B ( x , >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( y )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProvide ( comp osable Lambda (% composer , Ġ< >, Ġtrue ) Ġ{ Ġz : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C < B ( x , >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( z )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( x , Ġy , Ġz , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 1 1 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( x , Ġy , Ġ 0 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 0 1 1 , Ġ 0 b 0 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ% composer , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( x , Ġ 0 , Ġ 0 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty , Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Local Function (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠB ( a : ĠInt , Ġb : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( x : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun Ġfoo ( y : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( x , Ġy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfoo ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( x : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( A )< foo ( x ) >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfoo ( y : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( foo )< B ( x , >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB ( x , Ġy , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% changed Ġshl Ġ 0 b 0 0 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfoo ( x , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 1 5 Parameters (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 0 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 1 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 2 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 3 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 4 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 5 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 6 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 7 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 8 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 9 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 0 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 1 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 2 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 3 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 4 : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġorder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġopposite Ġorder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a 0 0 : ĠInt , Ġa 0 1 : ĠInt , Ġa 0 2 : ĠInt , Ġa 0 3 : ĠInt , Ġa 0 4 : ĠInt , Ġa 0 5 : ĠInt , Ġa 0 6 : ĠInt , Ġa 0 7 : ĠInt , Ġa 0 8 : ĠInt , Ġa 0 9 : ĠInt , Ġa 1 0 : ĠInt , Ġa 1 1 : ĠInt , Ġa 1 2 : ĠInt , Ġa 1 3 : ĠInt , Ġa 1 4 : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% changed 1 : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example )< Ex amp l ... >,< Ex amp l ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty 1 Ġ= Ġ% changed 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 0 )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 1 )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 2 )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 1 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 3 )) Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 4 )) Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 5 )) Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 6 )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 7 )) Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 8 )) Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 9 )) Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 0 )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 1 )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 2 )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 1 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 3 )) Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 4 )) Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 Ġ|| Ġ% dirty 1 Ġand Ġ 0 b 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 0 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 3 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 4 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 5 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 6 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 7 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 8 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 9 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 0 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 3 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 4 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( a 0 0 , Ġa 0 1 , Ġa 0 2 , Ġa 0 3 , Ġa 0 4 , Ġa 0 5 , Ġa 0 6 , Ġa 0 7 , Ġa 0 8 , Ġa 0 9 , Ġa 1 0 , Ġa 1 1 , Ġa 1 2 , Ġa 1 3 , Ġa 1 4 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( a 1 4 , Ġa 1 3 , Ġa 1 2 , Ġa 1 1 , Ġa 1 0 , Ġa 0 9 , Ġa 0 8 , Ġa 0 7 , Ġa 0 6 , Ġa 0 5 , Ġa 0 4 , Ġa 0 3 , Ġa 0 2 , Ġa 0 1 , Ġa 0 0 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty 1 Ġshr Ġ 0 b 1 1 0 0 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty 1 Ġshr Ġ 0 b 0 1 1 0 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġshl Ġ 0 b 0 1 1 0 Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġshl Ġ 0 b 1 1 0 0 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshr Ġ 0 b 1 1 0 0 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshr Ġ 0 b 0 1 1 0 Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 1 1 0 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 1 1 0 0 , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġshr Ġ 0 b 1 1 0 0 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty Ġshr Ġ 0 b 0 1 1 0 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 1 1 0 Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 1 1 0 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( a 0 0 , Ġa 0 1 , Ġa 0 2 , Ġa 0 3 , Ġa 0 4 , Ġa 0 5 , Ġa 0 6 , Ġa 0 7 , Ġa 0 8 , Ġa 0 9 , Ġa 1 0 , Ġa 1 1 , Ġa 1 2 , Ġa 1 3 , Ġa 1 4 , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% changed 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 1 6 Parameters (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 0 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 1 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 2 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 3 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 4 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 5 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 6 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 7 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 8 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 9 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 0 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 1 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 2 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 3 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 4 : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 5 : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġorder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġin Ġopposite Ġorder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( a 0 0 : ĠInt , Ġa 0 1 : ĠInt , Ġa 0 2 : ĠInt , Ġa 0 3 : ĠInt , Ġa 0 4 : ĠInt , Ġa 0 5 : ĠInt , Ġa 0 6 : ĠInt , Ġa 0 7 : ĠInt , Ġa 0 8 : ĠInt , Ġa 0 9 : ĠInt , Ġa 1 0 : ĠInt , Ġa 1 1 : ĠInt , Ġa 1 2 : ĠInt , Ġa 1 3 : ĠInt , Ġa 1 4 : ĠInt , Ġa 1 5 : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% changed 1 : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example )< Ex amp l ... >,< Ex amp l ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty 1 Ġ= Ġ% changed 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 0 )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 1 )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 2 )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 1 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 3 )) Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 4 )) Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 5 )) Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 6 )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 7 )) Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 8 )) Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( a 0 9 )) Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 0 )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 1 )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 2 )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 1 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 3 )) Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 4 )) Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġ 0 b 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed 1 Ġand Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty 1 Ġ= Ġ% dirty 1 Ġor Ġif Ġ(% composer . changed ( a 1 5 )) Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 Ġ|| Ġ% dirty 1 Ġand Ġ 0 b 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 0 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 3 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 4 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 5 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 6 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 7 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 8 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 0 9 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 0 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 1 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 2 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 3 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 4 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġa 1 5 Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( a 0 0 , Ġa 0 1 , Ġa 0 2 , Ġa 0 3 , Ġa 0 4 , Ġa 0 5 , Ġa 0 6 , Ġa 0 7 , Ġa 0 8 , Ġa 0 9 , Ġa 1 0 , Ġa 1 1 , Ġa 1 2 , Ġa 1 3 , Ġa 1 4 , Ġa 1 5 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( a 1 5 , Ġa 1 4 , Ġa 1 3 , Ġa 1 2 , Ġa 1 1 , Ġa 1 0 , Ġa 0 9 , Ġa 0 8 , Ġa 0 7 , Ġa 0 6 , Ġa 0 5 , Ġa 0 4 , Ġa 0 3 , Ġa 0 2 , Ġa 0 1 , Ġa 0 0 , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty 1 Ġshr Ġ 0 b 1 1 1 1 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty 1 Ġshr Ġ 0 b 1 0 0 1 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġshr Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġshl Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġshl Ġ 0 b 1 0 0 1 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty 1 Ġshl Ġ 0 b 1 1 1 1 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshr Ġ 0 b 1 0 0 1 Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshr Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 1 0 0 1 , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġshr Ġ 0 b 1 1 1 1 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 Ġand Ġ% dirty Ġshr Ġ 0 b 1 0 0 1 Ġor Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshr Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 0 0 1 1 Ġor Ġ 0 b 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 1 0 0 1 Ġor Ġ 0 b 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Ġand Ġ% dirty Ġshl Ġ 0 b 1 1 1 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( a 0 0 , Ġa 0 1 , Ġa 0 2 , Ġa 0 3 , Ġa 0 4 , Ġa 0 5 , Ġa 0 6 , Ġa 0 7 , Ġa 0 8 , Ġa 0 9 , Ġa 1 0 , Ġa 1 1 , Ġa 1 2 , Ġa 1 3 , Ġa 1 4 , Ġa 1 5 , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% changed 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Group less Property (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . current Composer ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinline Ġval Ġcurrent : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable Ġget () Ġ= Ġcurrent Composer . hashCode () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget HashCode (): ĠInt Ġ= Ġcurrent Composer . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget HashCode (): ĠInt Ġ= Ġcurrent Composer . hashCode () ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ St ability In ferred ( parameters Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġ@ ReadOnly Composable Ġ@ Jvm Name ( name Ġ= Ġ" getCurrent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information Marker Start (% composer , Ġ< >, Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= Ġ% composer . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information Marker End (% composer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget HashCode (% composer : ĠComposer ?, Ġ% changed : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information Marker Start (% composer , Ġ< >, Ġ" C ( get HashCode ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= Ġ% composer . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information Marker End (% composer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġval Ġ% stable : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget HashCode (% composer : ĠComposer ?, Ġ% changed : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information Marker Start (% composer , Ġ< >, Ġ" C ( get HashCode ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= Ġ% composer . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information Marker End (% composer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Static And Non Static DefaultValue Skipping (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . composition Local Of ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠLocal Color Ġ= Ġcomposition Local Of Ġ{ Ġ 1 2 3 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA ( a : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw ont Change : ĠInt Ġ= Ġ 1 2 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmight Change : ĠInt Ġ= ĠLocal Color . current ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( w ont Change ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( m ight Change ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( w ont Change : ĠInt , Ġmight Change : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example ) P ( 1 )< c urren ... >,< A ( w ont ... >,< A ( m igh ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( w ont Change )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ=== Ġ 0 Ġ&& Ġ% composer . changed ( m ight Change )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw ont Change Ġ= Ġ 1 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmight Change Ġ= ĠLocal Color . current ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( w ont Change , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ( m ight Change , Ġ% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġshr Ġ 0 b 0 0 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( w ont Change , Ġmight Change , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable Lambda Invoke (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠExample ( content : Ġ@ Composable () Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠExample ( content : ĠFunction 2 < Composer , ĠInt , ĠUnit >, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Example )< invoke ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( content )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent (% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample ( content , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Composable L amb das With Return Get Groups (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( factory : Ġ@ Composable Ġ() Ġ-> ĠInt ): ĠUnit Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB () Ġ= ĠA Ġ{ Ġ 1 2 3 Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠA ( factory : ĠFunction 2 < Composer , ĠInt , ĠInt >) Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠB () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠA Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= Ġ 1 2 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Defaults Issue (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . ui . Modifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . ui . unit . Dp ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠBox 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier : ĠModifier Ġ= ĠModifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Start : ĠD p Ġ= ĠD p . Unspecified , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent : Ġ@ Composable Ġ() Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( padding Start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠBox 2 ( modifier : ĠModifier ?, Ġpadding Start : ĠD p , Ġcontent : ĠFunction 2 < Composer , ĠInt , ĠUnit > ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Box 2 ) P ( 1 , 2 : c # ui . unit . Dp )< conten ... >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( modifier )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 1 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed (< unsafe - coerce >( padding Start ))) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( content )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 0 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠComp anion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpadding Start Ġ= ĠComp anion . Unspecified ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 1 0 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= ĠComp osable Sing letons % Test Kt . lambda - 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( modifier ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( padding Start ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent (% composer , Ġ 0 b 1 1 1 0 Ġand Ġ% dirty Ġshr Ġ 0 b 0 1 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBox 2 ( modifier , Ġpadding Start , Ġcontent , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : ĠFunction 2 < Composer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Sibling I fs Without Else Have Unique Keys (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠA (){} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠB (){} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( cond : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cond ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cond ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠTest ( cond : ĠBoolean , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Test )< B () >: Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( cond )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Replace able Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ"< A ()> ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cond ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA (% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Replace able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cond ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB (% composer , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest ( cond , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Unused Parameters (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠUn stable ( var Ġcount : ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠSt able ( val Ġcount : ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠMaybe Stable ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠUn sk ipp able ( a : ĠUn stable , Ġb : ĠSt able , Ġc : ĠMaybe Stable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSk ipp able 1 ( a : ĠUn stable , Ġb : ĠSt able , Ġc : ĠMaybe Stable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSk ipp able 2 ( a : ĠUn stable , Ġb : ĠSt able , Ġc : ĠMaybe Stable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSk ipp able 3 ( a : ĠUn stable , Ġb : ĠSt able , Ġc : ĠMaybe Stable ) Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠUn sk ipp able ( a : ĠUn stable , Ġb : ĠSt able , Ġc : ĠMaybe Stable , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Un sk ipp able ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( a ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUn sk ipp able ( a , Ġb , Ġc , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSk ipp able 1 ( a : ĠUn stable , Ġb : ĠSt able , Ġc : ĠMaybe Stable , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Sk ipp able 1 ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( b )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 0 0 0 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 0 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSk ipp able 1 ( a , Ġb , Ġc , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSk ipp able 2 ( a : ĠUn stable , Ġb : ĠSt able , Ġc : ĠMaybe Stable , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Sk ipp able 2 ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 1 1 1 0 0 0 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( c )) Ġ 0 b 0 0 0 1 0 0 0 0 0 0 0 0 Ġelse Ġ 0 b 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 0 1 0 1 0 0 0 0 0 0 1 Ġ!== Ġ 0 b 1 0 0 0 0 0 0 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSk ipp able 2 ( a , Ġb , Ġc , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠSk ipp able 3 ( a : ĠUn stable , Ġb : ĠSt able , Ġc : ĠMaybe Stable , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Sk ipp able 3 ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSk ipp able 3 ( a , Ġb , Ġc , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Extension Receiver (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinterface ĠMaybe Stable ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġfun ĠMaybe Stable . example ( x : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexample : Ġ@ Composable ĠMaybe Stable .( Int ) Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠMaybe Stable . example ( x : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( example ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed (< this > )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( x )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 0 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused (< this >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexample ( x , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexample : Ġ@ [ Extension FunctionType ] ĠFunction 4 < Maybe Stable , ĠInt , ĠComposer , ĠInt , ĠUnit > Ġ= ĠComp osable Sing letons % Test Kt . lambda - 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġobject ĠComp osable Sing letons % Test Kt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlambda - 1 : Ġ@ [ Extension FunctionType ] ĠFunction 4 < Maybe Stable , ĠInt , ĠComposer , ĠInt , ĠUnit > Ġ= Ġcomp osable Lambda Instance (< >, Ġfalse ) Ġ{ Ġit : ĠInt , Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C : Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed (% this % null )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( it )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 0 1 0 1 1 0 1 1 0 1 1 Ġ!== Ġ 0 b 1 0 0 1 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused (% this % null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġused ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Array Default Arg With State (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . Mutable State ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠVar arg Composable ( state : ĠMutable State < Int >, Ġvar arg Ġvalues : ĠString Ġ= ĠArray ( 1 ) Ġ{ Ġ" value Ġ" Ġ+ Ġit Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠVar arg Composable ( state : ĠMutable State < Int >, Ġvalues : ĠArray < out ĠString > ?, Ġ% composer : ĠComposer ?, Ġ% changed : ĠInt , Ġ% default : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event Start (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer Ġ= Ġ% composer . start Restart Group (< >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Information (% composer , Ġ" C ( Var arg Composable ): Test . kt ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ% dirty Ġ= Ġ% changed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 0 1 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 1 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(% changed Ġand Ġ 0 b 1 1 1 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( state )) Ġ 0 b 0 1 0 0 Ġelse Ġ 0 b 0 0 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Mov able Group (< >, Ġvalues . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 _ iterator Ġ= Ġvalues . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( tmp 0 _ iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġtmp 0 _ iterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġif Ġ(% composer . changed ( value )) Ġ 0 b 0 0 1 0 0 0 0 0 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Mov able Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 Ġ=== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġor Ġ 0 b 0 0 0 1 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% dirty Ġand Ġ 0 b 1 0 1 1 Ġ!== Ġ 0 b 0 0 1 0 Ġ|| Ġ! % composer . sk ipping ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . start Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% changed Ġand Ġ 0 b 0 0 0 1 Ġ=== Ġ 0 Ġ|| Ġ% composer . defaults Invalid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues Ġ= ĠArray ( 1 ) Ġ{ Ġit : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" value Ġ" Ġ+ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(% default Ġand Ġ 0 b 0 0 1 0 Ġ!== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% dirty Ġ= Ġ% dirty Ġand Ġ 0 b 0 1 1 1 0 0 0 0 . inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Defaults () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . skip To Group End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ% composer . end Restart Group ()?. update Scope Ġ{ Ġ% composer : ĠComposer ?, Ġ% force : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVar arg Composable ( state , Ġ* values , Ġ% composer , Ġ% changed Ġor Ġ 0 b 0 0 0 1 , Ġ% default ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Trace InProgress ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Event End () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ċ } Ċ Ċ class ĠFunction Body Skipping Transform Tests No Source Ġ: ĠFunction Body Skipping Trans f om r Tests Base () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġsource Information Enabled : ĠBoolean Ġget () Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Group less Property (): ĠUnit Ġ= Ġcomparison Propagation ( ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġandroidx . compose . runtime . current Composer ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinline Ġval Ġcurrent : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable Ġget () Ġ= Ġcurrent Composer . hashCode () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget HashCode (): ĠInt Ġ= Ġcurrent Composer . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget HashCode (): ĠInt Ġ= Ġcurrent Composer . hashCode () ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ St ability In ferred ( parameters Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Ġclass ĠFoo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable Ġ@ ReadOnly Composable Ġ@ Jvm Name ( name Ġ= Ġ" getCurrent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= Ġ% composer . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget HashCode (% composer : ĠComposer ?, Ġ% changed : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= Ġ% composer . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Ġval Ġ% stable : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ ReadOnly Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Composable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġget HashCode (% composer : ĠComposer ?, Ġ% changed : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtmp 0 Ġ= Ġ% composer . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtmp 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ċ } Ċ