Use case 1: Form typedef User = struct( String* email, String* password, ); typedef Form[User] = Use case 2: Custom control // editable data, with "instant-apply" namespace DateEditor = ( typedef = struct( InstantEditableData[Date] base, ) (DateEditor* this) new(Date* date) { this = alloc(DateEditor); this.init(date); } (DateEditor* this) init(DateEditor* this, Date* date) { this.base.init(); this.date = date; } (DateEditor*? this) new(DateEditor*? target, Date* date) { this = (target != null ? this : alloc(DateEditor)); this.base.init(this); this.date = date; } ) Use case 2: