# Reflect.5. Choosing a view — Mercury LMS > Contract: `@fiberfx/reflect` 4.1.1; Hypergraph and Hyperscript 4.1.1. ## Contract String form: variant({source, cases, default?}); boolean form: variant({if, then, else?}). Both accept bind/mapProps/hooks. Missing case or false-without-else renders fallback or null. Only own case names resolve; constructor is not inherited as a view. ## Lifetime The reflected wrapper owns variant hooks. Changing the selected case does not rerun those hooks, although the selected child may be replaced. Case-specific work belongs to the case component's lifetime. ## Exercise and boundary [Variant lab](/examples/reflect-lab/index.html?part=variants&lang=en): ready → empty → error → constructor fallback; reset. Unknown fallback is supported selection behavior, not a runtime validation exception or proof of an actual request/retry. ## Source variant.ts:10-61; variant.test.ts:52-76; collections.test.ts:77-80. npm 4.1.1. ## Navigation - [HTML](/reflect/variants) - [Reflect](/reflect/llms.txt) - [Index](/llms.txt) - [Sitemap](/sitemap.xml) - [All English companions](/llms-full.txt)