/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠSquare ĠInc . Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . squareup . workflow 1 . ui Ċ Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠA Ġ[ View Registry ] Ġthat Ġcontains Ġa Ġset Ġof Ġ[ View Factory ] s , Ġkey ed Ġby Ġthe Ġ[ K Class ] es Ġof Ġthe Ċ Ġ* Ġrendering Ġtypes . Ċ Ġ*/ Ċ @ Workflow Ui Experimental Api Ċ internal Ġclass ĠTyped View Registry Ġprivate Ġconstructor ( ĊĠ Ġprivate Ġval Ġbindings : ĠMap < K Class <* >, ĠView Factory <* >> Ċ ) Ġ: ĠView Registry Ġ{ ĊĊĠ Ġconstructor ( var arg Ġbindings : ĠView Factory <* >) Ġ: Ġthis ( ĊĠĠĠĠĠ Ġbindings . map Ġ{ Ġit . type Ġto Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ. toMap () ĊĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck ( keys . size Ġ== Ġbindings . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ bindings . map Ġ{ Ġit . type Ġ}} Ġmust Ġnot Ġhave Ġduplicate Ġentries ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġas ĠMap < K Class <* >, ĠView Factory <* >> ĊĠ Ġ) ĊĊĠ Ġoverride Ġval Ġkeys : ĠSet < K Class <* >> Ġget () Ġ= Ġbindings . keys ĊĊĠ Ġoverride Ġfun Ġ< Rendering T Ġ: ĠAny > Ġget Factory For ( ĊĠĠĠ Ġrendering Type : ĠK Class < out ĠRendering T > ĊĠ Ġ): ĠView Factory < Rendering T > Ġ{ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġreturn Ġrequire NotNull ( bindings [ rendering Type ] Ġas ? ĠView Factory < Rendering T >) Ġ{ ĊĠĠĠĠĠ Ġ" A Ġ${ View Factory :: class . java . name } Ġshould Ġhave Ġbeen Ġregistered Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġ" to Ġdisplay Ġa Ġ$ rendering Type ." ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ