package Ġdev . ols he v ski . navigation . re imag ined . sample . ui Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġdagger . ass isted . Ass isted Ċ import Ġdagger . ass isted . Ass isted Factory Ċ import Ġdagger . ass isted . Ass isted Inject Ċ import Ġdev . ols he v ski . navigation . re imag ined . sample . repo . Demo Repository Ċ import Ġjavax . inject . Inject Ċ Ċ open Ġclass ĠLogging ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel ClassName Ġ= Ġthis :: class . simple Name !! ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( viewModel ClassName , Ġ" init ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( viewModel ClassName , Ġ" cleared ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠFirst ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġdemo Repository : ĠDemo Repository Ċ ) Ġ: ĠLogging ViewModel () Ċ Ċ class ĠSecond ViewModel Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠ Ġ@ Ass isted Ġval Ġid : ĠInt , ĊĠĠĠ Ġval Ġdemo Repository : ĠDemo Repository Ċ ) Ġ: ĠLogging ViewModel () Ġ{ ĊĊĠĠĠ Ġ@ Ass isted Factory ĊĠĠĠ Ġinterface ĠFactory Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( id : ĠInt ): ĠSecond ViewModel ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠThird ViewModel Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠ Ġ@ Ass isted Ġval Ġtext : ĠString , ĊĠĠĠ Ġ@ Ass isted Ġval Ġsaved State Handle : ĠSaved State Handle , ĊĠĠĠ Ġval Ġdemo Repository : ĠDemo Repository Ċ ) Ġ: ĠLogging ViewModel () Ġ{ ĊĊĠĠĠ Ġ@ Ass isted Factory ĊĠĠĠ Ġinterface ĠFactory Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( text : ĠString , Ġsaved State Handle : ĠSaved State Handle ): ĠThird ViewModel ĊĊĠĠĠ Ġ} Ċ Ċ }