package Ġcom . a all am . permissions flow . helper Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . testing . Fragment Scenario Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . coroutines . suspend C ancellable Coroutine Ċ Ċ /** Ċ Ġ* ĠHelper Ġclass Ġto Ġallow Ġstarting ĠF rag ments , Ġsimilar Ġto Ġthe Ġold ĠSupport Fragment Controller . Ċ Ġ*/ Ċ class ĠFragment Controller < T Ġ: ĠFragment ? >( clazz : ĠClass < T >) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġscenario : ĠFragment Scenario < T > Ġ= ĠFragment Scenario . launch ( clazz ) ĊĊĠĠĠ Ġfun Ġresume (): ĠT Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġfragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Opt In ( Experimental Cor outines Api :: class ) ĊĠĠĠ Ġsuspend Ġfun Ġfragment (): ĠT Ġ= Ġsuspend C ancellable Coroutine Ġ{ Ġcont Ġ-> ĊĠĠĠĠĠĠĠ Ġscenario . on Fragment Ġ{ Ġfragment Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcont . resume ( fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Fragment Controller ", Ġ" Error Ġon Ġfragment Ġcreation : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġscenario . re create () ĊĠĠĠ Ġ} Ċ }