{"version":3,"sources":["../src/index.ts","../src/checker.ts","../src/meta.ts","../src/gen/schema.ts","../src/compiler/jskw.ts","../src/error.ts","../src/reader.ts","../src/compiler.ts","../src/compiler/context.ts","../src/compiler/block.ts","../src/compiler/type.ts","../src/compiler/rendertype.ts","../src/compiler/gentype.ts","../src/compiler/genconverter.ts","../src/compiler/genctor.ts","../src/compiler/genunconverter.ts","../src/compiler/value.ts","../src/interpreter.ts","../src/host.ts","../src/gen/host.ts"],"sourcesContent":["export * from './checker.js';\nexport * from './error.js';\nexport * from './reader.js';\nexport * from './compiler.js';\nexport * from './reflection.js';\n\nexport { SchemaInterpreter } from './interpreter.js';\nexport * as Interpreter from './interpreter.js';\n\nexport * as Host from './host.js';\nexport * as Meta from './meta.js';\nexport * as Type from './compiler/type.js';\nexport * as GenType from './compiler/gentype.js';\n","import { JsDictionary, stringify } from '@preserves/core';\nimport * as M from './meta.js';\n\nexport function checkSchema(schema: M.Schema): (\n    { ok: true, schema: M.Schema } | { ok: false, problems: Array<string> })\n{\n    const checker = new Checker();\n    JsDictionary.forEach(schema.definitions, checker.checkDefinition.bind(checker));\n    if (checker.problems.length > 0) {\n        return { ok: false, problems: checker.problems };\n    } else {\n        return { ok: true, schema };\n    }\n}\n\nenum ValueAvailability {\n    AVAILABLE,\n    NOT_AVAILABLE,\n};\n\nclass Checker {\n    problems: Array<string> = [];\n\n    recordProblem(context: string, detail: string): void {\n        this.problems.push(`${detail} in ${context}`);\n    }\n\n    checkBinding(scope: Set<string>, sym: symbol, context: string): void {\n        const name = sym.description!;\n        if (scope.has(name)) {\n            this.recordProblem(context, `duplicate binding named ${JSON.stringify(name)}`);\n        }\n        if (!M.isValidToken(name)) {\n            this.recordProblem(context, `invalid binding name ${JSON.stringify(name)}`);\n        }\n        scope.add(name);\n    }\n\n    checkDefinition(def: M.Definition, name: symbol): void {\n        switch (def._variant) {\n            case 'or': {\n                const labels = new Set<string>();\n                [def.pattern0, def.pattern1, ... def.patternN].forEach(({ variantLabel, pattern }) => {\n                    const context = `variant ${variantLabel} of ${name.description!}`;\n                    if (labels.has(variantLabel)) {\n                        this.recordProblem(context, `duplicate variant label`);\n                    }\n                    if (!M.isValidToken(variantLabel)) {\n                        this.recordProblem(context, `invalid variant label`);\n                    }\n                    labels.add(variantLabel);\n                    this.checkPattern(new Set(), pattern, context, ValueAvailability.AVAILABLE);\n                });\n                break;\n            }\n            case 'and': {\n                const ps = [def.pattern0, def.pattern1, ... def.patternN];\n                const scope = new Set<string>();\n                ps.forEach((p) => this.checkNamedPattern(scope, p, name.description!));\n                break;\n            }\n            case 'Pattern':\n                this.checkPattern(\n                    new Set(), def.value, name.description!, ValueAvailability.AVAILABLE);\n                break;\n        }\n    }\n\n    checkNamedPattern(scope: Set<string>, p: M.NamedPattern, context: string): void\n    {\n        switch (p._variant) {\n            case 'named': {\n                this.checkBinding(scope, p.value.name, context);\n                this.checkPattern(scope,\n                                  M.Pattern.SimplePattern(p.value.pattern),\n                                  `${JSON.stringify(p.value.name.description!)} of ${context}`,\n                                  ValueAvailability.AVAILABLE);\n                break;\n            }\n            case 'anonymous':\n                this.checkPattern(scope, p.value, context, ValueAvailability.NOT_AVAILABLE);\n                break;\n        }\n    }\n\n    checkPattern(scope: Set<string>,\n                 p: M.Pattern,\n                 context: string,\n                 availability: ValueAvailability): void\n    {\n        switch (p._variant) {\n            case 'SimplePattern':\n                if (p.value._variant !== 'lit' && availability === ValueAvailability.NOT_AVAILABLE) {\n                    this.recordProblem(context, 'cannot recover serialization of non-literal pattern');\n                }\n                if (p.value._variant === 'Ref' &&\n                    !(M.isValidToken(p.value.value.name.description!) &&\n                        p.value.value.module.every(n => M.isValidToken(n.description!))))\n                {\n                    this.recordProblem(context, 'invalid reference name');\n                }\n                break;\n            case 'CompoundPattern':\n                ((p: M.CompoundPattern): void => {\n                    switch (p._variant) {\n                        case 'rec':\n                            this.checkNamedPattern(scope, p.label, `label of ${context}`);\n                            this.checkNamedPattern(scope, p.fields, `fields of ${context}`);\n                            break;\n                        case 'tuple':\n                            p.patterns.forEach((pp, i) =>\n                                this.checkNamedPattern(scope, pp, `item ${i} of ${context}`));\n                            break;\n                        case 'tuplePrefix':\n                            p.fixed.forEach((pp, i) =>\n                                this.checkNamedPattern(scope, pp, `item ${i} of ${context}`));\n                            this.checkNamedPattern(\n                                scope, M.promoteNamedSimplePattern(p.variable), `tail of ${context}`);\n                            break;\n                        case 'dict':\n                            p.entries.forEach((np, key) =>\n                                this.checkNamedPattern(\n                                    scope,\n                                    M.promoteNamedSimplePattern(np),\n                                    `entry ${stringify(key)} in dictionary in ${context}`));\n                            break;\n                    }\n                })(p.value);\n        }\n    }\n}\n","import { Embeddable, GenericEmbedded, is, Value } from '@preserves/core';\nimport * as M from './gen/schema.js';\nimport { isJsKeyword } from './compiler/jskw.js';\n\nexport * from './gen/schema.js';\nexport type * from './gen/schema.js';\n\nexport type Input = Value;\nexport type InputEmbedded = GenericEmbedded;\n\nexport function qidLast(s: string): string {\n    const m = s.match(/^(.*\\.)?([^.]+)$/);\n    return m![2];\n}\n\nexport function isValidToken(s: string): boolean {\n    return /^[a-zA-Z][a-zA-Z_0-9]*$/.test(s);\n}\n\nexport function isValidQid(s: string): boolean {\n    return s.split('.').every(isValidToken);\n}\n\nexport function isValidJsId(s: string): boolean {\n    return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(s) && !isJsKeyword(s);\n}\n\nexport function jsId(v: string, kf?: () => string): string {\n    return jsToken(v.replace('$', '$$'), kf);\n}\n\nexport function jsToken(s: string, kf?: () => string): string {\n    if (isValidJsId(s)) return s;\n    if (isValidJsId('$' + s)) return '$' + s;\n    if (kf !== void 0) return kf();\n    throw new Error(`Internal error: jsToken needs to be completed (${s})`);\n}\n\nexport const ANDSYM = Symbol.for('&');\nexport const DOT = Symbol.for('.');\nexport const DOTDOTDOT = Symbol.for('...');\nexport const EQUALS = Symbol.for('=');\nexport const INCLUDE = Symbol.for('include');\nexport const ORSYM = Symbol.for('/');\n\nexport type SchemaEnvEntry = {\n    schemaModulePath: M.ModulePath,\n    typescriptModulePath: string,\n    typescriptModuleExpr: string | null,\n    schema: M.Schema | null, // null means it's an artificial one, not corresponding to an input\n};\n\nexport type Environment = Array<SchemaEnvEntry>;\n\nexport function envLookup(env: Environment, soughtModule: M.ModulePath): SchemaEnvEntry | null {\n    for (const e of env) {\n        if (is(e.schemaModulePath, soughtModule)) {\n            return e;\n        }\n    }\n    return null;\n}\n\nexport function modsymFor(e: SchemaEnvEntry): string {\n    return '_i_' + e.schemaModulePath.map(s => s.description!).join('$');\n}\n\nexport function formatModulePath(p: M.ModulePath): string {\n    return p.map(s => s.description!).join('.');\n}\n\nexport function formatRef(r: M.Ref): string {\n    return [... r.module, r.name].map(s => s.description!).join('.');\n}\n\nexport function unnamePattern(p: M.NamedPattern): M.Pattern {\n    return (p._variant === 'named') ? M.Pattern.SimplePattern(p.value.pattern) : p.value;\n}\n\nexport function unnameSimplePattern(p: M.NamedSimplePattern): M.SimplePattern {\n    return (p._variant === 'named') ? p.value.pattern : p.value;\n}\n\nexport function promoteNamedSimplePattern(p: M.NamedSimplePattern): M.NamedPattern {\n    return (p._variant === 'named') ? p : M.NamedPattern.anonymous(M.Pattern.SimplePattern(p.value));\n}\n\nexport function nameFor(p: M.NamedSimplePattern | M.NamedPattern) : string | undefined {\n    return (p._variant === 'named') ? p.value.name.description! : void 0;\n}\n\nexport function anonymousSimplePattern(p: M.SimplePattern): M.NamedPattern {\n    return M.NamedPattern.anonymous(M.Pattern.SimplePattern(p));\n}\n\nexport function namelike(x: Input): string | undefined {\n    if (typeof x === 'string') return x;\n    if (typeof x === 'symbol') return x.description!;\n    if (typeof x === 'boolean') return x ? 'true' : 'false';\n    return void 0;\n}\n\nexport function isSymbolPattern<T extends Embeddable>(p: M.SimplePattern<T>): boolean {\n    return p._variant === 'atom'\n        && p.atomKind._variant === 'Symbol';\n}\n","import * as _ from \"@preserves/core\";\n\nexport const $1 = 1;\nexport const $Boolean = _.Symbol.for(\"Boolean\");\nexport const $ByteString = _.Symbol.for(\"ByteString\");\nexport const $Double = _.Symbol.for(\"Double\");\nexport const $SignedInteger = _.Symbol.for(\"SignedInteger\");\nexport const $String = _.Symbol.for(\"String\");\nexport const $Symbol = _.Symbol.for(\"Symbol\");\nexport const $and = _.Symbol.for(\"and\");\nexport const $any = _.Symbol.for(\"any\");\nexport const $atom = _.Symbol.for(\"atom\");\nexport const $bundle = _.Symbol.for(\"bundle\");\nexport const $definitions = _.Symbol.for(\"definitions\");\nexport const $dict = _.Symbol.for(\"dict\");\nexport const $dictof = _.Symbol.for(\"dictof\");\nexport const $embedded = _.Symbol.for(\"embedded\");\nexport const $embeddedType = _.Symbol.for(\"embeddedType\");\nexport const $lit = _.Symbol.for(\"lit\");\nexport const $named = _.Symbol.for(\"named\");\nexport const $or = _.Symbol.for(\"or\");\nexport const $rec = _.Symbol.for(\"rec\");\nexport const $ref = _.Symbol.for(\"ref\");\nexport const $schema = _.Symbol.for(\"schema\");\nexport const $seqof = _.Symbol.for(\"seqof\");\nexport const $setof = _.Symbol.for(\"setof\");\nexport const $tuple = _.Symbol.for(\"tuple\");\nexport const $tuplePrefix = _.Symbol.for(\"tuplePrefix\");\nexport const $version = _.Symbol.for(\"version\");\nexport const __lit6 = false;\n\nlet __schema: _.Value | null = null;\n\nexport function _schema() {\n    if (__schema === null) {\n        __schema = _.decode<_.GenericEmbedded>(_.Bytes.fromHex(\"b4b306736368656d61b7b30776657273696f6eb00101b30b646566696e6974696f6e73b7b303526566b4b303726563b4b3036c6974b30372656684b4b3057475706c65b5b4b3056e616d6564b3066d6f64756c65b4b303726566b584b30a4d6f64756c65506174688484b4b3056e616d6564b3046e616d65b4b30461746f6db30653796d626f6c8484848484b30642756e646c65b4b303726563b4b3036c6974b30662756e646c6584b4b3057475706c65b5b4b3056e616d6564b3076d6f64756c6573b4b303726566b584b3074d6f64756c65738484848484b306536368656d61b4b303726563b4b3036c6974b306736368656d6184b4b3057475706c65b5b4b30464696374b7b30776657273696f6eb4b3056e616d6564b30776657273696f6eb4b303726566b584b30756657273696f6e8484b30b646566696e6974696f6e73b4b3056e616d6564b30b646566696e6974696f6e73b4b303726566b584b30b446566696e6974696f6e738484b30c656d62656464656454797065b4b3056e616d6564b30c656d62656464656454797065b4b303726566b584b310456d626564646564547970654e616d6584848484848484b30742696e64696e67b4b303726563b4b3036c6974b3056e616d656484b4b3057475706c65b5b4b3056e616d6564b3046e616d65b4b30461746f6db30653796d626f6c8484b4b3056e616d6564b3077061747465726eb4b303726566b584b30d53696d706c655061747465726e8484848484b3074d6f64756c6573b4b306646963746f66b4b303726566b584b30a4d6f64756c655061746884b4b303726566b584b306536368656d618484b3075061747465726eb4b3026f72b5b5b10d53696d706c655061747465726eb4b303726566b584b30d53696d706c655061747465726e8484b5b10f436f6d706f756e645061747465726eb4b303726566b584b30f436f6d706f756e645061747465726e84848484b30756657273696f6eb4b3036c6974b0010184b30841746f6d4b696e64b4b3026f72b5b5b107426f6f6c65616eb4b3036c6974b307426f6f6c65616e8484b5b106446f75626c65b4b3036c6974b306446f75626c658484b5b10d5369676e6564496e7465676572b4b3036c6974b30d5369676e6564496e74656765728484b5b106537472696e67b4b3036c6974b306537472696e678484b5b10a42797465537472696e67b4b3036c6974b30a42797465537472696e678484b5b10653796d626f6cb4b3036c6974b30653796d626f6c84848484b30a446566696e6974696f6eb4b3026f72b5b5b1026f72b4b303726563b4b3036c6974b3026f7284b4b3057475706c65b5b4b30b7475706c65507265666978b5b4b3056e616d6564b3087061747465726e30b4b303726566b584b3104e616d6564416c7465726e61746976658484b4b3056e616d6564b3087061747465726e31b4b303726566b584b3104e616d6564416c7465726e6174697665848484b4b3056e616d6564b3087061747465726e4eb4b3057365716f66b4b303726566b584b3104e616d6564416c7465726e61746976658484848484848484b5b103616e64b4b303726563b4b3036c6974b303616e6484b4b3057475706c65b5b4b30b7475706c65507265666978b5b4b3056e616d6564b3087061747465726e30b4b303726566b584b30c4e616d65645061747465726e8484b4b3056e616d6564b3087061747465726e31b4b303726566b584b30c4e616d65645061747465726e848484b4b3056e616d6564b3087061747465726e4eb4b3057365716f66b4b303726566b584b30c4e616d65645061747465726e8484848484848484b5b1075061747465726eb4b303726566b584b3075061747465726e84848484b30a4d6f64756c6550617468b4b3057365716f66b4b30461746f6db30653796d626f6c8484b30b446566696e6974696f6e73b4b306646963746f66b4b30461746f6db30653796d626f6c84b4b303726566b584b30a446566696e6974696f6e8484b30c4e616d65645061747465726eb4b3026f72b5b5b1056e616d6564b4b303726566b584b30742696e64696e678484b5b109616e6f6e796d6f7573b4b303726566b584b3075061747465726e84848484b30d53696d706c655061747465726eb4b3026f72b5b5b103616e79b4b3036c6974b303616e798484b5b10461746f6db4b303726563b4b3036c6974b30461746f6d84b4b3057475706c65b5b4b3056e616d6564b30861746f6d4b696e64b4b303726566b584b30841746f6d4b696e64848484848484b5b108656d626564646564b4b303726563b4b3036c6974b308656d62656464656484b4b3057475706c65b5b4b3056e616d6564b309696e74657266616365b4b303726566b584b30d53696d706c655061747465726e848484848484b5b1036c6974b4b303726563b4b3036c6974b3036c697484b4b3057475706c65b5b4b3056e616d6564b30576616c7565b303616e798484848484b5b1057365716f66b4b303726563b4b3036c6974b3057365716f6684b4b3057475706c65b5b4b3056e616d6564b3077061747465726eb4b303726566b584b30d53696d706c655061747465726e848484848484b5b1057365746f66b4b303726563b4b3036c6974b3057365746f6684b4b3057475706c65b5b4b3056e616d6564b3077061747465726eb4b303726566b584b30d53696d706c655061747465726e848484848484b5b106646963746f66b4b303726563b4b3036c6974b306646963746f6684b4b3057475706c65b5b4b3056e616d6564b3036b6579b4b303726566b584b30d53696d706c655061747465726e8484b4b3056e616d6564b30576616c7565b4b303726566b584b30d53696d706c655061747465726e848484848484b5b103526566b4b303726566b584b30352656684848484b30f436f6d706f756e645061747465726eb4b3026f72b5b5b103726563b4b303726563b4b3036c6974b30372656384b4b3057475706c65b5b4b3056e616d6564b3056c6162656cb4b303726566b584b30c4e616d65645061747465726e8484b4b3056e616d6564b3066669656c6473b4b303726566b584b30c4e616d65645061747465726e848484848484b5b1057475706c65b4b303726563b4b3036c6974b3057475706c6584b4b3057475706c65b5b4b3056e616d6564b3087061747465726e73b4b3057365716f66b4b303726566b584b30c4e616d65645061747465726e84848484848484b5b10b7475706c65507265666978b4b303726563b4b3036c6974b30b7475706c6550726566697884b4b3057475706c65b5b4b3056e616d6564b3056669786564b4b3057365716f66b4b303726566b584b30c4e616d65645061747465726e848484b4b3056e616d6564b3087661726961626c65b4b303726566b584b3124e616d656453696d706c655061747465726e848484848484b5b10464696374b4b303726563b4b3036c6974b3046469637484b4b3057475706c65b5b4b3056e616d6564b307656e7472696573b4b303726566b584b31144696374696f6e617279456e74726965738484848484848484b310456d626564646564547970654e616d65b4b3026f72b5b5b10566616c7365b4b3036c6974808484b5b103526566b4b303726566b584b30352656684848484b3104e616d6564416c7465726e6174697665b4b3057475706c65b5b4b3056e616d6564b30c76617269616e744c6162656cb4b30461746f6db306537472696e678484b4b3056e616d6564b3077061747465726eb4b303726566b584b3075061747465726e84848484b31144696374696f6e617279456e7472696573b4b306646963746f66b303616e79b4b303726566b584b3124e616d656453696d706c655061747465726e8484b3124e616d656453696d706c655061747465726eb4b3026f72b5b5b1056e616d6564b4b303726566b584b30742696e64696e678484b5b109616e6f6e796d6f7573b4b303726566b584b30d53696d706c655061747465726e8484848484b30c656d62656464656454797065808484\"));\n    };\n    return __schema;\n}\n\nexport const _imports = {}\n\n\nexport type Bundle<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    {\"modules\": Modules<_embedded>} &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type Modules<_embedded extends _.Embeddable = _.GenericEmbedded> = _.EncodableDictionary<_embedded, ModulePath, Schema<_embedded>>;\n\nexport type Schema<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    {\n        \"version\": Version,\n        \"embeddedType\": EmbeddedTypeName,\n        \"definitions\": Definitions<_embedded>\n    } &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type Version = (\n    {} &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\nexport type EmbeddedTypeName = (\n    ({\"_variant\": \"false\"} | {\"_variant\": \"Ref\", \"value\": Ref}) &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\nexport type Definitions<_embedded extends _.Embeddable = _.GenericEmbedded> = _.JsDictionary<Definition<_embedded>>;\n\nexport type Definition<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    (\n        {\n            \"_variant\": \"or\",\n            \"pattern0\": NamedAlternative<_embedded>,\n            \"pattern1\": NamedAlternative<_embedded>,\n            \"patternN\": Array<NamedAlternative<_embedded>>\n        } |\n        {\n            \"_variant\": \"and\",\n            \"pattern0\": NamedPattern<_embedded>,\n            \"pattern1\": NamedPattern<_embedded>,\n            \"patternN\": Array<NamedPattern<_embedded>>\n        } |\n        {\"_variant\": \"Pattern\", \"value\": Pattern<_embedded>}\n    ) &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type Pattern<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    (\n        {\"_variant\": \"SimplePattern\", \"value\": SimplePattern<_embedded>} |\n        {\"_variant\": \"CompoundPattern\", \"value\": CompoundPattern<_embedded>}\n    ) &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type SimplePattern<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    (\n        {\"_variant\": \"any\"} |\n        {\"_variant\": \"atom\", \"atomKind\": AtomKind} |\n        {\"_variant\": \"embedded\", \"interface\": SimplePattern<_embedded>} |\n        {\"_variant\": \"lit\", \"value\": _.Value<_embedded>} |\n        {\"_variant\": \"seqof\", \"pattern\": SimplePattern<_embedded>} |\n        {\"_variant\": \"setof\", \"pattern\": SimplePattern<_embedded>} |\n        {\n            \"_variant\": \"dictof\",\n            \"key\": SimplePattern<_embedded>,\n            \"value\": SimplePattern<_embedded>\n        } |\n        {\"_variant\": \"Ref\", \"value\": Ref}\n    ) &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type CompoundPattern<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    (\n        {\n            \"_variant\": \"rec\",\n            \"label\": NamedPattern<_embedded>,\n            \"fields\": NamedPattern<_embedded>\n        } |\n        {\"_variant\": \"tuple\", \"patterns\": Array<NamedPattern<_embedded>>} |\n        {\n            \"_variant\": \"tuplePrefix\",\n            \"fixed\": Array<NamedPattern<_embedded>>,\n            \"variable\": NamedSimplePattern<_embedded>\n        } |\n        {\"_variant\": \"dict\", \"entries\": DictionaryEntries<_embedded>}\n    ) &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type DictionaryEntries<_embedded extends _.Embeddable = _.GenericEmbedded> = _.EncodableDictionary<_embedded, _.Value<_embedded>, NamedSimplePattern<_embedded>>;\n\nexport type AtomKind = (\n    (\n        {\"_variant\": \"Boolean\"} |\n        {\"_variant\": \"Double\"} |\n        {\"_variant\": \"SignedInteger\"} |\n        {\"_variant\": \"String\"} |\n        {\"_variant\": \"ByteString\"} |\n        {\"_variant\": \"Symbol\"}\n    ) &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\nexport type NamedAlternative<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    {\"variantLabel\": string, \"pattern\": Pattern<_embedded>} &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type NamedSimplePattern<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    (\n        {\"_variant\": \"named\", \"value\": Binding<_embedded>} |\n        {\"_variant\": \"anonymous\", \"value\": SimplePattern<_embedded>}\n    ) &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type NamedPattern<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    (\n        {\"_variant\": \"named\", \"value\": Binding<_embedded>} |\n        {\"_variant\": \"anonymous\", \"value\": Pattern<_embedded>}\n    ) &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type Binding<_embedded extends _.Embeddable = _.GenericEmbedded> = (\n    {\"name\": symbol, \"pattern\": SimplePattern<_embedded>} &\n    _.Preservable<_embedded> &\n    _.PreserveWritable<_embedded> &\n    {__as_preserve__(): _.Value<_embedded>}\n);\n\nexport type Ref = (\n    {\"module\": ModulePath, \"name\": symbol} &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\nexport type ModulePath = Array<symbol>;\n\n\nexport function Bundle<_embedded extends _.Embeddable = _.GenericEmbedded>(modules: Modules<_embedded>): Bundle<_embedded> {\n    return {\n        \"modules\": modules,\n        __as_preserve__() {return fromBundle(this);},\n        __preserve_on__(e) { e.push(fromBundle(this)); },\n        __preserve_text_on__(w) { w.push(fromBundle(this)); }\n    };\n}\n\nBundle.schema = function () {\n    return {schema: _schema(), imports: _imports, definitionName: _.Symbol.for(\"Bundle\")};\n}\n\nexport function Modules<_embedded extends _.Embeddable = _.GenericEmbedded>(value: _.EncodableDictionary<_embedded, ModulePath, Schema<_embedded>>): Modules<_embedded> {return value;}\n\nModules.schema = function () {\n    return {schema: _schema(), imports: _imports, definitionName: _.Symbol.for(\"Modules\")};\n}\n\nexport function Schema<_embedded extends _.Embeddable = _.GenericEmbedded>(\n    {version, embeddedType, definitions}: {\n        version: Version,\n        embeddedType: EmbeddedTypeName,\n        definitions: Definitions<_embedded>\n    }\n): Schema<_embedded> {\n    return {\n        \"version\": version,\n        \"embeddedType\": embeddedType,\n        \"definitions\": definitions,\n        __as_preserve__() {return fromSchema(this);},\n        __preserve_on__(e) { e.push(fromSchema(this)); },\n        __preserve_text_on__(w) { w.push(fromSchema(this)); }\n    };\n}\n\nSchema.schema = function () {\n    return {schema: _schema(), imports: _imports, definitionName: _.Symbol.for(\"Schema\")};\n}\n\nexport function Version(): Version {\n    return {\n        __as_preserve__() {return fromVersion(this);},\n        __preserve_on__(e) { e.push(fromVersion(this)); },\n        __preserve_text_on__(w) { w.push(fromVersion(this)); }\n    };\n}\n\nVersion.schema = function () {\n    return {schema: _schema(), imports: _imports, definitionName: _.Symbol.for(\"Version\")};\n}\n\nexport namespace EmbeddedTypeName {\n    export function $false(): EmbeddedTypeName {\n        return {\n            \"_variant\": \"false\",\n            __as_preserve__() {return fromEmbeddedTypeName(this);},\n            __preserve_on__(e) { e.push(fromEmbeddedTypeName(this)); },\n            __preserve_text_on__(w) { w.push(fromEmbeddedTypeName(this)); }\n        };\n    };\n    $false.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"EmbeddedTypeName\"),\n            variant: _.Symbol.for(\"false\")\n        };\n    };\n    export function Ref(value: Ref): EmbeddedTypeName {\n        return {\n            \"_variant\": \"Ref\",\n            \"value\": value,\n            __as_preserve__() {return fromEmbeddedTypeName(this);},\n            __preserve_on__(e) { e.push(fromEmbeddedTypeName(this)); },\n            __preserve_text_on__(w) { w.push(fromEmbeddedTypeName(this)); }\n        };\n    };\n    Ref.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"EmbeddedTypeName\"),\n            variant: _.Symbol.for(\"Ref\")\n        };\n    };\n}\n\nexport function Definitions<_embedded extends _.Embeddable = _.GenericEmbedded>(value: _.JsDictionary<Definition<_embedded>>): Definitions<_embedded> {return value;}\n\nDefinitions.schema = function () {\n    return {\n        schema: _schema(),\n        imports: _imports,\n        definitionName: _.Symbol.for(\"Definitions\")\n    };\n}\n\nexport namespace Definition {\n    export function or<_embedded extends _.Embeddable = _.GenericEmbedded>(\n        {pattern0, pattern1, patternN}: {\n            pattern0: NamedAlternative<_embedded>,\n            pattern1: NamedAlternative<_embedded>,\n            patternN: Array<NamedAlternative<_embedded>>\n        }\n    ): Definition<_embedded> {\n        return {\n            \"_variant\": \"or\",\n            \"pattern0\": pattern0,\n            \"pattern1\": pattern1,\n            \"patternN\": patternN,\n            __as_preserve__() {return fromDefinition(this);},\n            __preserve_on__(e) { e.push(fromDefinition(this)); },\n            __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n        };\n    };\n    or.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Definition\"),\n            variant: _.Symbol.for(\"or\")\n        };\n    };\n    export function and<_embedded extends _.Embeddable = _.GenericEmbedded>(\n        {pattern0, pattern1, patternN}: {\n            pattern0: NamedPattern<_embedded>,\n            pattern1: NamedPattern<_embedded>,\n            patternN: Array<NamedPattern<_embedded>>\n        }\n    ): Definition<_embedded> {\n        return {\n            \"_variant\": \"and\",\n            \"pattern0\": pattern0,\n            \"pattern1\": pattern1,\n            \"patternN\": patternN,\n            __as_preserve__() {return fromDefinition(this);},\n            __preserve_on__(e) { e.push(fromDefinition(this)); },\n            __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n        };\n    };\n    and.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Definition\"),\n            variant: _.Symbol.for(\"and\")\n        };\n    };\n    export function Pattern<_embedded extends _.Embeddable = _.GenericEmbedded>(value: Pattern<_embedded>): Definition<_embedded> {\n        return {\n            \"_variant\": \"Pattern\",\n            \"value\": value,\n            __as_preserve__() {return fromDefinition(this);},\n            __preserve_on__(e) { e.push(fromDefinition(this)); },\n            __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n        };\n    };\n    Pattern.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Definition\"),\n            variant: _.Symbol.for(\"Pattern\")\n        };\n    };\n}\n\nexport namespace Pattern {\n    export function SimplePattern<_embedded extends _.Embeddable = _.GenericEmbedded>(value: SimplePattern<_embedded>): Pattern<_embedded> {\n        return {\n            \"_variant\": \"SimplePattern\",\n            \"value\": value,\n            __as_preserve__() {return fromPattern(this);},\n            __preserve_on__(e) { e.push(fromPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromPattern(this)); }\n        };\n    };\n    SimplePattern.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Pattern\"),\n            variant: _.Symbol.for(\"SimplePattern\")\n        };\n    };\n    export function CompoundPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(value: CompoundPattern<_embedded>): Pattern<_embedded> {\n        return {\n            \"_variant\": \"CompoundPattern\",\n            \"value\": value,\n            __as_preserve__() {return fromPattern(this);},\n            __preserve_on__(e) { e.push(fromPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromPattern(this)); }\n        };\n    };\n    CompoundPattern.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Pattern\"),\n            variant: _.Symbol.for(\"CompoundPattern\")\n        };\n    };\n}\n\nexport namespace SimplePattern {\n    export function any<_embedded extends _.Embeddable = _.GenericEmbedded>(): SimplePattern<_embedded> {\n        return {\n            \"_variant\": \"any\",\n            __as_preserve__() {return fromSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n        };\n    };\n    any.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"SimplePattern\"),\n            variant: _.Symbol.for(\"any\")\n        };\n    };\n    export function atom<_embedded extends _.Embeddable = _.GenericEmbedded>(atomKind: AtomKind): SimplePattern<_embedded> {\n        return {\n            \"_variant\": \"atom\",\n            \"atomKind\": atomKind,\n            __as_preserve__() {return fromSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n        };\n    };\n    atom.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"SimplePattern\"),\n            variant: _.Symbol.for(\"atom\")\n        };\n    };\n    export function embedded<_embedded extends _.Embeddable = _.GenericEmbedded>($interface: SimplePattern<_embedded>): SimplePattern<_embedded> {\n        return {\n            \"_variant\": \"embedded\",\n            \"interface\": $interface,\n            __as_preserve__() {return fromSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n        };\n    };\n    embedded.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"SimplePattern\"),\n            variant: _.Symbol.for(\"embedded\")\n        };\n    };\n    export function lit<_embedded extends _.Embeddable = _.GenericEmbedded>(value: _.Value<_embedded>): SimplePattern<_embedded> {\n        return {\n            \"_variant\": \"lit\",\n            \"value\": value,\n            __as_preserve__() {return fromSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n        };\n    };\n    lit.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"SimplePattern\"),\n            variant: _.Symbol.for(\"lit\")\n        };\n    };\n    export function seqof<_embedded extends _.Embeddable = _.GenericEmbedded>(pattern: SimplePattern<_embedded>): SimplePattern<_embedded> {\n        return {\n            \"_variant\": \"seqof\",\n            \"pattern\": pattern,\n            __as_preserve__() {return fromSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n        };\n    };\n    seqof.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"SimplePattern\"),\n            variant: _.Symbol.for(\"seqof\")\n        };\n    };\n    export function setof<_embedded extends _.Embeddable = _.GenericEmbedded>(pattern: SimplePattern<_embedded>): SimplePattern<_embedded> {\n        return {\n            \"_variant\": \"setof\",\n            \"pattern\": pattern,\n            __as_preserve__() {return fromSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n        };\n    };\n    setof.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"SimplePattern\"),\n            variant: _.Symbol.for(\"setof\")\n        };\n    };\n    export function dictof<_embedded extends _.Embeddable = _.GenericEmbedded>({key, value}: {key: SimplePattern<_embedded>, value: SimplePattern<_embedded>}): SimplePattern<_embedded> {\n        return {\n            \"_variant\": \"dictof\",\n            \"key\": key,\n            \"value\": value,\n            __as_preserve__() {return fromSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n        };\n    };\n    dictof.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"SimplePattern\"),\n            variant: _.Symbol.for(\"dictof\")\n        };\n    };\n    export function Ref<_embedded extends _.Embeddable = _.GenericEmbedded>(value: Ref): SimplePattern<_embedded> {\n        return {\n            \"_variant\": \"Ref\",\n            \"value\": value,\n            __as_preserve__() {return fromSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n        };\n    };\n    Ref.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"SimplePattern\"),\n            variant: _.Symbol.for(\"Ref\")\n        };\n    };\n}\n\nexport namespace CompoundPattern {\n    export function rec<_embedded extends _.Embeddable = _.GenericEmbedded>(\n        {label, fields}: {label: NamedPattern<_embedded>, fields: NamedPattern<_embedded>}\n    ): CompoundPattern<_embedded> {\n        return {\n            \"_variant\": \"rec\",\n            \"label\": label,\n            \"fields\": fields,\n            __as_preserve__() {return fromCompoundPattern(this);},\n            __preserve_on__(e) { e.push(fromCompoundPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromCompoundPattern(this)); }\n        };\n    };\n    rec.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"CompoundPattern\"),\n            variant: _.Symbol.for(\"rec\")\n        };\n    };\n    export function tuple<_embedded extends _.Embeddable = _.GenericEmbedded>(patterns: Array<NamedPattern<_embedded>>): CompoundPattern<_embedded> {\n        return {\n            \"_variant\": \"tuple\",\n            \"patterns\": patterns,\n            __as_preserve__() {return fromCompoundPattern(this);},\n            __preserve_on__(e) { e.push(fromCompoundPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromCompoundPattern(this)); }\n        };\n    };\n    tuple.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"CompoundPattern\"),\n            variant: _.Symbol.for(\"tuple\")\n        };\n    };\n    export function tuplePrefix<_embedded extends _.Embeddable = _.GenericEmbedded>(\n        {fixed, variable}: {fixed: Array<NamedPattern<_embedded>>, variable: NamedSimplePattern<_embedded>}\n    ): CompoundPattern<_embedded> {\n        return {\n            \"_variant\": \"tuplePrefix\",\n            \"fixed\": fixed,\n            \"variable\": variable,\n            __as_preserve__() {return fromCompoundPattern(this);},\n            __preserve_on__(e) { e.push(fromCompoundPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromCompoundPattern(this)); }\n        };\n    };\n    tuplePrefix.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"CompoundPattern\"),\n            variant: _.Symbol.for(\"tuplePrefix\")\n        };\n    };\n    export function dict<_embedded extends _.Embeddable = _.GenericEmbedded>(entries: DictionaryEntries<_embedded>): CompoundPattern<_embedded> {\n        return {\n            \"_variant\": \"dict\",\n            \"entries\": entries,\n            __as_preserve__() {return fromCompoundPattern(this);},\n            __preserve_on__(e) { e.push(fromCompoundPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromCompoundPattern(this)); }\n        };\n    };\n    dict.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"CompoundPattern\"),\n            variant: _.Symbol.for(\"dict\")\n        };\n    };\n}\n\nexport function DictionaryEntries<_embedded extends _.Embeddable = _.GenericEmbedded>(\n    value: _.EncodableDictionary<_embedded, _.Value<_embedded>, NamedSimplePattern<_embedded>>\n): DictionaryEntries<_embedded> {return value;}\n\nDictionaryEntries.schema = function () {\n    return {\n        schema: _schema(),\n        imports: _imports,\n        definitionName: _.Symbol.for(\"DictionaryEntries\")\n    };\n}\n\nexport namespace AtomKind {\n    export function Boolean(): AtomKind {\n        return {\n            \"_variant\": \"Boolean\",\n            __as_preserve__() {return fromAtomKind(this);},\n            __preserve_on__(e) { e.push(fromAtomKind(this)); },\n            __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n        };\n    };\n    Boolean.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"AtomKind\"),\n            variant: _.Symbol.for(\"Boolean\")\n        };\n    };\n    export function Double(): AtomKind {\n        return {\n            \"_variant\": \"Double\",\n            __as_preserve__() {return fromAtomKind(this);},\n            __preserve_on__(e) { e.push(fromAtomKind(this)); },\n            __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n        };\n    };\n    Double.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"AtomKind\"),\n            variant: _.Symbol.for(\"Double\")\n        };\n    };\n    export function SignedInteger(): AtomKind {\n        return {\n            \"_variant\": \"SignedInteger\",\n            __as_preserve__() {return fromAtomKind(this);},\n            __preserve_on__(e) { e.push(fromAtomKind(this)); },\n            __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n        };\n    };\n    SignedInteger.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"AtomKind\"),\n            variant: _.Symbol.for(\"SignedInteger\")\n        };\n    };\n    export function String(): AtomKind {\n        return {\n            \"_variant\": \"String\",\n            __as_preserve__() {return fromAtomKind(this);},\n            __preserve_on__(e) { e.push(fromAtomKind(this)); },\n            __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n        };\n    };\n    String.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"AtomKind\"),\n            variant: _.Symbol.for(\"String\")\n        };\n    };\n    export function ByteString(): AtomKind {\n        return {\n            \"_variant\": \"ByteString\",\n            __as_preserve__() {return fromAtomKind(this);},\n            __preserve_on__(e) { e.push(fromAtomKind(this)); },\n            __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n        };\n    };\n    ByteString.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"AtomKind\"),\n            variant: _.Symbol.for(\"ByteString\")\n        };\n    };\n    export function Symbol(): AtomKind {\n        return {\n            \"_variant\": \"Symbol\",\n            __as_preserve__() {return fromAtomKind(this);},\n            __preserve_on__(e) { e.push(fromAtomKind(this)); },\n            __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n        };\n    };\n    Symbol.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"AtomKind\"),\n            variant: _.Symbol.for(\"Symbol\")\n        };\n    };\n}\n\nexport function NamedAlternative<_embedded extends _.Embeddable = _.GenericEmbedded>({variantLabel, pattern}: {variantLabel: string, pattern: Pattern<_embedded>}): NamedAlternative<_embedded> {\n    return {\n        \"variantLabel\": variantLabel,\n        \"pattern\": pattern,\n        __as_preserve__() {return fromNamedAlternative(this);},\n        __preserve_on__(e) { e.push(fromNamedAlternative(this)); },\n        __preserve_text_on__(w) { w.push(fromNamedAlternative(this)); }\n    };\n}\n\nNamedAlternative.schema = function () {\n    return {\n        schema: _schema(),\n        imports: _imports,\n        definitionName: _.Symbol.for(\"NamedAlternative\")\n    };\n}\n\nexport namespace NamedSimplePattern {\n    export function named<_embedded extends _.Embeddable = _.GenericEmbedded>(value: Binding<_embedded>): NamedSimplePattern<_embedded> {\n        return {\n            \"_variant\": \"named\",\n            \"value\": value,\n            __as_preserve__() {return fromNamedSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromNamedSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromNamedSimplePattern(this)); }\n        };\n    };\n    named.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"NamedSimplePattern\"),\n            variant: _.Symbol.for(\"named\")\n        };\n    };\n    export function anonymous<_embedded extends _.Embeddable = _.GenericEmbedded>(value: SimplePattern<_embedded>): NamedSimplePattern<_embedded> {\n        return {\n            \"_variant\": \"anonymous\",\n            \"value\": value,\n            __as_preserve__() {return fromNamedSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromNamedSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromNamedSimplePattern(this)); }\n        };\n    };\n    anonymous.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"NamedSimplePattern\"),\n            variant: _.Symbol.for(\"anonymous\")\n        };\n    };\n}\n\nexport namespace NamedPattern {\n    export function named<_embedded extends _.Embeddable = _.GenericEmbedded>(value: Binding<_embedded>): NamedPattern<_embedded> {\n        return {\n            \"_variant\": \"named\",\n            \"value\": value,\n            __as_preserve__() {return fromNamedPattern(this);},\n            __preserve_on__(e) { e.push(fromNamedPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromNamedPattern(this)); }\n        };\n    };\n    named.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"NamedPattern\"),\n            variant: _.Symbol.for(\"named\")\n        };\n    };\n    export function anonymous<_embedded extends _.Embeddable = _.GenericEmbedded>(value: Pattern<_embedded>): NamedPattern<_embedded> {\n        return {\n            \"_variant\": \"anonymous\",\n            \"value\": value,\n            __as_preserve__() {return fromNamedPattern(this);},\n            __preserve_on__(e) { e.push(fromNamedPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromNamedPattern(this)); }\n        };\n    };\n    anonymous.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"NamedPattern\"),\n            variant: _.Symbol.for(\"anonymous\")\n        };\n    };\n}\n\nexport function Binding<_embedded extends _.Embeddable = _.GenericEmbedded>({name, pattern}: {name: symbol, pattern: SimplePattern<_embedded>}): Binding<_embedded> {\n    return {\n        \"name\": name,\n        \"pattern\": pattern,\n        __as_preserve__() {return fromBinding(this);},\n        __preserve_on__(e) { e.push(fromBinding(this)); },\n        __preserve_text_on__(w) { w.push(fromBinding(this)); }\n    };\n}\n\nBinding.schema = function () {\n    return {schema: _schema(), imports: _imports, definitionName: _.Symbol.for(\"Binding\")};\n}\n\nexport function Ref({module, name}: {module: ModulePath, name: symbol}): Ref {\n    return {\n        \"module\": module,\n        \"name\": name,\n        __as_preserve__() {return fromRef(this);},\n        __preserve_on__(e) { e.push(fromRef(this)); },\n        __preserve_text_on__(w) { w.push(fromRef(this)); }\n    };\n}\n\nRef.schema = function () {\n    return {schema: _schema(), imports: _imports, definitionName: _.Symbol.for(\"Ref\")};\n}\n\nexport function ModulePath(value: Array<symbol>): ModulePath {return value;}\n\nModulePath.schema = function () {\n    return {\n        schema: _schema(),\n        imports: _imports,\n        definitionName: _.Symbol.for(\"ModulePath\")\n    };\n}\n\nexport function asBundle<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Bundle<_embedded> {\n    let result = toBundle(v);\n    if (result === void 0) throw new TypeError(`Invalid Bundle: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toBundle<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Bundle<_embedded> {\n    let result: undefined | Bundle<_embedded>;\n    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n        let _tmp0: ({}) | undefined;\n        _tmp0 = _.is(v.label, $bundle) ? {} : void 0;\n        if (_tmp0 !== void 0) {\n            let _tmp1: (Modules<_embedded>) | undefined;\n            _tmp1 = toModules(v[0]);\n            if (_tmp1 !== void 0) {\n                result = {\n                    \"modules\": _tmp1,\n                    __as_preserve__() {return fromBundle(this);},\n                    __preserve_on__(e) { e.push(fromBundle(this)); },\n                    __preserve_text_on__(w) { w.push(fromBundle(this)); }\n                };\n            };\n        };\n    };\n    return result;\n}\n\nBundle.__from_preserve__ = toBundle;\n\nexport function fromBundle<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Bundle<_embedded>): _.Value<_embedded> {return _.Record($bundle, [fromModules<_embedded>(_v[\"modules\"])]);}\n\nexport function asModules<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Modules<_embedded> {\n    let result = toModules(v);\n    if (result === void 0) throw new TypeError(`Invalid Modules: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toModules<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Modules<_embedded> {\n    let _tmp0: (_.EncodableDictionary<_embedded, ModulePath, Schema<_embedded>>) | undefined;\n    let result: undefined | Modules<_embedded>;\n    _tmp0 = void 0;\n    if (_.Dictionary.isDictionary<_embedded>(v)) {\n        const _tmp1 = new _.DictionaryMap(v);\n        _tmp0 = new _.EncodableDictionary<_embedded, ModulePath, Schema<_embedded>>(fromModulePath, fromSchema<_embedded>);\n        for (const [_tmp2, _tmp3] of _tmp1) {\n            let _tmp4: (ModulePath) | undefined;\n            _tmp4 = toModulePath(_tmp2);\n            if (_tmp4 !== void 0) {\n                let _tmp5: (Schema<_embedded>) | undefined;\n                _tmp5 = toSchema(_tmp3);\n                if (_tmp5 !== void 0) {_tmp0.set(_tmp4, _tmp5); continue;};\n            };\n            _tmp0 = void 0;\n            break;\n        };\n    };\n    if (_tmp0 !== void 0) {result = _tmp0;};\n    return result;\n}\n\nModules.__from_preserve__ = toModules;\n\nexport function fromModules<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Modules<_embedded>): _.Value<_embedded> {\n    return _.Dictionary.from<_embedded>(\n        _.Array.from(_v.entries()).map(([k, v]) => [fromModulePath<_embedded>(k), fromSchema<_embedded>(v)])\n    );\n}\n\nexport function asSchema<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Schema<_embedded> {\n    let result = toSchema(v);\n    if (result === void 0) throw new TypeError(`Invalid Schema: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toSchema<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Schema<_embedded> {\n    let result: undefined | Schema<_embedded>;\n    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n        let _tmp0: ({}) | undefined;\n        _tmp0 = _.is(v.label, $schema) ? {} : void 0;\n        if (_tmp0 !== void 0) {\n            if (_.Dictionary.isDictionary<_embedded>(v[0])) {\n                let _tmp2: (_.Value<_embedded>) | undefined;\n                const _tmp1 = new _.DictionaryMap(v[0]);\n                if ((_tmp2 = _tmp1.get($version)) !== void 0) {\n                    let _tmp3: (Version) | undefined;\n                    _tmp3 = toVersion(_tmp2);\n                    if (_tmp3 !== void 0) {\n                        let _tmp4: (_.Value<_embedded>) | undefined;\n                        if ((_tmp4 = _tmp1.get($embeddedType)) !== void 0) {\n                            let _tmp5: (EmbeddedTypeName) | undefined;\n                            _tmp5 = toEmbeddedTypeName(_tmp4);\n                            if (_tmp5 !== void 0) {\n                                let _tmp6: (_.Value<_embedded>) | undefined;\n                                if ((_tmp6 = _tmp1.get($definitions)) !== void 0) {\n                                    let _tmp7: (Definitions<_embedded>) | undefined;\n                                    _tmp7 = toDefinitions(_tmp6);\n                                    if (_tmp7 !== void 0) {\n                                        result = {\n                                            \"version\": _tmp3,\n                                            \"embeddedType\": _tmp5,\n                                            \"definitions\": _tmp7,\n                                            __as_preserve__() {return fromSchema(this);},\n                                            __preserve_on__(e) { e.push(fromSchema(this)); },\n                                            __preserve_text_on__(w) { w.push(fromSchema(this)); }\n                                        };\n                                    };\n                                };\n                            };\n                        };\n                    };\n                };\n            };\n        };\n    };\n    return result;\n}\n\nSchema.__from_preserve__ = toSchema;\n\nexport function fromSchema<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Schema<_embedded>): _.Value<_embedded> {\n    return _.Record(\n        $schema,\n        [\n            _.Dictionary.from<_embedded>(\n                [\n                    [$version, fromVersion<_embedded>(_v[\"version\"])],\n                    [$embeddedType, fromEmbeddedTypeName<_embedded>(_v[\"embeddedType\"])],\n                    [$definitions, fromDefinitions<_embedded>(_v[\"definitions\"])]\n                ]\n            )\n        ]\n    );\n}\n\nexport function asVersion<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Version {\n    let result = toVersion(v);\n    if (result === void 0) throw new TypeError(`Invalid Version: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toVersion<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Version {\n    let _tmp0: ({}) | undefined;\n    let result: undefined | Version;\n    _tmp0 = _.is(v, $1) ? {} : void 0;\n    if (_tmp0 !== void 0) {\n        result = {\n            __as_preserve__() {return fromVersion(this);},\n            __preserve_on__(e) { e.push(fromVersion(this)); },\n            __preserve_text_on__(w) { w.push(fromVersion(this)); }\n        };\n    };\n    return result;\n}\n\nVersion.__from_preserve__ = toVersion;\n\nexport function fromVersion<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Version): _.Value<_embedded> {return $1;}\n\nexport function asEmbeddedTypeName<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): EmbeddedTypeName {\n    let result = toEmbeddedTypeName(v);\n    if (result === void 0) throw new TypeError(`Invalid EmbeddedTypeName: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toEmbeddedTypeName<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | EmbeddedTypeName {\n    let _tmp0: ({}) | undefined;\n    let result: undefined | EmbeddedTypeName;\n    _tmp0 = _.is(v, __lit6) ? {} : void 0;\n    if (_tmp0 !== void 0) {\n        result = {\n            \"_variant\": \"false\",\n            __as_preserve__() {return fromEmbeddedTypeName(this);},\n            __preserve_on__(e) { e.push(fromEmbeddedTypeName(this)); },\n            __preserve_text_on__(w) { w.push(fromEmbeddedTypeName(this)); }\n        };\n    };\n    if (result === void 0) {\n        let _tmp1: (Ref) | undefined;\n        _tmp1 = toRef(v);\n        if (_tmp1 !== void 0) {\n            result = {\n                \"_variant\": \"Ref\",\n                \"value\": _tmp1,\n                __as_preserve__() {return fromEmbeddedTypeName(this);},\n                __preserve_on__(e) { e.push(fromEmbeddedTypeName(this)); },\n                __preserve_text_on__(w) { w.push(fromEmbeddedTypeName(this)); }\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace EmbeddedTypeName {export const __from_preserve__ = toEmbeddedTypeName;}\n\nexport function fromEmbeddedTypeName<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: EmbeddedTypeName): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"false\": {return __lit6;};\n        case \"Ref\": {return fromRef<_embedded>(_v.value);};\n    };\n}\n\nexport function asDefinitions<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Definitions<_embedded> {\n    let result = toDefinitions(v);\n    if (result === void 0) throw new TypeError(`Invalid Definitions: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toDefinitions<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Definitions<_embedded> {\n    let _tmp0: (_.JsDictionary<Definition<_embedded>>) | undefined;\n    let result: undefined | Definitions<_embedded>;\n    _tmp0 = void 0;\n    if (_.Dictionary.isDictionary<_embedded>(v)) {\n        const _tmp1 = new _.DictionaryMap(v);\n        _tmp0 = {};\n        for (const [_tmp2, _tmp3] of _tmp1) {\n            let _tmp4: (symbol) | undefined;\n            _tmp4 = typeof _tmp2 === 'symbol' ? _tmp2 : void 0;\n            if (_tmp4 !== void 0) {\n                let _tmp5: (Definition<_embedded>) | undefined;\n                _tmp5 = toDefinition(_tmp3);\n                if (_tmp5 !== void 0) {_tmp0[_tmp4.description!] = _tmp5; continue;};\n            };\n            _tmp0 = void 0;\n            break;\n        };\n    };\n    if (_tmp0 !== void 0) {result = _tmp0;};\n    return result;\n}\n\nDefinitions.__from_preserve__ = toDefinitions;\n\nexport function fromDefinitions<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Definitions<_embedded>): _.Value<_embedded> {\n    return _.Dictionary.from<_embedded>(\n        _.Array.from(_.JsDictionary.entries(_v)).map(([k, v]) => [k, fromDefinition<_embedded>(v)])\n    );\n}\n\nexport function asDefinition<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Definition<_embedded> {\n    let result = toDefinition(v);\n    if (result === void 0) throw new TypeError(`Invalid Definition: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toDefinition<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Definition<_embedded> {\n    let result: undefined | Definition<_embedded>;\n    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n        let _tmp0: ({}) | undefined;\n        _tmp0 = _.is(v.label, $or) ? {} : void 0;\n        if (_tmp0 !== void 0) {\n            if (_.isSequence(v[0]) && v[0].length >= 2) {\n                let _tmp1: (NamedAlternative<_embedded>) | undefined;\n                _tmp1 = toNamedAlternative(v[0][0]);\n                if (_tmp1 !== void 0) {\n                    let _tmp2: (NamedAlternative<_embedded>) | undefined;\n                    _tmp2 = toNamedAlternative(v[0][1]);\n                    if (_tmp2 !== void 0) {\n                        let _tmp3: (Array<_.Value<_embedded>>) | undefined;\n                        let _tmp4: (Array<NamedAlternative<_embedded>>) | undefined;\n                        _tmp3 = v[0].slice(2);\n                        _tmp4 = [];\n                        for (const _tmp5 of _tmp3) {\n                            let _tmp6: (NamedAlternative<_embedded>) | undefined;\n                            _tmp6 = toNamedAlternative(_tmp5);\n                            if (_tmp6 !== void 0) {_tmp4.push(_tmp6); continue;};\n                            _tmp4 = void 0;\n                            break;\n                        };\n                        if (_tmp4 !== void 0) {\n                            result = {\n                                \"_variant\": \"or\",\n                                \"pattern0\": _tmp1,\n                                \"pattern1\": _tmp2,\n                                \"patternN\": _tmp4,\n                                __as_preserve__() {return fromDefinition(this);},\n                                __preserve_on__(e) { e.push(fromDefinition(this)); },\n                                __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n                            };\n                        };\n                    };\n                };\n            };\n        };\n    };\n    if (result === void 0) {\n        if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n            let _tmp7: ({}) | undefined;\n            _tmp7 = _.is(v.label, $and) ? {} : void 0;\n            if (_tmp7 !== void 0) {\n                if (_.isSequence(v[0]) && v[0].length >= 2) {\n                    let _tmp8: (NamedPattern<_embedded>) | undefined;\n                    _tmp8 = toNamedPattern(v[0][0]);\n                    if (_tmp8 !== void 0) {\n                        let _tmp9: (NamedPattern<_embedded>) | undefined;\n                        _tmp9 = toNamedPattern(v[0][1]);\n                        if (_tmp9 !== void 0) {\n                            let _tmp10: (Array<_.Value<_embedded>>) | undefined;\n                            let _tmp11: (Array<NamedPattern<_embedded>>) | undefined;\n                            _tmp10 = v[0].slice(2);\n                            _tmp11 = [];\n                            for (const _tmp12 of _tmp10) {\n                                let _tmp13: (NamedPattern<_embedded>) | undefined;\n                                _tmp13 = toNamedPattern(_tmp12);\n                                if (_tmp13 !== void 0) {_tmp11.push(_tmp13); continue;};\n                                _tmp11 = void 0;\n                                break;\n                            };\n                            if (_tmp11 !== void 0) {\n                                result = {\n                                    \"_variant\": \"and\",\n                                    \"pattern0\": _tmp8,\n                                    \"pattern1\": _tmp9,\n                                    \"patternN\": _tmp11,\n                                    __as_preserve__() {return fromDefinition(this);},\n                                    __preserve_on__(e) { e.push(fromDefinition(this)); },\n                                    __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n                                };\n                            };\n                        };\n                    };\n                };\n            };\n        };\n        if (result === void 0) {\n            let _tmp14: (Pattern<_embedded>) | undefined;\n            _tmp14 = toPattern(v);\n            if (_tmp14 !== void 0) {\n                result = {\n                    \"_variant\": \"Pattern\",\n                    \"value\": _tmp14,\n                    __as_preserve__() {return fromDefinition(this);},\n                    __preserve_on__(e) { e.push(fromDefinition(this)); },\n                    __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n                };\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace Definition {export const __from_preserve__ = toDefinition;}\n\nexport function fromDefinition<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Definition<_embedded>): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"or\": {\n            return _.Record(\n                $or,\n                [\n                    [\n                        fromNamedAlternative<_embedded>(_v[\"pattern0\"]),\n                        fromNamedAlternative<_embedded>(_v[\"pattern1\"]),\n                        ... _v[\"patternN\"].map(v => fromNamedAlternative<_embedded>(v))\n                    ]\n                ]\n            );\n        };\n        case \"and\": {\n            return _.Record(\n                $and,\n                [\n                    [\n                        fromNamedPattern<_embedded>(_v[\"pattern0\"]),\n                        fromNamedPattern<_embedded>(_v[\"pattern1\"]),\n                        ... _v[\"patternN\"].map(v => fromNamedPattern<_embedded>(v))\n                    ]\n                ]\n            );\n        };\n        case \"Pattern\": {return fromPattern<_embedded>(_v.value);};\n    };\n}\n\nexport function asPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Pattern<_embedded> {\n    let result = toPattern(v);\n    if (result === void 0) throw new TypeError(`Invalid Pattern: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Pattern<_embedded> {\n    let _tmp0: (SimplePattern<_embedded>) | undefined;\n    let result: undefined | Pattern<_embedded>;\n    _tmp0 = toSimplePattern(v);\n    if (_tmp0 !== void 0) {\n        result = {\n            \"_variant\": \"SimplePattern\",\n            \"value\": _tmp0,\n            __as_preserve__() {return fromPattern(this);},\n            __preserve_on__(e) { e.push(fromPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromPattern(this)); }\n        };\n    };\n    if (result === void 0) {\n        let _tmp1: (CompoundPattern<_embedded>) | undefined;\n        _tmp1 = toCompoundPattern(v);\n        if (_tmp1 !== void 0) {\n            result = {\n                \"_variant\": \"CompoundPattern\",\n                \"value\": _tmp1,\n                __as_preserve__() {return fromPattern(this);},\n                __preserve_on__(e) { e.push(fromPattern(this)); },\n                __preserve_text_on__(w) { w.push(fromPattern(this)); }\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace Pattern {export const __from_preserve__ = toPattern;}\n\nexport function fromPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Pattern<_embedded>): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"SimplePattern\": {return fromSimplePattern<_embedded>(_v.value);};\n        case \"CompoundPattern\": {return fromCompoundPattern<_embedded>(_v.value);};\n    };\n}\n\nexport function asSimplePattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): SimplePattern<_embedded> {\n    let result = toSimplePattern(v);\n    if (result === void 0) throw new TypeError(`Invalid SimplePattern: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toSimplePattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | SimplePattern<_embedded> {\n    let _tmp0: ({}) | undefined;\n    let result: undefined | SimplePattern<_embedded>;\n    _tmp0 = _.is(v, $any) ? {} : void 0;\n    if (_tmp0 !== void 0) {\n        result = {\n            \"_variant\": \"any\",\n            __as_preserve__() {return fromSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n        };\n    };\n    if (result === void 0) {\n        if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n            let _tmp1: ({}) | undefined;\n            _tmp1 = _.is(v.label, $atom) ? {} : void 0;\n            if (_tmp1 !== void 0) {\n                let _tmp2: (AtomKind) | undefined;\n                _tmp2 = toAtomKind(v[0]);\n                if (_tmp2 !== void 0) {\n                    result = {\n                        \"_variant\": \"atom\",\n                        \"atomKind\": _tmp2,\n                        __as_preserve__() {return fromSimplePattern(this);},\n                        __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n                        __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n                    };\n                };\n            };\n        };\n        if (result === void 0) {\n            if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                let _tmp3: ({}) | undefined;\n                _tmp3 = _.is(v.label, $embedded) ? {} : void 0;\n                if (_tmp3 !== void 0) {\n                    let _tmp4: (SimplePattern<_embedded>) | undefined;\n                    _tmp4 = toSimplePattern(v[0]);\n                    if (_tmp4 !== void 0) {\n                        result = {\n                            \"_variant\": \"embedded\",\n                            \"interface\": _tmp4,\n                            __as_preserve__() {return fromSimplePattern(this);},\n                            __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n                            __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n                        };\n                    };\n                };\n            };\n            if (result === void 0) {\n                if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                    let _tmp5: ({}) | undefined;\n                    _tmp5 = _.is(v.label, $lit) ? {} : void 0;\n                    if (_tmp5 !== void 0) {\n                        let _tmp6: (_.Value<_embedded>) | undefined;\n                        _tmp6 = v[0];\n                        if (_tmp6 !== void 0) {\n                            result = {\n                                \"_variant\": \"lit\",\n                                \"value\": _tmp6,\n                                __as_preserve__() {return fromSimplePattern(this);},\n                                __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n                                __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n                            };\n                        };\n                    };\n                };\n                if (result === void 0) {\n                    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                        let _tmp7: ({}) | undefined;\n                        _tmp7 = _.is(v.label, $seqof) ? {} : void 0;\n                        if (_tmp7 !== void 0) {\n                            let _tmp8: (SimplePattern<_embedded>) | undefined;\n                            _tmp8 = toSimplePattern(v[0]);\n                            if (_tmp8 !== void 0) {\n                                result = {\n                                    \"_variant\": \"seqof\",\n                                    \"pattern\": _tmp8,\n                                    __as_preserve__() {return fromSimplePattern(this);},\n                                    __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n                                    __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n                                };\n                            };\n                        };\n                    };\n                    if (result === void 0) {\n                        if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                            let _tmp9: ({}) | undefined;\n                            _tmp9 = _.is(v.label, $setof) ? {} : void 0;\n                            if (_tmp9 !== void 0) {\n                                let _tmp10: (SimplePattern<_embedded>) | undefined;\n                                _tmp10 = toSimplePattern(v[0]);\n                                if (_tmp10 !== void 0) {\n                                    result = {\n                                        \"_variant\": \"setof\",\n                                        \"pattern\": _tmp10,\n                                        __as_preserve__() {return fromSimplePattern(this);},\n                                        __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n                                        __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n                                    };\n                                };\n                            };\n                        };\n                        if (result === void 0) {\n                            if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                                let _tmp11: ({}) | undefined;\n                                _tmp11 = _.is(v.label, $dictof) ? {} : void 0;\n                                if (_tmp11 !== void 0) {\n                                    let _tmp12: (SimplePattern<_embedded>) | undefined;\n                                    _tmp12 = toSimplePattern(v[0]);\n                                    if (_tmp12 !== void 0) {\n                                        let _tmp13: (SimplePattern<_embedded>) | undefined;\n                                        _tmp13 = toSimplePattern(v[1]);\n                                        if (_tmp13 !== void 0) {\n                                            result = {\n                                                \"_variant\": \"dictof\",\n                                                \"key\": _tmp12,\n                                                \"value\": _tmp13,\n                                                __as_preserve__() {return fromSimplePattern(this);},\n                                                __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n                                                __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n                                            };\n                                        };\n                                    };\n                                };\n                            };\n                            if (result === void 0) {\n                                let _tmp14: (Ref) | undefined;\n                                _tmp14 = toRef(v);\n                                if (_tmp14 !== void 0) {\n                                    result = {\n                                        \"_variant\": \"Ref\",\n                                        \"value\": _tmp14,\n                                        __as_preserve__() {return fromSimplePattern(this);},\n                                        __preserve_on__(e) { e.push(fromSimplePattern(this)); },\n                                        __preserve_text_on__(w) { w.push(fromSimplePattern(this)); }\n                                    };\n                                };\n                            };\n                        };\n                    };\n                };\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace SimplePattern {export const __from_preserve__ = toSimplePattern;}\n\nexport function fromSimplePattern<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: SimplePattern<_embedded>): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"any\": {return $any;};\n        case \"atom\": {return _.Record($atom, [fromAtomKind<_embedded>(_v[\"atomKind\"])]);};\n        case \"embedded\": {return _.Record($embedded, [fromSimplePattern<_embedded>(_v[\"interface\"])]);};\n        case \"lit\": {return _.Record($lit, [_v[\"value\"]]);};\n        case \"seqof\": {return _.Record($seqof, [fromSimplePattern<_embedded>(_v[\"pattern\"])]);};\n        case \"setof\": {return _.Record($setof, [fromSimplePattern<_embedded>(_v[\"pattern\"])]);};\n        case \"dictof\": {\n            return _.Record(\n                $dictof,\n                [\n                    fromSimplePattern<_embedded>(_v[\"key\"]),\n                    fromSimplePattern<_embedded>(_v[\"value\"])\n                ]\n            );\n        };\n        case \"Ref\": {return fromRef<_embedded>(_v.value);};\n    };\n}\n\nexport function asCompoundPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): CompoundPattern<_embedded> {\n    let result = toCompoundPattern(v);\n    if (result === void 0) throw new TypeError(`Invalid CompoundPattern: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toCompoundPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | CompoundPattern<_embedded> {\n    let result: undefined | CompoundPattern<_embedded>;\n    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n        let _tmp0: ({}) | undefined;\n        _tmp0 = _.is(v.label, $rec) ? {} : void 0;\n        if (_tmp0 !== void 0) {\n            let _tmp1: (NamedPattern<_embedded>) | undefined;\n            _tmp1 = toNamedPattern(v[0]);\n            if (_tmp1 !== void 0) {\n                let _tmp2: (NamedPattern<_embedded>) | undefined;\n                _tmp2 = toNamedPattern(v[1]);\n                if (_tmp2 !== void 0) {\n                    result = {\n                        \"_variant\": \"rec\",\n                        \"label\": _tmp1,\n                        \"fields\": _tmp2,\n                        __as_preserve__() {return fromCompoundPattern(this);},\n                        __preserve_on__(e) { e.push(fromCompoundPattern(this)); },\n                        __preserve_text_on__(w) { w.push(fromCompoundPattern(this)); }\n                    };\n                };\n            };\n        };\n    };\n    if (result === void 0) {\n        if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n            let _tmp3: ({}) | undefined;\n            _tmp3 = _.is(v.label, $tuple) ? {} : void 0;\n            if (_tmp3 !== void 0) {\n                let _tmp4: (Array<NamedPattern<_embedded>>) | undefined;\n                _tmp4 = void 0;\n                if (_.isSequence(v[0])) {\n                    _tmp4 = [];\n                    for (const _tmp5 of v[0]) {\n                        let _tmp6: (NamedPattern<_embedded>) | undefined;\n                        _tmp6 = toNamedPattern(_tmp5);\n                        if (_tmp6 !== void 0) {_tmp4.push(_tmp6); continue;};\n                        _tmp4 = void 0;\n                        break;\n                    };\n                };\n                if (_tmp4 !== void 0) {\n                    result = {\n                        \"_variant\": \"tuple\",\n                        \"patterns\": _tmp4,\n                        __as_preserve__() {return fromCompoundPattern(this);},\n                        __preserve_on__(e) { e.push(fromCompoundPattern(this)); },\n                        __preserve_text_on__(w) { w.push(fromCompoundPattern(this)); }\n                    };\n                };\n            };\n        };\n        if (result === void 0) {\n            if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                let _tmp7: ({}) | undefined;\n                _tmp7 = _.is(v.label, $tuplePrefix) ? {} : void 0;\n                if (_tmp7 !== void 0) {\n                    let _tmp8: (Array<NamedPattern<_embedded>>) | undefined;\n                    _tmp8 = void 0;\n                    if (_.isSequence(v[0])) {\n                        _tmp8 = [];\n                        for (const _tmp9 of v[0]) {\n                            let _tmp10: (NamedPattern<_embedded>) | undefined;\n                            _tmp10 = toNamedPattern(_tmp9);\n                            if (_tmp10 !== void 0) {_tmp8.push(_tmp10); continue;};\n                            _tmp8 = void 0;\n                            break;\n                        };\n                    };\n                    if (_tmp8 !== void 0) {\n                        let _tmp11: (NamedSimplePattern<_embedded>) | undefined;\n                        _tmp11 = toNamedSimplePattern(v[1]);\n                        if (_tmp11 !== void 0) {\n                            result = {\n                                \"_variant\": \"tuplePrefix\",\n                                \"fixed\": _tmp8,\n                                \"variable\": _tmp11,\n                                __as_preserve__() {return fromCompoundPattern(this);},\n                                __preserve_on__(e) { e.push(fromCompoundPattern(this)); },\n                                __preserve_text_on__(w) { w.push(fromCompoundPattern(this)); }\n                            };\n                        };\n                    };\n                };\n            };\n            if (result === void 0) {\n                if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                    let _tmp12: ({}) | undefined;\n                    _tmp12 = _.is(v.label, $dict) ? {} : void 0;\n                    if (_tmp12 !== void 0) {\n                        let _tmp13: (DictionaryEntries<_embedded>) | undefined;\n                        _tmp13 = toDictionaryEntries(v[0]);\n                        if (_tmp13 !== void 0) {\n                            result = {\n                                \"_variant\": \"dict\",\n                                \"entries\": _tmp13,\n                                __as_preserve__() {return fromCompoundPattern(this);},\n                                __preserve_on__(e) { e.push(fromCompoundPattern(this)); },\n                                __preserve_text_on__(w) { w.push(fromCompoundPattern(this)); }\n                            };\n                        };\n                    };\n                };\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace CompoundPattern {export const __from_preserve__ = toCompoundPattern;}\n\nexport function fromCompoundPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: CompoundPattern<_embedded>): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"rec\": {\n            return _.Record(\n                $rec,\n                [\n                    fromNamedPattern<_embedded>(_v[\"label\"]),\n                    fromNamedPattern<_embedded>(_v[\"fields\"])\n                ]\n            );\n        };\n        case \"tuple\": {\n            return _.Record($tuple, [_v[\"patterns\"].map(v => fromNamedPattern<_embedded>(v))]);\n        };\n        case \"tuplePrefix\": {\n            return _.Record(\n                $tuplePrefix,\n                [\n                    _v[\"fixed\"].map(v => fromNamedPattern<_embedded>(v)),\n                    fromNamedSimplePattern<_embedded>(_v[\"variable\"])\n                ]\n            );\n        };\n        case \"dict\": {return _.Record($dict, [fromDictionaryEntries<_embedded>(_v[\"entries\"])]);};\n    };\n}\n\nexport function asDictionaryEntries<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): DictionaryEntries<_embedded> {\n    let result = toDictionaryEntries(v);\n    if (result === void 0) throw new TypeError(`Invalid DictionaryEntries: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toDictionaryEntries<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | DictionaryEntries<_embedded> {\n    let _tmp0: (_.EncodableDictionary<_embedded, _.Value<_embedded>, NamedSimplePattern<_embedded>>) | undefined;\n    let result: undefined | DictionaryEntries<_embedded>;\n    _tmp0 = void 0;\n    if (_.Dictionary.isDictionary<_embedded>(v)) {\n        const _tmp1 = new _.DictionaryMap(v);\n        _tmp0 = new _.EncodableDictionary<_embedded, _.Value<_embedded>, NamedSimplePattern<_embedded>>(k => k, fromNamedSimplePattern<_embedded>);\n        for (const [_tmp2, _tmp3] of _tmp1) {\n            let _tmp4: (_.Value<_embedded>) | undefined;\n            _tmp4 = _tmp2;\n            if (_tmp4 !== void 0) {\n                let _tmp5: (NamedSimplePattern<_embedded>) | undefined;\n                _tmp5 = toNamedSimplePattern(_tmp3);\n                if (_tmp5 !== void 0) {_tmp0.set(_tmp4, _tmp5); continue;};\n            };\n            _tmp0 = void 0;\n            break;\n        };\n    };\n    if (_tmp0 !== void 0) {result = _tmp0;};\n    return result;\n}\n\nDictionaryEntries.__from_preserve__ = toDictionaryEntries;\n\nexport function fromDictionaryEntries<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: DictionaryEntries<_embedded>): _.Value<_embedded> {\n    return _.Dictionary.from<_embedded>(\n        _.Array.from(_v.entries()).map(([k, v]) => [k, fromNamedSimplePattern<_embedded>(v)])\n    );\n}\n\nexport function asAtomKind<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): AtomKind {\n    let result = toAtomKind(v);\n    if (result === void 0) throw new TypeError(`Invalid AtomKind: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toAtomKind<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | AtomKind {\n    let _tmp0: ({}) | undefined;\n    let result: undefined | AtomKind;\n    _tmp0 = _.is(v, $Boolean) ? {} : void 0;\n    if (_tmp0 !== void 0) {\n        result = {\n            \"_variant\": \"Boolean\",\n            __as_preserve__() {return fromAtomKind(this);},\n            __preserve_on__(e) { e.push(fromAtomKind(this)); },\n            __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n        };\n    };\n    if (result === void 0) {\n        let _tmp1: ({}) | undefined;\n        _tmp1 = _.is(v, $Double) ? {} : void 0;\n        if (_tmp1 !== void 0) {\n            result = {\n                \"_variant\": \"Double\",\n                __as_preserve__() {return fromAtomKind(this);},\n                __preserve_on__(e) { e.push(fromAtomKind(this)); },\n                __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n            };\n        };\n        if (result === void 0) {\n            let _tmp2: ({}) | undefined;\n            _tmp2 = _.is(v, $SignedInteger) ? {} : void 0;\n            if (_tmp2 !== void 0) {\n                result = {\n                    \"_variant\": \"SignedInteger\",\n                    __as_preserve__() {return fromAtomKind(this);},\n                    __preserve_on__(e) { e.push(fromAtomKind(this)); },\n                    __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n                };\n            };\n            if (result === void 0) {\n                let _tmp3: ({}) | undefined;\n                _tmp3 = _.is(v, $String) ? {} : void 0;\n                if (_tmp3 !== void 0) {\n                    result = {\n                        \"_variant\": \"String\",\n                        __as_preserve__() {return fromAtomKind(this);},\n                        __preserve_on__(e) { e.push(fromAtomKind(this)); },\n                        __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n                    };\n                };\n                if (result === void 0) {\n                    let _tmp4: ({}) | undefined;\n                    _tmp4 = _.is(v, $ByteString) ? {} : void 0;\n                    if (_tmp4 !== void 0) {\n                        result = {\n                            \"_variant\": \"ByteString\",\n                            __as_preserve__() {return fromAtomKind(this);},\n                            __preserve_on__(e) { e.push(fromAtomKind(this)); },\n                            __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n                        };\n                    };\n                    if (result === void 0) {\n                        let _tmp5: ({}) | undefined;\n                        _tmp5 = _.is(v, $Symbol) ? {} : void 0;\n                        if (_tmp5 !== void 0) {\n                            result = {\n                                \"_variant\": \"Symbol\",\n                                __as_preserve__() {return fromAtomKind(this);},\n                                __preserve_on__(e) { e.push(fromAtomKind(this)); },\n                                __preserve_text_on__(w) { w.push(fromAtomKind(this)); }\n                            };\n                        };\n                    };\n                };\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace AtomKind {export const __from_preserve__ = toAtomKind;}\n\nexport function fromAtomKind<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: AtomKind): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"Boolean\": {return $Boolean;};\n        case \"Double\": {return $Double;};\n        case \"SignedInteger\": {return $SignedInteger;};\n        case \"String\": {return $String;};\n        case \"ByteString\": {return $ByteString;};\n        case \"Symbol\": {return $Symbol;};\n    };\n}\n\nexport function asNamedAlternative<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): NamedAlternative<_embedded> {\n    let result = toNamedAlternative(v);\n    if (result === void 0) throw new TypeError(`Invalid NamedAlternative: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toNamedAlternative<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | NamedAlternative<_embedded> {\n    let result: undefined | NamedAlternative<_embedded>;\n    if (_.isSequence(v) && v.length >= 2) {\n        let _tmp0: (string) | undefined;\n        _tmp0 = typeof v[0] === 'string' ? v[0] : void 0;\n        if (_tmp0 !== void 0) {\n            let _tmp1: (Pattern<_embedded>) | undefined;\n            _tmp1 = toPattern(v[1]);\n            if (_tmp1 !== void 0) {\n                result = {\n                    \"variantLabel\": _tmp0,\n                    \"pattern\": _tmp1,\n                    __as_preserve__() {return fromNamedAlternative(this);},\n                    __preserve_on__(e) { e.push(fromNamedAlternative(this)); },\n                    __preserve_text_on__(w) { w.push(fromNamedAlternative(this)); }\n                };\n            };\n        };\n    };\n    return result;\n}\n\nNamedAlternative.__from_preserve__ = toNamedAlternative;\n\nexport function fromNamedAlternative<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: NamedAlternative<_embedded>): _.Value<_embedded> {return [_v[\"variantLabel\"], fromPattern<_embedded>(_v[\"pattern\"])];}\n\nexport function asNamedSimplePattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): NamedSimplePattern<_embedded> {\n    let result = toNamedSimplePattern(v);\n    if (result === void 0) throw new TypeError(`Invalid NamedSimplePattern: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toNamedSimplePattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | NamedSimplePattern<_embedded> {\n    let _tmp0: (Binding<_embedded>) | undefined;\n    let result: undefined | NamedSimplePattern<_embedded>;\n    _tmp0 = toBinding(v);\n    if (_tmp0 !== void 0) {\n        result = {\n            \"_variant\": \"named\",\n            \"value\": _tmp0,\n            __as_preserve__() {return fromNamedSimplePattern(this);},\n            __preserve_on__(e) { e.push(fromNamedSimplePattern(this)); },\n            __preserve_text_on__(w) { w.push(fromNamedSimplePattern(this)); }\n        };\n    };\n    if (result === void 0) {\n        let _tmp1: (SimplePattern<_embedded>) | undefined;\n        _tmp1 = toSimplePattern(v);\n        if (_tmp1 !== void 0) {\n            result = {\n                \"_variant\": \"anonymous\",\n                \"value\": _tmp1,\n                __as_preserve__() {return fromNamedSimplePattern(this);},\n                __preserve_on__(e) { e.push(fromNamedSimplePattern(this)); },\n                __preserve_text_on__(w) { w.push(fromNamedSimplePattern(this)); }\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace NamedSimplePattern {export const __from_preserve__ = toNamedSimplePattern;}\n\nexport function fromNamedSimplePattern<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: NamedSimplePattern<_embedded>): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"named\": {return fromBinding<_embedded>(_v.value);};\n        case \"anonymous\": {return fromSimplePattern<_embedded>(_v.value);};\n    };\n}\n\nexport function asNamedPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): NamedPattern<_embedded> {\n    let result = toNamedPattern(v);\n    if (result === void 0) throw new TypeError(`Invalid NamedPattern: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toNamedPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | NamedPattern<_embedded> {\n    let _tmp0: (Binding<_embedded>) | undefined;\n    let result: undefined | NamedPattern<_embedded>;\n    _tmp0 = toBinding(v);\n    if (_tmp0 !== void 0) {\n        result = {\n            \"_variant\": \"named\",\n            \"value\": _tmp0,\n            __as_preserve__() {return fromNamedPattern(this);},\n            __preserve_on__(e) { e.push(fromNamedPattern(this)); },\n            __preserve_text_on__(w) { w.push(fromNamedPattern(this)); }\n        };\n    };\n    if (result === void 0) {\n        let _tmp1: (Pattern<_embedded>) | undefined;\n        _tmp1 = toPattern(v);\n        if (_tmp1 !== void 0) {\n            result = {\n                \"_variant\": \"anonymous\",\n                \"value\": _tmp1,\n                __as_preserve__() {return fromNamedPattern(this);},\n                __preserve_on__(e) { e.push(fromNamedPattern(this)); },\n                __preserve_text_on__(w) { w.push(fromNamedPattern(this)); }\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace NamedPattern {export const __from_preserve__ = toNamedPattern;}\n\nexport function fromNamedPattern<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: NamedPattern<_embedded>): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"named\": {return fromBinding<_embedded>(_v.value);};\n        case \"anonymous\": {return fromPattern<_embedded>(_v.value);};\n    };\n}\n\nexport function asBinding<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Binding<_embedded> {\n    let result = toBinding(v);\n    if (result === void 0) throw new TypeError(`Invalid Binding: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toBinding<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Binding<_embedded> {\n    let result: undefined | Binding<_embedded>;\n    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n        let _tmp0: ({}) | undefined;\n        _tmp0 = _.is(v.label, $named) ? {} : void 0;\n        if (_tmp0 !== void 0) {\n            let _tmp1: (symbol) | undefined;\n            _tmp1 = typeof v[0] === 'symbol' ? v[0] : void 0;\n            if (_tmp1 !== void 0) {\n                let _tmp2: (SimplePattern<_embedded>) | undefined;\n                _tmp2 = toSimplePattern(v[1]);\n                if (_tmp2 !== void 0) {\n                    result = {\n                        \"name\": _tmp1,\n                        \"pattern\": _tmp2,\n                        __as_preserve__() {return fromBinding(this);},\n                        __preserve_on__(e) { e.push(fromBinding(this)); },\n                        __preserve_text_on__(w) { w.push(fromBinding(this)); }\n                    };\n                };\n            };\n        };\n    };\n    return result;\n}\n\nBinding.__from_preserve__ = toBinding;\n\nexport function fromBinding<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Binding<_embedded>): _.Value<_embedded> {\n    return _.Record($named, [_v[\"name\"], fromSimplePattern<_embedded>(_v[\"pattern\"])]);\n}\n\nexport function asRef<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Ref {\n    let result = toRef(v);\n    if (result === void 0) throw new TypeError(`Invalid Ref: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toRef<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Ref {\n    let result: undefined | Ref;\n    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n        let _tmp0: ({}) | undefined;\n        _tmp0 = _.is(v.label, $ref) ? {} : void 0;\n        if (_tmp0 !== void 0) {\n            let _tmp1: (ModulePath) | undefined;\n            _tmp1 = toModulePath(v[0]);\n            if (_tmp1 !== void 0) {\n                let _tmp2: (symbol) | undefined;\n                _tmp2 = typeof v[1] === 'symbol' ? v[1] : void 0;\n                if (_tmp2 !== void 0) {\n                    result = {\n                        \"module\": _tmp1,\n                        \"name\": _tmp2,\n                        __as_preserve__() {return fromRef(this);},\n                        __preserve_on__(e) { e.push(fromRef(this)); },\n                        __preserve_text_on__(w) { w.push(fromRef(this)); }\n                    };\n                };\n            };\n        };\n    };\n    return result;\n}\n\nRef.__from_preserve__ = toRef;\n\nexport function fromRef<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Ref): _.Value<_embedded> {return _.Record($ref, [fromModulePath<_embedded>(_v[\"module\"]), _v[\"name\"]]);}\n\nexport function asModulePath<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): ModulePath {\n    let result = toModulePath(v);\n    if (result === void 0) throw new TypeError(`Invalid ModulePath: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toModulePath<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | ModulePath {\n    let _tmp0: (Array<symbol>) | undefined;\n    let result: undefined | ModulePath;\n    _tmp0 = void 0;\n    if (_.isSequence(v)) {\n        _tmp0 = [];\n        for (const _tmp1 of v) {\n            let _tmp2: (symbol) | undefined;\n            _tmp2 = typeof _tmp1 === 'symbol' ? _tmp1 : void 0;\n            if (_tmp2 !== void 0) {_tmp0.push(_tmp2); continue;};\n            _tmp0 = void 0;\n            break;\n        };\n    };\n    if (_tmp0 !== void 0) {result = _tmp0;};\n    return result;\n}\n\nModulePath.__from_preserve__ = toModulePath;\n\nexport function fromModulePath<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: ModulePath): _.Value<_embedded> {return _v.map(v => v);}\n\n","export function isJsKeyword(s: string): boolean {\n    return JS_KEYWORDS.has(s);\n}\n\nexport const JS_KEYWORDS = new Set([\n    'abstract',\n    'arguments',\n    'await',\n    'boolean',\n    'break',\n    'byte',\n    'case',\n    'catch',\n    'char',\n    'class',\n    'const',\n    'continue',\n    'debugger',\n    'default',\n    'delete',\n    'do',\n    'double',\n    'else',\n    'enum',\n    'export',\n    'extends',\n    'false',\n    'final',\n    'finally',\n    'float',\n    'for',\n    'function',\n    'goto',\n    'if',\n    'implements',\n    'import',\n    'in',\n    'instanceof',\n    'int',\n    'interface',\n    'let',\n    'long',\n    'native',\n    'new',\n    'null',\n    'package',\n    'private',\n    'protected',\n    'public',\n    'return',\n    'short',\n    'static',\n    'super',\n    'switch',\n    'synchronized',\n    'this',\n    'throw',\n    'throws',\n    'transient',\n    'true',\n    'try',\n    'typeof',\n    'var',\n    'void',\n    'volatile',\n    'while',\n    'with',\n    'yield',\n]);\n","import { Position } from '@preserves/core';\n\nexport class SchemaSyntaxError extends Error {\n    readonly pos: Position | null;\n\n    constructor(message: string, pos: Position | null) {\n        super(message);\n        this.pos = pos;\n    }\n}\n","import { Reader, Annotated, Dictionary, is, peel, preserves, Record, strip, Tuple, Position, position, stringify, isCompound, EncodableDictionary, annotate, annotations, isEmbedded, GenericEmbedded, genericEmbeddedTypeDecode, JsDictionary, KeyedDictionary } from '@preserves/core';\nimport { Input, Pattern, Schema, Definition, CompoundPattern, SimplePattern } from './meta.js';\nimport * as M from './meta.js';\nimport { SchemaSyntaxError } from './error.js';\nimport { checkSchema } from './checker.js';\n\nconst positionTable = new WeakMap<object, Position>();\n\nexport function recordPosition<X extends object>(v: X, pos: Position | null): X {\n    if (pos === null) { console.error('Internal error in Schema reader: null source position for', v); }\n    if (pos !== null) positionTable.set(v, pos);\n    return v;\n}\n\nexport function refPosition(v: object): Position | null {\n    return positionTable.get(v) ?? null;\n}\n\nfunction splitBy<T>(items: Array<T>, separator: T): Array<Array<T>> {\n    const groups: Array<Array<T>> = [];\n    let group: Array<T> = [];\n    function finish() {\n        if (group.length > 0) {\n            groups.push(group);\n            group = [];\n        }\n    }\n    for (const item of items) {\n        if (is(item, separator)) {\n            finish();\n        } else {\n            group.push(item);\n        }\n    }\n    finish();\n    return groups;\n}\n\nfunction invalidClause(clause: Array<Input>): never {\n    throw new SchemaSyntaxError(preserves`Invalid Schema clause: ${clause}`,\n                                position(clause[0] ?? false));\n}\n\nfunction invalidPattern(name: string, item: Input, pos: Position | null): never {\n    throw new SchemaSyntaxError(`Invalid pattern in ${name}: ${stringify(item)}`, pos);\n}\n\nexport type SchemaReaderOptions = {\n    name?: string | Position;\n    readInclude?(includePath: string): string;\n};\n\nfunction _readSchema(source: string, options?: SchemaReaderOptions): Array<Input> {\n    return new Reader<GenericEmbedded>(source, {\n        name: options?.name,\n        includeAnnotations: true,\n        embeddedDecode: genericEmbeddedTypeDecode,\n    }).readToEnd();\n}\n\nexport function readSchema(source: string, options?: SchemaReaderOptions): Schema\n{\n    const checked = checkSchema(parseSchema(_readSchema(source, options), options ?? {}));\n    if (checked.ok) return checked.schema;\n    throw new Error(`Schema is not invertible:\\n` +\n        checked.problems.map(c => ' - ' + c).join('\\n'));\n}\n\nexport function parseSchema(toplevelTokens: Array<Input>, options: SchemaReaderOptions): Schema\n{\n    let version: M.Version | undefined = void 0;\n    let embeddedType: M.EmbeddedTypeName = M.EmbeddedTypeName.$false();\n    let definitions: M.Definitions = {};\n\n    function process(toplevelTokens: Array<Input>): void {\n        const toplevelClauses = splitBy(peel(toplevelTokens) as Array<Input>, M.DOT);\n        for (const clause of toplevelClauses) {\n            if (clause.length >= 2 && is(clause[1], M.EQUALS)) {\n                const pos = position(clause[0]);\n                const name = peel(clause[0]);\n                if (typeof name !== 'symbol') invalidClause(clause);\n                if (!M.isValidToken(name.description!)) {\n                    throw new SchemaSyntaxError(preserves`Invalid definition name: ${name}`, pos);\n                }\n                if (JsDictionary.has(definitions, name)) {\n                    throw new SchemaSyntaxError(preserves`Duplicate definition: ${clause}`, pos);\n                }\n                JsDictionary.set(definitions, name, parseDefinition(name, pos, clause.slice(2)));\n            } else if (clause.length === 2 && is(clause[0], M.$version)) {\n                version = M.asVersion(peel(clause[1]));\n            } else if (clause.length === 2 && is(clause[0], M.$embeddedType)) {\n                const pos = position(clause[1]);\n                const stx = peel(clause[1]);\n                if (stx === false) {\n                    embeddedType = M.EmbeddedTypeName.$false();\n                } else if (typeof stx === 'symbol' && M.isValidQid(stx.description!)) {\n                    embeddedType = M.EmbeddedTypeName.Ref(parseRef(stx.description!, pos));\n                } else {\n                    invalidPattern('embedded type name specification', stx, pos);\n                }\n            } else if (clause.length === 2 && is(clause[0], M.INCLUDE)) {\n                const pos = position(clause[1]);\n                const path = peel(clause[1]);\n                if (typeof path !== 'string') {\n                    throw new SchemaSyntaxError(preserves`Invalid include: ${clause}`, pos);\n                }\n                if (options.readInclude === void 0) {\n                    throw new SchemaSyntaxError(preserves`Cannot include files in schema`, pos);\n                }\n                process(_readSchema(options.readInclude(path), options));\n            } else {\n                invalidClause(clause);\n            }\n        }\n    }\n\n    process(toplevelTokens);\n\n    if (version === void 0) {\n        throw new SchemaSyntaxError(\"Schema: missing version declaration.\", null);\n    }\n\n    return M.Schema({ version: M.Version(), embeddedType, definitions });\n}\n\nfunction namedMustBeSimple(p: Position | null): never {\n    throw new SchemaSyntaxError('Named patterns must be Simple patterns', p);\n}\n\nfunction parseDefinition(name: symbol, pos: Position | null, body: Array<Input>): Definition {\n    function alternativeName(input: Array<Input>): M.NamedAlternative\n    {\n        const n = findName(input) || findName(input[0]);\n        const p = parsePattern(name, input);\n        if (n !== false) {\n            return M.NamedAlternative({ variantLabel: n.description!, pattern: p });\n        }\n        if (p._variant === 'CompoundPattern' &&\n            p.value._variant === 'rec' &&\n            p.value.label._variant === 'anonymous' &&\n            p.value.label.value._variant === 'SimplePattern' &&\n            p.value.label.value.value._variant === 'lit' &&\n            typeof p.value.label.value.value.value === 'symbol' &&\n            M.isValidToken(p.value.label.value.value.value.description!))\n        {\n            return M.NamedAlternative({\n                variantLabel: p.value.label.value.value.value.description!,\n                pattern: p\n            });\n        }\n        if (p._variant === 'SimplePattern' &&\n            p.value._variant === 'Ref' &&\n            M.isValidQid(p.value.value.name.description!))\n        {\n            return M.NamedAlternative({\n                variantLabel: M.qidLast(p.value.value.name.description!),\n                pattern: p\n            });\n        }\n        if (p._variant === 'SimplePattern' &&\n            p.value._variant === 'lit')\n        {\n            const s = M.namelike(p.value.value);\n            if (s !== void 0) {\n                if (M.isValidToken(s)) {\n                    return M.NamedAlternative({ variantLabel: s, pattern: p });\n                }\n                throw new SchemaSyntaxError(preserves`Invalid name ${s} inferred for alternative: ${input}`, pos);\n            }\n        }\n        throw new SchemaSyntaxError(preserves`Name missing for alternative: ${input}`, pos);\n    }\n\n    function patternName(input: Array<Input>): M.NamedPattern {\n        const n = findName(input) || findName(input[0]);\n        const p = parsePattern(name, input);\n        if (n !== false) {\n            if (p._variant !== 'SimplePattern') namedMustBeSimple(position(input[0]));\n            return M.NamedPattern.named(M.Binding({ name: n, pattern: p.value }));\n        }\n        return M.NamedPattern.anonymous(p);\n    }\n\n    const andPieces = splitBy(body, M.ANDSYM);\n    const orPieces = splitBy(body, M.ORSYM);\n\n    if (andPieces.length === 0 || orPieces.length === 0) {\n        throw new SchemaSyntaxError(preserves`Invalid Schema clause: ${body}`, pos);\n    }\n\n    if (andPieces.length > 1 && orPieces.length > 1) {\n        throw new SchemaSyntaxError(preserves`Mixed \"or\" and \"and\" clause: ${body}`, pos);\n    }\n\n    if (andPieces.length > 1) {\n        return M.Definition.and({\n            pattern0: patternName(andPieces[0]),\n            pattern1: patternName(andPieces[1]),\n            patternN: andPieces.slice(2).map(patternName),\n        });\n    }\n\n    if (orPieces.length > 1) {\n        return M.Definition.or({\n            pattern0: alternativeName(orPieces[0]),\n            pattern1: alternativeName(orPieces[1]),\n            patternN: orPieces.slice(2).map(alternativeName),\n        });\n    }\n\n    return M.Definition.Pattern(parsePattern(name, orPieces[0]));\n}\n\nfunction transferAnnotations(dest: Input, src: Input): Input {\n    return annotate(dest, ... annotations(src));\n}\n\nfunction parsePattern(name: symbol, body0: Array<Input>): Pattern {\n    function parseSimple<A>(item0: Input, ks: (p: SimplePattern) => A, kf: () => A): A {\n        const pos = position(item0);\n        const item = peel(item0);\n        function complain(): never { invalidPattern(stringify(name), item, pos); }\n        if (typeof item === 'symbol') {\n            const str = item.description!;\n            switch (str) {\n                case 'any': return ks(M.SimplePattern.any());\n                case 'bool': return ks(M.SimplePattern.atom(M.AtomKind.Boolean()));\n                case 'double': return ks(M.SimplePattern.atom(M.AtomKind.Double()));\n                case 'int': return ks(M.SimplePattern.atom(M.AtomKind.SignedInteger()));\n                case 'string': return ks(M.SimplePattern.atom(M.AtomKind.String()));\n                case 'bytes': return ks(M.SimplePattern.atom(M.AtomKind.ByteString()));\n                case 'symbol': return ks(M.SimplePattern.atom(M.AtomKind.Symbol()));\n                default: {\n                    if (str[0] === '=') {\n                        return ks(M.SimplePattern.lit<GenericEmbedded>(Symbol.for(str.slice(1))));\n                    } else if (M.isValidQid(str)) {\n                        return ks(M.SimplePattern.Ref(parseRef(str, pos)));\n                    } else {\n                        complain();\n                    }\n                }\n            }\n        } else if (Record.isRecord<Input, Tuple<Input>, M.InputEmbedded>(item)) {\n            const label = item.label;\n            if (Record.isRecord<Input, [], M.InputEmbedded>(label)) {\n                if (label.length !== 0) complain();\n                switch (label.label) {\n                    case M.$lit:\n                        if (item.length !== 1) complain();\n                        return ks(M.SimplePattern.lit(item[0]));\n                    default:\n                        return kf();\n                }\n            } else {\n                return kf();\n            }\n        } else if (Array.isArray(item) && item.length === 2 && is(item[1], M.DOTDOTDOT)) {\n            return ks(M.SimplePattern.seqof(walkSimple(item[0])));\n        } else if (Set.isSet<M.Input>(item)) {\n            if (item.size !== 1) complain();\n            const [vp] = item.values();\n            return ks(M.SimplePattern.setof(walkSimple(vp)));\n        } else {\n            const itemMap = Dictionary.asMap<M.InputEmbedded, Input>(item);\n            if (itemMap && itemMap.size === 2 && itemMap.has(M.DOTDOTDOT)) {\n                const v = itemMap.clone();\n                v.delete(M.DOTDOTDOT);\n                const [[kp, vp]] = v.entries();\n                return ks(M.SimplePattern.dictof({ key: walkSimple(kp), value: walkSimple(vp) }));\n            } else if (isCompound(item)) {\n                return kf();\n            } else if (isEmbedded(item)) {\n                return ks(M.SimplePattern.embedded(walkSimple(item.generic)));\n            } else {\n                return ks(M.SimplePattern.lit(strip(item)));\n            }\n        }\n    }\n\n    function parseCompound(item0: Input): CompoundPattern {\n        const pos = position(item0);\n        const item = peel(item0);\n        function complain(): never { invalidPattern(stringify(name), item, pos); }\n\n        if (Record.isRecord<Input, Tuple<Input>, M.InputEmbedded>(item)) {\n            const label = item.label;\n            if (Record.isRecord<Input, [], M.InputEmbedded>(label)) {\n                if (label.length !== 0) complain();\n                switch (label.label) {\n                    case M.$rec:\n                        if (item.length !== 2) complain();\n                        return M.CompoundPattern.rec({\n                            label: maybeNamed(item[0]),\n                            fields: maybeNamed(item[1])\n                        });\n                    default:\n                        complain();\n                }\n            } else {\n                return M.CompoundPattern.rec({\n                    label: M.NamedPattern.anonymous(M.Pattern.SimplePattern(M.SimplePattern.lit(label))),\n                    fields: M.NamedPattern.anonymous(parsePattern(name, [transferAnnotations([... item], item0)])),\n                });\n            }\n        } else if (Array.isArray(item) && item.length > 2 && is(item[item.length - 1], M.DOTDOTDOT)) {\n            const variableTemplateInput = item[item.length - 2];\n            const variablePart =\n                transferAnnotations([variableTemplateInput, M.DOTDOTDOT], variableTemplateInput);\n            return M.CompoundPattern.tuplePrefix({\n                fixed: item.slice(0, item.length - 2).map(maybeNamed),\n                variable: maybeNamedSimple(variablePart),\n            });\n        } else if (Array.isArray(item)) {\n            return M.CompoundPattern.tuple(item.map(maybeNamed));\n        } else {\n            const itemMap = Dictionary.asMap<M.InputEmbedded, Input>(item);\n            if (itemMap && !itemMap.has(M.DOTDOTDOT)) {\n                const entries = new KeyedDictionary<M.InputEmbedded, Input, M.NamedSimplePattern>();\n                itemMap.forEach((vp, k) => entries.set(\n                    strip(k),\n                    _maybeNamed(M.NamedSimplePattern.named,\n                                M.NamedSimplePattern.anonymous,\n                                walkSimple,\n                                strip(k))(vp)));\n                return M.CompoundPattern.dict(M.DictionaryEntries(entries));\n            } else {\n                complain();\n            }\n        }\n    }\n\n    const walk = (b: Input): Pattern => parsePattern(name, [b]);\n    const walkSimple = (b: Input): SimplePattern => parseSimple(b, p => p, () => {\n        throw new SchemaSyntaxError(`Compound patterns not accepted here`, position(b));\n    });\n\n    function _maybeNamed<R,P>(\n        named: (p: M.Binding) => R,\n        anonymous: (p: P) => R,\n        recur: (b: Input) => P,\n        literalName?: Input): (b: Input) => R\n    {\n        return (b: Input) => {\n            let name = findName(b);\n            if (name === false) {\n                if (literalName !== void 0) {\n                    const s = M.namelike(literalName);\n                    if (s !== void 0 && M.isValidToken(s)) {\n                        name = Symbol.for(s);\n                    }\n                }\n            }\n            if (name === false) {\n                return anonymous(recur(b));\n            }\n            return named(M.Binding({ name, pattern: parseSimple(b, p => p, () =>\n                namedMustBeSimple(position(b))) }));\n        };\n    }\n    const maybeNamed = _maybeNamed(M.NamedPattern.named, M.NamedPattern.anonymous, walk);\n    const maybeNamedSimple =\n        _maybeNamed(M.NamedSimplePattern.named, M.NamedSimplePattern.anonymous, walkSimple);\n\n    const body = peel(body0) as Array<Input>;\n    if (body.length !== 1) {\n        invalidPattern(stringify(name), body, body.length > 0 ? position(body[0]) : position(body));\n    }\n    return parseSimple(body[0],\n                       M.Pattern.SimplePattern,\n                       () => M.Pattern.CompoundPattern(parseCompound(body[0])));\n}\n\nfunction findName(x: Input): symbol | false {\n    if (!Annotated.isAnnotated(x)) return false;\n    for (const a0 of x.annotations) {\n        const a = peel(a0);\n        if (typeof a === 'symbol') return M.isValidToken(a.description!) && a;\n    }\n    return false;\n}\n\nfunction parseRef(s: string, pos: Position | null): M.Ref {\n    const pieces = s.split('.');\n    return recordPosition(M.Ref({\n        module: M.ModulePath(pieces.slice(0, pieces.length - 1).map(Symbol.for)),\n        name: Symbol.for(pieces[pieces.length - 1])\n    }), pos);\n}\n","import { encode, JsDictionary, stringify } from \"@preserves/core\";\nimport * as M from \"./meta.js\";\nimport { CompilerOptions, ModuleContext } from \"./compiler/context.js\";\nimport { Formatter, block, seq, braces } from \"./compiler/block.js\";\nimport { typeForDefinition } from \"./compiler/gentype.js\";\nimport { converterForDefinition } from \"./compiler/genconverter.js\";\nimport { renderTypeWithConversionMixins } from \"./compiler/rendertype.js\";\nimport { genConstructor } from \"./compiler/genctor.js\";\nimport { unconverterForDefinition } from \"./compiler/genunconverter.js\";\nimport { sourceCodeFor } from \"./compiler/value.js\";\nimport { fromSchema } from \"./meta.js\";\n\nexport function compile(\n    env: M.Environment,\n    modulePath: M.ModulePath,\n    schema: M.Schema,\n    options: CompilerOptions = {},\n): string {\n    const mod = new ModuleContext(env, modulePath, schema, options);\n\n    mod.definePreamble(`let __schema: _.Value | null = null;`);\n    mod.definePreamble(seq(`export function _schema() `, block(\n        seq(`if (__schema === null) `, block(\n            `__schema = _.decode<_.GenericEmbedded>(_.Bytes.fromHex(\"${encode(fromSchema(schema)).toHex()}\"))`)),\n        `return __schema`)));\n\n    const embeddedName = schema.embeddedType;\n    if (embeddedName._variant !== 'false') {\n        mod.defineType(seq(`export type _embedded = `, mod.embeddedType, `;`));\n    }\n\n    for (const [name, def] of JsDictionary.entries(schema.definitions)) {\n        const t = typeForDefinition(mod.resolver(), def);\n        const nameStr = stringify(name);\n        const resultTypeItem = seq(nameStr, mod.genericArgsFor(t));\n\n        mod.defineType(seq(`export type ${nameStr}`, mod.genericParametersFor(t),\n                           ` = `, renderTypeWithConversionMixins(mod, t), `;`));\n\n        if (t.kind === 'union') {\n            mod.defineFunctions(nameStr, _ctx =>\n                [seq(`export namespace ${nameStr} `, block(\n                    ... Array.from(t.variants).flatMap(([vn, vt]) =>\n                        genConstructor(mod, nameStr, vn, vn, vt, t, resultTypeItem))\n                ))]);\n        } else {\n            mod.defineFunctions(nameStr, _ctx =>\n                genConstructor(mod, nameStr, nameStr, void 0, t, t, resultTypeItem));\n        }\n    }\n\n    for (const [name0, def] of JsDictionary.entries(schema.definitions)) {\n        const t = typeForDefinition(mod.resolver(), def);\n        const name = name0 as symbol;\n        const nameStr = name0.description!;\n        const resultTypeItem = seq(nameStr, mod.genericArgsFor(t));\n\n        mod.defineFunctions(nameStr, ctx =>\n            [seq(`export function as${name.description!}`, mod.genericParameters(),\n                 `(v: _.Value<_embedded>): `, resultTypeItem, ` `,\n                 ctx.block(() => [\n                     seq(`let result = to${name.description!}(v)`),\n                     seq(`if (result === void 0) `,\n                         `throw new TypeError(\\`Invalid ${name.description!}: \\${_.stringify(v)}\\`)`),\n                     seq(`return result`)]))]);\n\n        mod.defineFunctions(nameStr, ctx =>\n            [seq(`export function to${name.description!}`, mod.genericParameters(),\n                 `(v: _.Value<_embedded>): undefined | `, resultTypeItem, ` `,\n                 ctx.block(() => [seq(`let result: undefined | `, resultTypeItem),\n                                  ... converterForDefinition(ctx, def, `v`, `result`),\n                                  seq(`return result`)])),\n             (t.kind === 'union')\n                ? seq(`export namespace ${M.jsId(name.description!)} `, block(\n                    seq(`export const __from_preserve__ = to${name.description!}`)))\n                : seq(`${M.jsId(name.description!)}.__from_preserve__ = to${name.description!};`)]);\n\n        mod.defineFunctions(nameStr, ctx =>\n            [seq(`export function from${name.description!}`, mod.genericParameters(),\n                 `(_v: `, name.description!, mod.genericArgsFor(t), `): _.Value<_embedded> `,\n                 ctx.block(() => unconverterForDefinition(ctx, def, `_v`)))]);\n    }\n\n    mod.definePreamble(\n        seq(`export const _imports = `, braces(... Array.from(mod.imports.values()).map(\n            ([modulePath, identifier, _path, expr]) =>\n                seq(stringify(M.formatModulePath(modulePath)), ': ', identifier, expr)))));\n\n    const f = new Formatter();\n    f.write(`import * as _ from ${JSON.stringify(options.preservesModule ?? '@preserves/core')};\\n`);\n    mod.imports.forEach(([_modulePath, identifier, path, _expr]) => {\n        f.write(`import * as ${identifier} from ${JSON.stringify(path)};\\n`);\n    });\n    f.newline();\n\n    const sortedLiterals = Array.from(mod.literals);\n    sortedLiterals.sort((a, b) => a[1] < b[1] ? -1 : a[1] === b[1] ? 0 : 1);\n    for (const [lit, varname] of sortedLiterals) {\n        f.write(seq(`export const ${varname} = `, sourceCodeFor(lit), `;\\n`));\n    }\n    f.newline();\n\n    mod.preamble.forEach(i => {\n        f.write(i);\n        f.newline();\n        f.newline();\n    });\n    f.newline();\n\n    mod.typedefs.forEach(t => {\n        f.write(t);\n        f.newline();\n        f.newline();\n    });\n    f.newline();\n\n    mod.functiondefs.forEach(p => {\n        f.write(p);\n        f.newline();\n        f.newline();\n    });\n\n    return f.toString();\n}\n","import { KeyedSet, FlexSet, Position, stringify, DictionaryMap, JsDictionary } from \"@preserves/core\";\nimport { refPosition } from \"../reader.js\";\nimport * as M from \"../meta.js\";\nimport { anglebrackets, block, braces, commas, formatItems, Item, keyvalue, seq } from \"./block.js\";\nimport { ANY_TYPE, RefType, SimpleType, Type } from \"./type.js\";\nimport { renderType, variantInitFor } from \"./rendertype.js\";\nimport { typeForDefinition } from \"./gentype.js\";\nimport { SchemaSyntaxError } from \"../error.js\";\n\nexport interface CompilerOptions {\n    preservesModule?: string;\n    defaultEmbeddedType?: M.Ref;\n    warn?(message: string, pos: Position | null): void;\n}\n\nexport interface Capture {\n    fieldName: string;\n    sourceExpr: string;\n}\n\nexport const RECURSION_LIMIT = 128;\n\nexport class ModuleContext {\n    readonly env: M.Environment;\n    readonly modulePath: M.ModulePath;\n    readonly schema: M.Schema;\n    readonly options: CompilerOptions;\n    readonly embeddedType: Item;\n\n    readonly literals = new DictionaryMap<M.InputEmbedded, string>();\n    readonly preamble: Item[] = [];\n    readonly typedefs: Item[] = [];\n    readonly functiondefs: Item[] = [];\n    readonly imports = new KeyedSet<M.InputEmbedded, [M.ModulePath, string, string, string]>();\n\n    constructor(\n        env: M.Environment,\n        modulePath: M.ModulePath,\n        schema: M.Schema,\n        options: CompilerOptions,\n    ) {\n        this.env = env;\n        this.modulePath = modulePath;\n        this.schema = schema;\n        this.options = options;\n        switch (schema.embeddedType._variant) {\n            case 'false':\n                this.embeddedType = '_.GenericEmbedded';\n                break;\n            case 'Ref': {\n                const t = this.resolver()(schema.embeddedType.value);\n                this.embeddedType = t.typeName;\n                break;\n            }\n        }\n    }\n\n    literal(v: M.Input): Item {\n        let varname = this.literals.get(v);\n        if (varname === void 0) {\n            varname = M.jsId('$' + stringify(v), () => '__lit' + this.literals.size);\n            this.literals.set(v, varname);\n        }\n        return varname;\n    }\n\n    derefPattern(p: M.Definition, refCount = 0): M.Definition {\n        if (refCount > RECURSION_LIMIT) {\n            throw new Error('Recursion limit exceeded');\n        }\n        if (p._variant === 'Pattern' &&\n            p.value._variant === 'SimplePattern' &&\n            p.value.value._variant === 'Ref')\n        {\n            return this.lookup(p.value.value.value,\n                               (p, _t) => this.derefPattern(p, refCount + 1),\n                               ((_modPath, _modId, _modFile, _modExpr, pp, _tt) =>\n                                   this.derefPattern(pp ?? p, refCount + 1)));\n        } else {\n            return p;\n        }\n    }\n\n    definePreamble(i: Item): void {\n        this.preamble.push(i);\n    }\n\n    defineType(f: Item): void {\n        this.typedefs.push(f);\n    }\n\n    defineFunctions(definitionName: string, f: (ctx: FunctionContext) => Item[]): void {\n        this.functiondefs.push(... f(new FunctionContext(this, definitionName)));\n    }\n\n    resolver(modulePath?: M.ModulePath): (ref: M.Ref) => RefType {\n        return (ref) => this.lookup(\n            ref,\n            (_p, _t) => Type.ref(ref.name.description!, ref),\n            (modPath, modId, modFile, modExpr, _p, _t) => {\n                this.imports.add([modPath, modId, modFile, modExpr]);\n                return Type.ref(`${modId}${modExpr}.${ref.name.description!}`, ref);\n            },\n            modulePath);\n    }\n\n    lookupType(name: M.Ref, modulePath?: M.ModulePath): Type | null {\n        const t = this.lookup(\n            name,\n            (_p, t) => t,\n            (_modPath, _modId, _modFile, _modExpr, _p, t) => t,\n            modulePath);\n        return t ? t() : null;\n    }\n\n    lookup<R>(name: M.Ref,\n              kLocal: (p: M.Definition, t: () => Type) => R,\n              kOther: (modPath: M.ModulePath,\n                       modId: string,\n                       modFile: string,\n                       modExpr: string,\n                       p: M.Definition | null,\n                       t: (() => Type) | null) => R,\n              modulePath?: M.ModulePath)\n    : R {\n        const soughtModule = name.module.length ? name.module : (modulePath ?? this.modulePath);\n\n        const e = M.envLookup(this.env, soughtModule);\n        if (e !== null) {\n            const expr = (e.typescriptModuleExpr === null) ? '' : '.' + e.typescriptModuleExpr;\n            if (e.schema === null) {\n                // It's an artificial module, not from a schema. Assume the identifier is present.\n                return kOther(soughtModule,\n                              M.modsymFor(e),\n                              e.typescriptModulePath,\n                              expr,\n                              null,\n                              null);\n            } else {\n                const p = JsDictionary.get(e.schema.definitions, name.name);\n                if (p !== void 0) {\n                    let t = () => typeForDefinition(this.resolver(soughtModule), p);\n                    if (name.module.length) {\n                        return kOther(soughtModule,\n                                      M.modsymFor(e),\n                                      e.typescriptModulePath,\n                                      expr,\n                                      p,\n                                      t);\n                    } else {\n                        return kLocal(p, t);\n                    }\n                }\n            }\n        }\n\n        throw new SchemaSyntaxError(`Undefined reference: ${M.formatRef(name)}`, refPosition(name));\n    }\n\n    genericParameters(): Item {\n        return anglebrackets(seq('_embedded extends _.Embeddable = ', this.embeddedType));\n    }\n\n    genericParametersFor(t: Type): Item {\n        return this.hasEmbedded(t) ? this.genericParameters() : '';\n    }\n\n    genericArgs(): Item {\n        return `<_embedded>`;\n    }\n\n    genericArgsFor(t: Type): Item {\n        return this.hasEmbedded(t) ? this.genericArgs() : '';\n    }\n\n    hasEmbedded(t: Type): boolean {\n        const self = this;\n        const state = new WalkState(this.modulePath);\n\n        function walk(t: Type): boolean {\n            switch (t.kind) {\n                case 'union':\n                    for (const v of t.variants.values()) { if (walk(v)) return true; };\n                    return false;\n                case 'unit': return false;\n                case 'array': return walk(t.type);\n                case 'set': return true; // because ref to _embedded in renderType()\n                case 'dictionary': return true; // because ref to _embedded in renderType()\n                case 'ref': {\n                    if (t.ref === null) {\n                        switch (t.typeName) {\n                            case '_embedded': return true;\n                            case '_.Value': return true;\n                            default: return false;\n                        }\n                    } else {\n                        return state.cycleCheck(\n                            t.ref,\n                            ref => self.lookupType(ref, state.modulePath),\n                            t => t ? walk(t) : false,\n                            () => false);\n                    }\n                }\n                case 'record':\n                    for (const v of t.fields.values()) { if (walk(v)) return true; };\n                    return false;\n            }\n        }\n\n        return walk(t);\n    }\n}\n\nexport class FunctionContext {\n    readonly mod: ModuleContext;\n    readonly definitionName: string;\n\n    tempCounter = 0;\n    temps: Map<string, { type: Item, names: string[] }> = new Map();\n\n    captures: Capture[] = [];\n    variantName: string | undefined = void 0;\n\n    constructor(mod: ModuleContext, definitionName: string) {\n        this.mod = mod;\n        this.definitionName = definitionName;\n    }\n\n    gentempname(): string {\n        return '_tmp' + this.tempCounter++;\n    }\n\n    gentemp(vartype: Type = ANY_TYPE): string {\n        const typeitem = renderType(this.mod, vartype);\n        const typestr = formatItems([typeitem], Infinity);\n        const varname = this.gentempname();\n        let e = this.temps.get(typestr);\n        if (e === void 0) {\n            e = { type: typeitem, names: [] };\n            this.temps.set(typestr, e);\n        }\n        e.names.push(varname);\n        return varname;\n    }\n\n    block(f: () => Item[]): Item {\n        const oldTemps = this.temps;\n        this.temps = new Map();\n        const items = f();\n        const ts = this.temps;\n        this.temps = oldTemps;\n        return block(\n            ... Array.from(ts).map(([_typestr, { type, names }]) =>\n                seq(`let `, commas(... names), `: (`, type, `) | undefined`)),\n            ... items);\n    }\n\n    withCapture<R>(\n        fieldName: string | undefined,\n        valueType: SimpleType,\n        sourceExpr: string,\n        ks: (sourceExpr: string) => R,\n    ): R {\n        const shouldCapture = fieldName !== void 0 && valueType.kind !== 'unit';\n        if (shouldCapture) this.captures.push({ fieldName, sourceExpr });\n        const result = ks(sourceExpr);\n        if (shouldCapture) this.captures.pop();\n        return result;\n    }\n\n    convertCapture(\n        fieldName: string | undefined,\n        valueType: SimpleType,\n        sourceExpr: string,\n        ks: () => Item[],\n    ): Item {\n        return this.withCapture(fieldName, valueType, sourceExpr, sourceExpr =>\n            seq(`if (${sourceExpr} !== void 0) `, this.block(() => ks())));\n    }\n\n    buildCapturedCompound(dest: string): Item {\n        return seq(`${dest} = `, buildProduct(\n            this.definitionName, this.variantName, this.captures));\n    }\n}\n\nexport function buildProduct(\n    definitionName: string,\n    variant: string | undefined,\n    initializers: Capture[],\n): Item {\n    return braces(\n        ... variantInitFor(variant),\n        ... initializers.map(({ fieldName, sourceExpr }) => keyvalue(fieldName, sourceExpr)),\n        seq(`__as_preserve__() `, block(`return from${M.jsId(definitionName)}(this)`)),\n        seq(`__preserve_on__(e) { e.push(from${M.jsId(definitionName)}(this)); }`),\n        seq(`__preserve_text_on__(w) { w.push(from${M.jsId(definitionName)}(this)); }`),\n    );\n}\n\nexport class WalkState {\n    modulePath: M.ModulePath;\n    readonly seen: FlexSet<M.Ref>;\n\n    constructor(modulePath: M.ModulePath) {\n        this.modulePath = modulePath;\n        this.seen = new FlexSet(refCanonicalizer);\n    }\n\n    cycleCheck<E, R>(\n        r0: M.Ref,\n        step: (ref: M.Ref) => E,\n        ks: (e: E) => R,\n        kf: () => R,\n    ): R {\n        const r = M.Ref({\n            module: r0.module.length ? r0.module : this.modulePath,\n            name: r0.name\n        });\n        if (this.seen.has(r)) {\n            return kf();\n        } else {\n            this.seen.add(r);\n            const maybe_e = step(r);\n            const saved = this.modulePath;\n            this.modulePath = r.module;\n            const result = ks(maybe_e);\n            this.modulePath = saved;\n            return result;\n        }\n    }\n}\n\nfunction refCanonicalizer(r: M.Ref): string {\n    return stringify([... r.module, r.name]);\n}\n","export type Item = Emittable | string;\n\nexport const DEFAULT_WIDTH = 80;\n\nexport class Formatter {\n    width = DEFAULT_WIDTH;\n    indentDelta = '    ';\n    currentIndent = '\\n';\n    buffer: Array<string> = [];\n\n    get indentSize(): number { return this.indentDelta.length; }\n    set indentSize(n: number) { this.indentDelta = new Array(n + 1).join(' '); }\n\n    write(i: Item) {\n        if (typeof i === 'string') {\n            this.buffer.push(i);\n        } else {\n            i.writeOn(this);\n        }\n    }\n\n    newline() {\n        this.write(this.currentIndent);\n    }\n\n    toString(): string {\n        return this.buffer.join('');\n    }\n\n    withIndent(f: () => void): void {\n        const oldIndent = this.currentIndent;\n        try {\n            this.currentIndent = this.currentIndent + this.indentDelta;\n            f();\n        } finally {\n            this.currentIndent = oldIndent;\n        }\n    }\n\n    clone(): Formatter {\n        const f = Object.assign(new Formatter(), this);\n        f.buffer = [];\n        return f;\n    }\n}\n\nexport function formatItems(i: Item[], width = DEFAULT_WIDTH): string {\n    const f = new Formatter();\n    f.width = width;\n    i.forEach(i => f.write(i));\n    return f.toString();\n}\n\nexport interface Emittable {\n    writeOn(f: Formatter): void;\n}\n\nexport class Sequence implements Emittable {\n    items: Array<Item>;\n\n    constructor(items: Array<Item>) {\n        if (items.some(i => i === void 0)) throw new Error('aiee');\n        this.items = items;\n    }\n\n    get separator(): string { return ''; }\n    get terminator(): string { return ''; }\n\n    writeOn(f: Formatter): void {\n        let needSeparator = false;\n        this.items.forEach(i => {\n            if (needSeparator) {\n                f.write(this.separator);\n            } else {\n                needSeparator = true;\n            }\n            f.write(i);\n        });\n        f.write(this.terminator);\n    }\n}\n\nexport class CommaSequence extends Sequence {\n    get separator(): string { return ', '; }\n}\n\nexport abstract class Grouping extends CommaSequence {\n    abstract get open(): string;\n    abstract get close(): string;\n\n    writeHorizontally(f: Formatter): void {\n        f.write(this.open);\n        super.writeOn(f);\n        f.write(this.close);\n    }\n\n    writeVertically(f: Formatter): void {\n        f.write(this.open);\n        if (this.items.length > 0) {\n            f.withIndent(() => {\n                this.items.forEach((i, index) => {\n                    f.newline();\n                    f.write(i);\n                    const delim = index === this.items.length - 1 ? this.terminator : this.separator;\n                    f.write(delim.trimRight());\n                });\n            });\n            f.newline();\n        }\n        f.write(this.close);\n    }\n\n    writeOn(f: Formatter): void {\n        const g = f.clone();\n        this.writeHorizontally(g);\n        const s = g.toString();\n        if (s.length <= f.width) {\n            f.write(s);\n        } else {\n            this.writeVertically(f);\n        }\n    }\n}\n\nexport class Parens extends Grouping {\n    get open(): string { return '('; }\n    get close(): string { return ')'; }\n}\n\nexport class OperatorSequence extends Parens {\n    operator: string;\n\n    constructor(operator: string, items: Array<Item>) {\n        super(items);\n        this.operator = operator;\n    }\n\n    get separator(): string { return this.operator; }\n}\n\nexport class Brackets extends Grouping {\n    get open(): string { return '['; }\n    get close(): string { return ']'; }\n}\n\nexport class AngleBrackets extends Grouping {\n    get open(): string { return '<'; }\n    get close(): string { return '>'; }\n}\n\nexport class Braces extends Grouping {\n    get open(): string { return '{'; }\n    get close(): string { return '}'; }\n}\n\nexport class Block extends Braces {\n    get separator(): string { return '; ' }\n    get terminator(): string { return ';' }\n}\n\nexport const seq = (... items: Item[]) => new Sequence(items);\nexport const commas = (... items: Item[]) => new CommaSequence(items);\nexport const parens = (... items: Item[]) => new Parens(items);\nexport const opseq = (zero: string, op: string, ... items: Item[]) =>\n    (items.length === 0) ? zero : new OperatorSequence(op, items);\nexport const brackets = (... items: Item[]) => new Brackets(items);\nexport const anglebrackets = (... items: Item[]) => new AngleBrackets(items);\nexport const braces = (... items: Item[]) => new Braces(items);\nexport const block = (... items: Item[]) => {\n    if (items.length === 1 && items[0] instanceof Block) {\n        return items[0];\n    } else {\n        return new Block(items);\n    }\n}\nexport const fnblock = (... items: Item[]) => seq('((() => ', block(... items), ')())');\nexport const keyvalue = (k: string, v: Item) => seq(JSON.stringify(k), ': ', v);\n","import * as M from '../meta.js';\n\nexport type Type =\n    | { kind: 'union', variants: VariantMap } // zero: never\n    | SimpleType\n\nexport type SimpleType = FieldType | RecordType\n\nexport type FieldType =\n    | { kind: 'unit' }\n    | { kind: 'array', type: FieldType }\n    | { kind: 'set', type: FieldType }\n    | { kind: 'dictionary', key: FieldType, value: FieldType }\n    | RefType\n\nexport type RefType =\n    | { kind: 'ref', typeName: string, ref: M.Ref | null } // ref === null for base types\n\nexport type RecordType =\n    | { kind: 'record', fields: FieldMap }\n\nexport type VariantMap = Map<string, SimpleType>;\nexport type FieldMap = Map<string, FieldType>;\n\nexport namespace Type {\n    export const union = (variants: VariantMap): Type => ({ kind: 'union', variants });\n    export const unit = (): FieldType => ({ kind: 'unit' });\n    export const ref = (typeName: string, ref: M.Ref | null): RefType => (\n        { kind: 'ref', typeName, ref });\n    export const array = (type: FieldType): FieldType => ({ kind: 'array', type });\n    export const set = (type: FieldType): FieldType => ({ kind: 'set', type });\n    export const dictionary = (key: FieldType, value: FieldType): FieldType => (\n        { kind: 'dictionary', key, value });\n    export const record = (fields: FieldMap): RecordType => ({ kind: 'record', fields });\n}\n\nexport const ANY_TYPE: FieldType = Type.ref('_.Value', null);\n\nexport function isSymbolType(ty: FieldType): ty is { kind: 'ref', typeName: 'symbol', ref: null } {\n    return ty.kind === 'ref' && ty.typeName === 'symbol' && ty.ref === null;\n}\n","import { isSymbolType, SimpleType, Type } from \"./type.js\";\nimport { anglebrackets, braces, Item, keyvalue, opseq, seq } from \"./block.js\";\nimport { ModuleContext } from \"./context.js\";\n\nexport function variantInitFor(variantName: string | undefined) : Item[] {\n    return variantName === void 0 ? [] : [variantFor(variantName)];\n}\n\nexport function variantFor(variantName: string): Item {\n    return keyvalue('_variant', JSON.stringify(variantName));\n}\n\nfunction simpleTypeFields(ctxt: ModuleContext, t: SimpleType): Item[] {\n    switch (t.kind) {\n        case 'unit':\n            return [];\n        case 'ref':\n        case 'set':\n        case 'dictionary':\n        case 'array':\n            return [keyvalue('value', renderType(ctxt, t))];\n        case 'record':\n            return Array.from(t.fields).map(([nn, tt]) => keyvalue(nn, renderType(ctxt, tt)));\n        default:\n            ((_: never) => {})(t);\n            throw new Error(\"Unreachable\");\n    }\n}\n\nexport function renderVariant(\n    ctxt: ModuleContext,\n    [variantName, t]: [string, SimpleType],\n): Item {\n    let fields = simpleTypeFields(ctxt, t);\n    return braces(variantFor(variantName), ... fields);\n}\n\nexport function renderType(ctxt: ModuleContext, t: Type): Item {\n    switch (t.kind) {\n        case 'union': return opseq('never', ' | ', ...\n            Array.from(t.variants).flatMap(entry => renderVariant(ctxt, entry)));\n        case 'unit': return braces(... simpleTypeFields(ctxt, t));\n        case 'ref':\n            if (t.ref === null && t.typeName === '_embedded') {\n                return t.typeName;\n            } else {\n                return seq(t.typeName, ctxt.genericArgsFor(t));\n            }\n        case 'set': return seq('_.EncodableSet', anglebrackets(\n            '_embedded',\n            renderType(ctxt, t.type)));\n        case 'dictionary':\n            if (isSymbolType(t.key)) {\n                return seq('_.JsDictionary', anglebrackets(renderType(ctxt, t.value)));\n            } else {\n                return seq('_.EncodableDictionary', anglebrackets(\n                    '_embedded',\n                    renderType(ctxt, t.key),\n                    renderType(ctxt, t.value)));\n            }\n        case 'array': return seq('Array', anglebrackets(renderType(ctxt, t.type)));\n        case 'record': return braces(... simpleTypeFields(ctxt, t));\n        default:\n            ((_: never) => {})(t);\n            throw new Error(\"Unreachable\");\n    }\n}\n\nexport function renderTypeWithConversionMixins(ctxt: ModuleContext, t: Type): Item {\n    if (t.kind === 'unit' || t.kind === 'record' || t.kind === 'union') {\n        return opseq('any', ' & ',\n                     renderType(ctxt, t),\n                     seq('_.Preservable', ctxt.hasEmbedded(t) ? ctxt.genericArgs() : '<any>'),\n                     seq('_.PreserveWritable', ctxt.hasEmbedded(t) ? ctxt.genericArgs() : '<any>'),\n                     braces(seq('__as_preserve__',\n                                ctxt.hasEmbedded(t) ? '' : ctxt.genericParameters(),\n                                '()',\n                                ': _.Value', ctxt.genericArgs())));\n    } else {\n        return renderType(ctxt, t);\n    }\n}\n","import * as M from \"../meta.js\";\nimport { ANY_TYPE, FieldType, FieldMap, SimpleType, Type } from \"./type.js\";\n\nexport type RefResolver = (ref: M.Ref) => FieldType;\n\nexport function typeForDefinition(resolver: RefResolver, d: M.Definition): Type {\n    switch (d._variant) {\n        case 'or':\n            return Type.union(\n                new Map([d.pattern0, d.pattern1, ... d.patternN].map(a =>\n                    [a.variantLabel, typeFor(resolver, a.pattern)])));\n        case 'and':\n            return typeForIntersection(resolver, [d.pattern0, d.pattern1, ... d.patternN]);\n        case 'Pattern':\n            return typeFor(resolver, d.value);\n    }\n}\n\nexport function typeForIntersection(resolver: RefResolver, ps: M.NamedPattern[]): SimpleType {\n    const fs = new Map();\n    ps.forEach(p => gatherFields(fs, resolver, p));\n    return fs.size > 0 ? Type.record(fs) : Type.unit();\n}\n\nexport function typeFor(resolver: RefResolver, p: M.Pattern): SimpleType {\n    if (p._variant === 'SimplePattern') {\n        return simpleType(resolver, p.value);\n    } else {\n        return typeForIntersection(resolver, [M.NamedPattern.anonymous(p)]);\n    }\n}\n\nexport function simpleType(resolver: RefResolver, p: M.SimplePattern): FieldType {\n    switch (p._variant) {\n        case 'any':\n            return ANY_TYPE;\n        case 'atom':\n            switch (p.atomKind._variant) {\n                case 'Boolean': return Type.ref(`boolean`, null);\n                case 'Double': return Type.ref(`number`, null);\n                case 'SignedInteger': return Type.ref(`number`, null);\n                case 'String': return Type.ref(`string`, null);\n                case 'ByteString': return Type.ref(`_.Bytes`, null);\n                case 'Symbol': return Type.ref(`symbol`, null);\n            }\n        case 'embedded':\n            return Type.ref(`_embedded`, null);\n        case 'lit':\n            return Type.unit();\n        case 'seqof':\n            return Type.array(simpleType(resolver, p.pattern));\n        case 'setof':\n            return Type.set(simpleType(resolver, p.pattern));\n        case 'dictof':\n            return Type.dictionary(simpleType(resolver, p.key), simpleType(resolver, p.value));\n        case 'Ref':\n            return resolver(p.value);\n        default:\n            ((_p: never) => {})(p);\n            throw new Error(\"Unreachable\");\n    }\n}\n\nfunction compoundFields(fs: FieldMap, resolver: RefResolver, p: M.CompoundPattern): void {\n    switch (p._variant) {\n        case 'rec':\n            gatherFields(fs, resolver, p.label);\n            gatherFields(fs, resolver, p.fields);\n            break;\n        case 'tuple':\n            p.patterns.forEach(pp => gatherFields(fs, resolver, pp));\n            break;\n        case 'tuplePrefix':\n            p.fixed.forEach(pp => gatherFields(fs, resolver, pp));\n            gatherFields(fs, resolver, M.promoteNamedSimplePattern(p.variable));\n            break;\n        case 'dict':\n            p.entries.forEach((n, _k) =>\n                gatherFields(fs, resolver, M.promoteNamedSimplePattern(n)));\n            break;\n        default:\n            ((_p: never) => {})(p);\n            throw new Error(\"Unreachable\");\n    }\n}\n\nfunction gatherFields(fs: FieldMap, resolver: RefResolver, n: M.NamedPattern): void {\n    if (n._variant === 'named') {\n        const t = simpleType(resolver, n.value.pattern);\n        if (t.kind !== 'unit') {\n            fs.set(n.value.name.description!, t);\n        }\n    } else if (n.value._variant === 'CompoundPattern') {\n        compoundFields(fs, resolver, n.value.value);\n    }\n}\n","import { FunctionContext } from \"./context.js\";\nimport * as M from '../meta.js';\nimport { Item, seq, parens, anglebrackets } from \"./block.js\";\nimport { simpleType, typeFor } from \"./gentype.js\";\nimport { ANY_TYPE, isSymbolType, Type } from \"./type.js\";\nimport { renderType } from \"./rendertype.js\";\n\nexport function converterForDefinition(\n    ctx: FunctionContext,\n    p: M.Definition,\n    src: string,\n    dest: string): Item[]\n{\n    switch (p._variant) {\n        case 'or': {\n            const alts = [p.pattern0, p.pattern1, ... p.patternN];\n            function loop(i: number): Item[] {\n                ctx.variantName = alts[i].variantLabel;\n                return [... converterForPattern(ctx, alts[i].pattern, src, dest),\n                        ... ((i < alts.length - 1)\n                            ? [seq(`if (${dest} === void 0) `, ctx.block(() => loop(i + 1)))]\n                            : [])];\n            }\n            return loop(0);\n        }\n        case 'and': {\n            const pcs = [p.pattern0, p.pattern1, ... p.patternN];\n            function loop(i: number): Item[] {\n                return (i < pcs.length)\n                    ? converterFor(ctx, pcs[i], src, () => loop(i + 1))\n                    : [ctx.buildCapturedCompound(dest)];\n            }\n            return loop(0);\n        }\n        case 'Pattern':\n            ctx.variantName = void 0;\n            return converterForPattern(ctx, p.value, src, dest);\n    }\n}\n\nfunction converterForPattern(\n    ctx: FunctionContext,\n    p: M.Pattern,\n    src: string,\n    dest: string): Item[]\n{\n    return converterFor(ctx, M.NamedPattern.anonymous(p), src, simpleValue => {\n        if (simpleValue === void 0) {\n            return [ctx.buildCapturedCompound(dest)];\n        } else if (ctx.variantName !== void 0) {\n            return ctx.withCapture('value', typeFor(ctx.mod.resolver(), p), simpleValue, () =>\n                [ctx.buildCapturedCompound(dest)]);\n        } else {\n            if (typeFor(ctx.mod.resolver(), p).kind === 'unit') {\n                return [ctx.buildCapturedCompound(dest)];\n            } else {\n                return [`${dest} = ${simpleValue}`];\n            }\n        }\n    });\n}\n\nfunction converterForTuple(ctx: FunctionContext,\n                           ps: M.NamedPattern[],\n                           src: string,\n                           knownArray: boolean,\n                           variablePattern: M.NamedSimplePattern | undefined,\n                           k: () => Item[]): Item[]\n{\n    function loop(i: number): Item[] {\n        if (i < ps.length) {\n            return converterFor(ctx, ps[i], `${src}[${i}]`, () => loop(i + 1));\n        } else {\n            if (variablePattern === void 0) {\n                return k();\n            } else {\n                const vN = ctx.gentemp(Type.array(ANY_TYPE));\n                return [ps.length > 0 ? `${vN} = ${src}.slice(${ps.length})` : `${vN} = ${src}`,\n                        ... converterFor(ctx, M.promoteNamedSimplePattern(variablePattern), vN, k, true)];\n            }\n        }\n    }\n\n    const lengthCheck = variablePattern === void 0\n        ? seq(` && ${src}.length >= ${ps.length}`)\n        : ((ps.length === 0) ? '' : seq(` && ${src}.length >= ${ps.length}`));\n\n    return knownArray\n        ? loop(0)\n        : [seq(`if (_.isSequence(${src})`, lengthCheck, `) `, ctx.block(() => loop(0)))];\n}\n\nfunction encoderForSimplePattern(\n    ctx: FunctionContext,\n    p: M.SimplePattern,\n): Item | null {\n    switch (p._variant) {\n        case 'Ref':\n            return ctx.mod.lookup(\n                p.value,\n                (_p, t) => `from${M.jsId(p.value.name.description!)}${ctx.mod.genericArgsFor(t())}`,\n                (modPath, modId, modFile, modExpr, _p, t) => {\n                    ctx.mod.imports.add([modPath, modId, modFile, modExpr]);\n                    return `${modId}${modExpr}.from${M.jsId(p.value.name.description!)}${t ? ctx.mod.genericArgsFor(t()) : ''}`;\n                });\n        case 'embedded':\n            return `_.embed`;\n        case 'seqof': {\n            const e = encoderForSimplePattern(ctx, p.pattern);\n            if (e === null) return null;\n            return seq(`vs => vs.map`, parens(e));\n        }\n        default:\n            return null;\n    }\n}\n\nfunction converterFor(\n    ctx: FunctionContext,\n    np: M.NamedPattern,\n    src: string,\n    ks: (dest: string | undefined) => Item[],\n    knownArray = false): Item[]\n{\n    let p = M.unnamePattern(np);\n    let maybeName = M.nameFor(np);\n\n    if (p._variant === 'SimplePattern') {\n        const destType = simpleType(ctx.mod.resolver(), p.value);\n        const dest = ctx.gentemp(destType);\n        return [... converterForSimple(ctx, p.value, src, dest, knownArray),\n                ctx.convertCapture(maybeName, destType, dest, () => ks(dest))];\n    } else {\n        return converterForCompound(ctx, p.value, src, knownArray, () => ks(void 0));\n    }\n}\n\nexport function converterForSimple(\n    ctx: FunctionContext,\n    p: M.SimplePattern,\n    src: string,\n    dest: string,\n    knownArray: boolean): Item[]\n{\n    switch (p._variant) {\n        case 'any':\n            return [`${dest} = ${src}`];\n        case 'atom': {\n            let test: Item;\n            let valexp: Item = `${src}`;\n            switch (p.atomKind._variant) {\n                case 'Boolean': test = `typeof ${src} === 'boolean'`; break;\n                case 'Double': test =`_.Float.isDouble(${src})`; valexp = `${src}.value`; break;\n                case 'SignedInteger': test = `typeof ${src} === 'number'`; break;\n                case 'String': test = `typeof ${src} === 'string'`; break;\n                case 'ByteString': test = `_.Bytes.isBytes(${src})`; break;\n                case 'Symbol': test = `typeof ${src} === 'symbol'`; break;\n            }\n            return [seq(`${dest} = `, test, ` ? `, valexp, ` : void 0`)];\n        }\n        case 'embedded':\n            return [`${dest} = _.isEmbedded<_embedded>(${src}) ? ${src} : void 0`];\n        case 'lit':\n            return [`${dest} = _.is(${src}, ${ctx.mod.literal(p.value)}) ? {} : void 0`];\n\n        case 'seqof': {\n            const kKnownArray = () => {\n                const v = ctx.gentempname();\n                return [\n                    seq(`${dest} = []`),\n                    seq(`for (const ${v} of ${src}) `, ctx.block(() => [\n                        ... converterFor(ctx, M.anonymousSimplePattern(p.pattern), v, vv =>\n                            [`${dest}.push(${vv})`, `continue`]),\n                        seq(`${dest} = void 0`),\n                        seq(`break`)]))];\n            };\n            if (knownArray) {\n                return kKnownArray();\n            } else {\n                return [`${dest} = void 0`,\n                        seq(`if (_.isSequence(${src})) `, ctx.block(kKnownArray))];\n            }\n        }\n        case 'setof':\n            return [`${dest} = void 0`,\n                    seq(`if (_.Set.isSet<_embedded>(${src})) `, ctx.block(() => {\n                        const vt = simpleType(ctx.mod.resolver(), p.pattern);\n                        const v = ctx.gentempname();\n                        return [\n                            seq(`${dest} = new _.EncodableSet`,\n                                anglebrackets('_embedded', renderType(ctx.mod, vt)),\n                                parens(encoderForSimplePattern(ctx, p.pattern) ?? `v => v`)),\n                            seq(`for (const ${v} of ${src}) `, ctx.block(() => [\n                                ... converterFor(ctx, M.anonymousSimplePattern(p.pattern), v, vv =>\n                                    [`${dest}.add(${vv})`, `continue`]),\n                                seq(`${dest} = void 0`),\n                                seq(`break`)]))];\n                    }))];\n        case 'dictof':\n            return [`${dest} = void 0`,\n                    seq(`if (_.Dictionary.isDictionary<_embedded>(${src})) `, ctx.block(() => {\n                        const srcMap = ctx.gentempname();\n                        const resolver = ctx.mod.resolver();\n                        const kt = simpleType(resolver, p.key);\n                        const vt = simpleType(resolver, p.value);\n                        const k = ctx.gentempname();\n                        const v = ctx.gentempname();\n                        const symbolKeyed = isSymbolType(kt);\n                        return [\n                            seq(`const ${srcMap} = new _.DictionaryMap(${src})`),\n                            (symbolKeyed\n                                ? seq(`${dest} = {}`)\n                                : seq(`${dest} = new _.EncodableDictionary`,\n                                      anglebrackets('_embedded', renderType(ctx.mod, kt), renderType(ctx.mod, vt)),\n                                      parens(encoderForSimplePattern(ctx, p.key) ?? `k => k`,\n                                             encoderForSimplePattern(ctx, p.value) ?? `v => v`))),\n                            seq(`for (const [${k}, ${v}] of ${srcMap}) `, ctx.block(() => [\n                                ... converterFor(ctx, M.anonymousSimplePattern(p.key), k, kk =>\n                                    converterFor(ctx, M.anonymousSimplePattern(p.value), v, vv =>\n                                        [\n                                            (symbolKeyed\n                                                ? `${dest}[${kk}.description!] = ${vv}`\n                                                : `${dest}.set(${kk}, ${vv})`),\n                                            `continue`\n                                        ])),\n                                seq(`${dest} = void 0`),\n                                seq(`break`)]))];\n                    }))];\n        case 'Ref':\n            return ctx.mod.lookup(\n                p.value,\n                (_p, _t) => [`${dest} = to${p.value.name.description!}(${src})`],\n                (modPath, modId, modFile, modExpr, _p, _t) => {\n                    ctx.mod.imports.add([modPath, modId, modFile, modExpr]);\n                    return [`${dest} = ${modId}${modExpr}.to${p.value.name.description!}${ctx.mod.genericArgs()}(${src})`];\n                });\n        default:\n            ((_p: never) => {})(p);\n            throw new Error(\"Unreachable\");\n    }\n}\n\nfunction converterForCompound(\n    ctx: FunctionContext,\n    p: M.CompoundPattern,\n    src: string,\n    knownArray: boolean,\n    ks: () => Item[]): Item[]\n{\n    switch (p._variant) {\n        case 'rec':\n            return [seq(`if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(${src})) `, ctx.block(() =>\n                converterFor(ctx, p.label, `${src}.label`, () =>\n                    converterFor(ctx, p.fields, src, ks, true))))];\n        case 'tuple':\n            return converterForTuple(ctx, p.patterns, src, knownArray, void 0, ks);\n        case 'tuplePrefix':\n            return converterForTuple(ctx, p.fixed, src, knownArray, p.variable, ks);\n        case 'dict': {\n            const srcMap = ctx.gentempname();\n            const entries = Array.from(p.entries);\n            function loop(i: number): Item[] {\n                if (i < entries.length) {\n                    const [k, n] = entries[i];\n                    const tmpSrc = ctx.gentemp();\n                    return [seq(`if ((${tmpSrc} = ${srcMap}.get(${ctx.mod.literal(k)})) !== void 0) `,\n                                ctx.block(() =>\n                                    converterFor(\n                                        ctx,\n                                        M.promoteNamedSimplePattern(n),\n                                        tmpSrc,\n                                        () => loop(i + 1))))];\n                } else {\n                    return ks();\n                }\n            }\n            return [seq(`if (_.Dictionary.isDictionary<_embedded>(${src})) `, ctx.block(() => [\n                seq(`const ${srcMap} = new _.DictionaryMap(${src})`),\n                ... loop(0)]))];\n        }\n        default:\n            ((_p: never) => {})(p);\n            throw new Error(\"Unreachable\");\n    }\n}\n","import * as M from '../meta.js';\nimport { block, braces, Item, parens, seq } from \"./block.js\";\nimport { FieldType, SimpleType, Type } from \"./type.js\";\nimport { renderType } from \"./rendertype.js\";\nimport { ModuleContext, buildProduct } from './context.js';\n\nexport function genConstructor(\n    mod: ModuleContext,\n    definitionName: string,\n    name: string,\n    variant: string | undefined,\n    arg: SimpleType,\n    resultType: Type,\n    resultTypeItem: Item,\n): Item[] {\n    const formals: Array<[string, FieldType]> = [];\n    let simpleValue = false;\n\n    function examine(t: FieldType, name: string): void {\n        if (t.kind !== 'unit') {\n            formals.push([name, t]);\n        }\n    }\n\n    if (arg.kind === 'record') {\n        arg.fields.forEach(examine);\n    } else {\n        examine(arg, 'value');\n        simpleValue = (variant === void 0) && (arg.kind !== 'unit');\n    }\n\n    const initializers = formals.map(([n, _t]) => ({ fieldName: n, sourceExpr: M.jsId(n) }));\n\n    const declArgs: Array<Item> = (formals.length > 1)\n        ? [seq(braces(...formals.map(f => M.jsId(f[0]))), ': ',\n               braces(...formals.map(f => seq(M.jsId(f[0]), ': ', renderType(mod, f[1])))))]\n        : formals.map(f => seq(M.jsId(f[0]), ': ', renderType(mod, f[1])));\n\n    return [\n        seq(`export function ${M.jsId(name)}`, mod.genericParametersFor(resultType),\n            parens(...declArgs),\n            ': ', resultTypeItem, ' ', block(\n                seq(`return `,\n                    (simpleValue\n                        ? 'value'\n                        : buildProduct(definitionName, variant, initializers))))),\n        seq(`${M.jsId(name)}.schema = function () `, block(\n            seq(`return `, braces(\n                `schema: _schema()`,\n                `imports: _imports`,\n                `definitionName: _.Symbol.for(${JSON.stringify(definitionName)})`,\n                ... (variant === void 0) ? [] : [`variant: _.Symbol.for(${JSON.stringify(variant)})`],\n            )))),\n    ];\n}\n","import * as M from '../meta.js';\nimport { block, brackets, Item, parens, seq } from './block.js';\nimport { FunctionContext } from \"./context.js\";\n\nexport function unconverterForDefinition(\n    ctx: FunctionContext,\n    def: M.Definition,\n    src: string): Item[]\n{\n    switch (def._variant) {\n        case 'or':\n            return [seq(`switch (${src}._variant) `, block(\n                ... [def.pattern0, def.pattern1, ... def.patternN].map(p =>\n                    seq(`case `, JSON.stringify(p.variantLabel), `: `, ctx.block(() => {\n                        const hasValueField = p.pattern._variant === 'SimplePattern';\n                        return [seq(`return `, unconverterFor(\n                            ctx, p.pattern, hasValueField ? `${src}.value` : src))];\n                    })))))];\n        case 'and':\n            return [seq(`return _.merge`, parens(\n                `(a, b) => (a === b) ? a : void 0`,\n                ... [def.pattern0, def.pattern1, ... def.patternN].flatMap(p => {\n                    if (p._variant === 'anonymous' && p.value._variant === 'SimplePattern') {\n                        return [];\n                    } else {\n                        return [unconverterForNamed(ctx, p, src)];\n                    }\n                })))];\n        case 'Pattern':\n            return [seq(`return `, unconverterFor(ctx, def.value, `${src}`))];\n    }\n}\n\nfunction unconverterFor(ctx: FunctionContext, p: M.Pattern, src: string): Item {\n    switch (p._variant) {\n        case 'SimplePattern':\n            return ((p: M.SimplePattern) => {\n                switch (p._variant) {\n                    case 'any':\n                        return `${src}`;\n                    case 'atom':\n                        switch (p.atomKind._variant) {\n                            case 'Double': return `_.Double(${src})`;\n                            default: return `${src}`;\n                        }\n                    case 'lit':\n                        return ctx.mod.literal(p.value);\n                    case 'embedded':\n                        return `${src}`;\n                    case 'seqof':\n                        return seq(`${src}.map(v => `,\n                                   unconverterFor(ctx, M.Pattern.SimplePattern(p.pattern), 'v'),\n                                   `)`);\n                    case 'setof':\n                        return seq(`new _.Set<_embedded>`, parens(seq(\n                            `_.Array.from(${src}.values()).map(v => `,\n                            unconverterFor(ctx, M.Pattern.SimplePattern(p.pattern), 'v'),\n                            `)`)));\n                    case 'dictof':\n                        return seq(`_.Dictionary.from<_embedded>`, parens(seq(\n                            `_.Array.from(`,\n                            M.isSymbolPattern(p.key) ? `_.JsDictionary.entries(${src})` : `${src}.entries()`,\n                            `).map(([k, v]) => `,\n                            brackets(\n                                unconverterFor(ctx, M.Pattern.SimplePattern(p.key), 'k'),\n                                unconverterFor(ctx, M.Pattern.SimplePattern(p.value), 'v')),\n                            `)`)));\n                    case 'Ref':\n                        return ctx.mod.lookup(\n                            p.value,\n                            (_p, _t) => `from${p.value.name.description!}${ctx.mod.genericArgs()}(${src})`,\n                            (modPath, modId, modFile, modExpr, _p, _t) => {\n                                ctx.mod.imports.add([modPath, modId, modFile, modExpr]);\n                                return `${modId}${modExpr}.from${p.value.name.description!}${ctx.mod.genericArgs()}(${src})`;\n                            });\n                }\n            })(p.value);\n        case 'CompoundPattern':\n            return ((p: M.CompoundPattern) => {\n                switch (p._variant) {\n                    case 'rec':\n                        return seq(`_.Record`, parens(\n                            unconverterForNamed(ctx, p.label, src),\n                            unconverterForNamed(ctx, p.fields, src)));\n                    case 'tuple':\n                        return brackets(... p.patterns.map(pp =>\n                            unconverterForNamed(ctx, pp, src)));\n                    case 'tuplePrefix': {\n                        const varExp =\n                            unconverterForNamed(ctx, M.promoteNamedSimplePattern(p.variable), src);\n                        if (p.fixed.length === 0) {\n                            return varExp;\n                        } else {\n                            return brackets(\n                                ... p.fixed.map(pp => unconverterForNamed(ctx, pp, src)),\n                                seq(`... `, varExp));\n                        }\n                    }\n                    case 'dict':\n                        return seq(`_.Dictionary.from<_embedded>`, parens(\n                            brackets(... Array.from(p.entries.entries()).map(([k, n]) =>\n                                brackets(\n                                    ctx.mod.literal(k),\n                                    unconverterForNamedSimple(ctx, n, src))))));\n                }\n            })(p.value);\n    }\n}\n\nfunction stepSource(src: string, key: string): string\n{\n    return `${src}[${JSON.stringify(key)}]`;\n}\n\nfunction unconverterForNamed(ctx: FunctionContext, p: M.NamedPattern, src: string): Item {\n    if (p._variant === 'named') {\n        const steppedSrc = stepSource(src, p.value.name.description!);\n        return unconverterFor(ctx, M.Pattern.SimplePattern(p.value.pattern), steppedSrc);\n    } else {\n        return unconverterFor(ctx, p.value, src);\n    }\n}\n\nfunction unconverterForNamedSimple(ctx: FunctionContext, p: M.NamedSimplePattern, src: string): Item {\n    if (p._variant === 'named') {\n        const steppedSrc = stepSource(src, p.value.name.description!);\n        return unconverterFor(ctx, M.Pattern.SimplePattern(p.value.pattern), steppedSrc);\n    } else {\n        return unconverterFor(ctx, M.Pattern.SimplePattern(p.value), src);\n    }\n}\n","import { Annotated, Bytes, Set, Fold, fold, Record, Tuple, Value, stringify, DictionaryMap } from \"@preserves/core\";\nimport { brackets, Item, parens, seq } from \"./block.js\";\nimport * as M from '../meta.js';\n\nexport function sourceCodeFor(v: Value<M.InputEmbedded>): Item {\n    return fold(v, {\n        boolean(b: boolean): Item { return b.toString(); },\n        double(f: number): Item { return f.toString(); },\n        integer(i: number): Item { return i.toString(); },\n        string(s: string): Item { return JSON.stringify(s); },\n        bytes(b: Bytes): Item {\n            return seq(`Uint8Array.from(`, brackets(... Array.from(b).map(b => b.toString())), `)`);\n        },\n        symbol(s: symbol): Item { return `_.Symbol.for(${JSON.stringify(s.description!)})`; },\n\n        record(r: Record<Value<M.InputEmbedded>, Tuple<Value<M.InputEmbedded>>, M.InputEmbedded>, k: Fold<M.InputEmbedded, Item>): Item {\n            return seq(`_.Record<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>`, parens(k(r.label), brackets(... r.map(k))));\n        },\n        array(a: Array<Value<M.InputEmbedded>>, k: Fold<M.InputEmbedded, Item>): Item {\n            return brackets(... a.map(k));\n        },\n        set(s: Set<M.InputEmbedded>, k: Fold<M.InputEmbedded, Item>): Item {\n            return seq('new _.Set<_.Value<_embedded>>', parens(brackets(... Array.from(s).map(k))));\n        },\n        dictionary(d: DictionaryMap<M.InputEmbedded>, k: Fold<M.InputEmbedded, Item>): Item {\n            return seq('_.Dictionary.from<_embedded>', parens(brackets(... Array.from(d).map(([kk,vv]) =>\n                brackets(k(kk), k(vv))))));\n        },\n\n        annotated(a: Annotated<M.InputEmbedded>, k: Fold<M.InputEmbedded, Item>): Item {\n            return seq('_.annotate<_embedded>', parens(k(a.item), ... a.annotations.map(k)));\n        },\n\n        embedded(t: M.InputEmbedded, _k: Fold<M.InputEmbedded, Item>): Item {\n            throw new Error(`Cannot emit source code for construction of embedded ${stringify(t)}`);\n        },\n    });\n}\n","import { EncodableDictionary, KeyedDictionary, Dictionary, Value, is, Record, Float, Bytes, isEmbedded, isSequence, Set, Atom, merge as plainMerge, Preservable, PreserveWritable, _iterMap, stringify, fromJS, Embeddable, DictionaryMap, JsDictionary } from '@preserves/core';\nimport { SchemaDefinition } from './reflection.js';\nimport * as M from './meta.js';\nimport * as H from './host.js';\n\nexport const UNIT: true = true;\n\nexport type Parsed<V extends Embeddable> = Value<V> | Parsed<V>[] | DictOf<V> | Bindings<V>;\nexport type TopParsed<V extends Embeddable> = Value<V> | Parsed<V>[] | DictOf<V> | TopBindings<V>;\n\nexport type Top<V extends Embeddable> =\n    & Preservable<V>\n    & PreserveWritable<V>\n    & { __as_preserve__(): Value<V> };\n\nexport type DictOf<V extends Embeddable> = EncodableDictionary<V, Parsed<V>, Parsed<V>>;\n\nexport type BindingName = string;\nexport type Bindings<V extends Embeddable> = { [key: BindingName]: Parsed<V> };\nexport type TopBindings<V extends Embeddable> = Bindings<V> & Top<V>;\n\nexport type SingleConstructor<V extends Embeddable> = ((input: any) => Parsed<V>) & { schema(): SchemaDefinition };\nexport type MultipleConstructors<V extends Embeddable> = { [key: string]: SingleConstructor<V> };\nexport type DefinitionConstructors<V extends Embeddable> = SingleConstructor<V> | MultipleConstructors<V>;\n\nexport namespace Bindings {\n    export function empty<V extends Embeddable>(): Bindings<V> {\n        return {};\n    }\n    export function single<V extends Embeddable>(k: BindingName, v: Parsed<V>): Bindings<V> {\n        const bs = empty<V>();\n        bs[k] = v;\n        return bs;\n    }\n    export function merge<V extends Embeddable>(... vs: Bindings<V>[]): Bindings<V> {\n        const acc = empty<V>();\n        for (const v of vs) {\n            Object.entries(v).forEach(([kw, vw]) => acc[kw] = vw);\n        }\n        return acc;\n    }\n}\n\nexport type DynField<V extends Embeddable> =\n    | { type: 'simple', value: Parsed<V> }\n    | { type: 'compound', values: Bindings<V> }\n;\nexport namespace DynField {\n    export function unwrap<V extends Embeddable>(f: DynField<V>): Parsed<V> {\n        if (f.type === 'simple') return f.value;\n        return f.values;\n    }\n    export function unwrap_compound<V extends Embeddable>(f: DynField<V>): Bindings<V> {\n        if (f.type === 'simple') throw new Error(\"Cannot unwrap DynField.simple to compound fields\");\n        return f.values;\n    }\n    export function simple<V extends Embeddable>(value: Parsed<V>): DynField<V> {\n        return { type: 'simple', value };\n    }\n    export function maybeSimple<V extends Embeddable>(value: Parsed<V> | null): DynField<V> {\n        return value === null ? compound(Bindings.empty()) : simple(value);\n    }\n    export function compound<V extends Embeddable>(values: Bindings<V>): DynField<V> {\n        return { type: 'compound', values };\n    }\n    export function promote<V extends Embeddable>(f: DynField<V>, key?: symbol): Bindings<V> {\n        if (f.type === 'compound') return f.values;\n        return key ? Bindings.single(M.jsId(key.description!), f.value) : Bindings.empty();\n    }\n}\n\nfunction optmap<A,B>(a: A | undefined, f: (a: A) => B): B | undefined {\n    if (a === void 0) return void 0;\n    return f(a);\n}\n\nexport type Unparseable<V extends Embeddable> = TopParsed<V>;\nexport type Unparser<V extends Embeddable> = (v: Parsed<V>) => Value<V>;\nexport type UnparserCompound<V extends Embeddable> = (v: Bindings<V>) => Value<V>;\n\nfunction attachSchema<V extends Embeddable>(\n    schema: M.Schema<V>,\n    name: symbol,\n    f: (input: any) => Parsed<V>,\n    variant?: symbol,\n): SingleConstructor<V> {\n    const g = f as SingleConstructor<V>;\n    g.schema = () => ({\n        schema: fromJS(schema),\n        imports: {}, // TODO\n        definitionName: name,\n        variant,\n    });\n    return g;\n}\n\nexport class SchemaInterpreter<V extends Embeddable> {\n    activeModule: M.ModulePath = [];\n    unparserCache: { [key: string]: [Unparser<V>] } = {};\n\n    constructor (\n        public env: M.Modules<V> = new KeyedDictionary(),\n        public mergeEmbeddeds: (a: V, b: V) => V | undefined = (_a, _b) => void 0,\n    ) {}\n\n    _withModule<R>(modulePath: M.ModulePath, f: () => R): R {\n        const saved = this.activeModule;\n        if (modulePath.length > 0) this.activeModule = modulePath;\n        try {\n            return f();\n        } finally {\n            if (modulePath.length > 0) this.activeModule = saved;\n        }\n    }\n\n    _findModule(modulePath: M.ModulePath): { resolved: M.ModulePath, schema: M.Schema<V> } {\n        const prefix = this.activeModule.slice();\n        while (true) {\n            const probe = [... prefix, ... modulePath];\n            const schema = this.env.get(probe);\n            if (schema !== void 0) {\n                return { resolved: probe, schema };\n            }\n            if (prefix.length === 0) {\n                throw new Error(`No such preserves-schema module: ${M.formatModulePath(modulePath)}, referred to in module ${M.formatModulePath(this.activeModule)}`);\n            }\n            prefix.pop();\n        }\n    }\n\n    _lookup<R>(\n        modulePath: M.ModulePath,\n        name: symbol,\n        f: (d: M.Definition<V>, schema: M.Schema<V>) => R,\n    ): R {\n        const { resolved, schema } = this._findModule(modulePath);\n        return this._withModule(resolved, () => {\n            const definition = JsDictionary.get(schema.definitions, name);\n            if (definition === void 0) {\n                throw new Error(`No such preserves-schema definition: ${[... modulePath, name].map(s => s.description!).join('.')}`);\n            }\n            return f(definition, schema);\n        });\n    }\n\n    makeTop(modulePath: M.ModulePath, name: symbol, fields: Bindings<V>): TopBindings<V> {\n        const result = fields as TopBindings<V>;\n        result.__as_preserve__ = () => this.unparser(modulePath, name)(result);\n        result.__preserve_on__ = function (e) { e.push(this.__as_preserve__()); };\n        result.__preserve_text_on__ = function (w) { w.push(this.__as_preserve__()); };\n        return result;\n    }\n\n    buildConstructor(\n        modulePath: M.ModulePath,\n        name: symbol,\n        schema: M.Schema<V>,\n        ty: H.Simple,\n        variant?: symbol,\n    ): SingleConstructor<V> {\n        const flatName = M.formatModulePath([\n            ... modulePath, name, ... (variant === void 0 ? [] : [variant])]);\n        const mkBase = (variant === void 0)\n            ? () => ({})\n            : () => ({ _variant: variant.description! });\n        switch (ty._variant) {\n            case 'Field': {\n                const tmp =\n                    ty.value._variant === 'unit'\n                    ? { [flatName]: () => this.makeTop(modulePath, name, mkBase()) }\n                    : (variant === void 0\n                        ? { [flatName]: (value: any) => value }\n                        : { [flatName]: (value: any) => this.makeTop(\n                            modulePath, name, { ... mkBase(), value }) });\n                return attachSchema(schema, name, tmp[flatName], variant);\n            }\n            case 'Record': {\n                const rec = ty.value;\n                if (rec.fields.length > 1) {\n                    const tmp = { [flatName]: (fields: Bindings<V>) =>\n                        this.makeTop(modulePath, name, { ... mkBase(), ... fields }) };\n                    return attachSchema(schema, name, tmp[flatName], variant);\n                } else {\n                    const tmp = { [flatName]: (field: Parsed<V>) =>\n                        this.makeTop(modulePath, name, {\n                            ... mkBase(),\n                            [M.jsId(rec.fields[0].name.description!)]: field,\n                        }) };\n                    return attachSchema(schema, name, tmp[flatName], variant);\n                }\n            }\n        }\n    }\n\n    definitionConstructor(\n        modulePath: M.ModulePath,\n        name: symbol,\n    ): DefinitionConstructors<V> {\n        return this._lookup(modulePath, name, (definition, schema): DefinitionConstructors<V> => {\n            const ty = H.definitionType(definition);\n            if (ty._variant === 'union') {\n                const multiple: MultipleConstructors<V> = {};\n                ty.variants.forEach(v => {\n                    multiple[M.jsId(v.label.description!)] = this.buildConstructor(\n                        modulePath, name, schema, v.type, v.label);\n                });\n                return multiple;\n            } else {\n                return this.buildConstructor(modulePath, name, schema, ty.value);\n            }\n        });\n    }\n\n    parse(\n        modulePath: M.ModulePath,\n        name: symbol,\n        input: Value<V>,\n    ): Unparseable<V> {\n        const v = this.tryParse(modulePath, name, input);\n        if (v === void 0) {\n            throw new TypeError(\n                `Invalid ${M.formatModulePath([... modulePath, name])}: ${stringify(input)}`)\n        }\n        return v;\n    }\n\n    tryParse(\n        modulePath: M.ModulePath,\n        name: symbol,\n        input: Value<V>,\n    ): Unparseable<V> | undefined {\n        return this._lookup(modulePath, name, definition =>\n            optmap(this.parseDefinition(definition, input), result0 => {\n                const ty = H.definitionType(definition);\n                if (ty._variant === 'union' || ty.value._variant === 'Record') {\n                    return this.makeTop(modulePath, name, result0 as Bindings<V>);\n                } else {\n                    if (ty.value.value._variant === 'unit') {\n                        return this.makeTop(modulePath, name, {});\n                    } else {\n                        return result0 as Exclude<Parsed<V>, Bindings<V>>;\n                    }\n                }\n            }));\n    }\n\n    parseDefinition(d: M.Definition<V>, input: Value<V>): Parsed<V> | undefined {\n        switch (d._variant) {\n            case 'or':\n                return this.parseNamedAlternative(d.pattern0, input) ??\n                    this.parseNamedAlternative(d.pattern1, input) ??\n                    (() => {\n                        for (const p of d.patternN) {\n                            const r = this.parseNamedAlternative(p, input);\n                            if (r !== void 0) return r;\n                        }\n                        return void 0;\n                    })();\n            case 'and': {\n                const rs = [this.parseNamedPattern(d.pattern0, input),\n                            this.parseNamedPattern(d.pattern1, input),\n                            ... d.patternN.map(p => this.parseNamedPattern(p, input))];\n                for (const r of rs) {\n                    if (r === void 0) return void 0;\n                }\n                return Bindings.merge(... rs as Bindings<V>[]);\n            }\n            case 'Pattern':\n                return optmap(this.parsePattern(d.value, input), DynField.unwrap);\n        }\n    }\n\n    parseNamedAlternative(p: M.NamedAlternative<V>, input: Value<V>): Bindings<V> | undefined {\n        return optmap(this.parsePattern(p.pattern, input), w => {\n            const result = DynField.promote(w, Symbol.for('value'));\n            result._variant = p.variantLabel;\n            return result;\n        });\n    }\n\n    parseNamedPattern(p: M.NamedPattern<V>, input: Value<V>): Bindings<V> | undefined {\n        switch (p._variant) {\n            case 'named':\n                return optmap(this.parseSimplePattern(p.value.pattern, input),\n                              w => DynField.promote(DynField.maybeSimple(w), p.value.name));\n            case 'anonymous':\n                return optmap(this.parsePattern(p.value, input),\n                              w => DynField.promote(w));\n        }\n    }\n\n    parseNamedSimplePattern(p: M.NamedSimplePattern<V>, input: Value<V>): DynField<V> | undefined {\n        switch (p._variant) {\n            case 'named':\n                return optmap(this.parseSimplePattern(p.value.pattern, input),\n                              w => DynField.compound(DynField.promote(DynField.maybeSimple(w), p.value.name)));\n            case 'anonymous':\n                return optmap(this.parseSimplePattern(p.value, input), DynField.maybeSimple<V>);\n        }\n    }\n\n    parseSimplePattern(p: M.SimplePattern<V>, input: Value<V>): Parsed<V> | null | undefined {\n        const inputIf = (b: boolean) => b ? input : void 0;\n        switch (p._variant) {\n            case 'any': return input;\n            case 'atom': switch (p.atomKind._variant) {\n                case 'Boolean': return inputIf(typeof input === 'boolean');\n                case 'Double': return inputIf(Float.isDouble(input));\n                case 'SignedInteger': return inputIf(typeof input === 'number' || typeof input === 'bigint');\n                case 'String': return inputIf(typeof input === 'string');\n                case 'ByteString': return inputIf(Bytes.isBytes(input));\n                case 'Symbol': return inputIf(typeof input === 'symbol');\n            }\n            case 'embedded': return isEmbedded(input) ? input : void 0;\n            case 'lit': return is(input, p.value) ? null : void 0;\n            case 'seqof': {\n                if (!isSequence(input)) return void 0;\n                const result: Parsed<V>[] = [];\n                for (const v of input) {\n                    const w = this.parseSimplePattern(p.pattern, v);\n                    if (w === void 0) return void 0;\n                    if (w !== null) result.push(w);\n                }\n                return result;\n            }\n            case 'setof': {\n                if (!Set.isSet<V>(input)) return void 0;\n                const result: Parsed<V>[] = [];\n                for (const v of input) {\n                    const w = this.parseSimplePattern(p.pattern, v);\n                    if (w === void 0) return void 0;\n                    if (w !== null) result.push(w);\n                }\n                return result;\n            }\n            case 'dictof': {\n                if (!Dictionary.isDictionary<V>(input)) return void 0;\n                if (M.isSymbolPattern(p.key)) {\n                    const result: Bindings<V> = {};\n                    for (const [k, v] of Dictionary.asMap<V>(input)) {\n                        const kw = this.parseSimplePattern(p.key, k);\n                        if (kw === void 0 || typeof kw !== 'symbol') return void 0;\n                        const vw = this.parseSimplePattern(p.value, v);\n                        if (vw === void 0) return void 0;\n                        result[kw.description!] = vw === null ? UNIT : vw;\n                    }\n                    return result;\n                } else {\n                    const result: DictOf<V> = new EncodableDictionary(\n                        this.unparserSimplePattern(p.key),\n                        this.unparserSimplePattern(p.value));\n                    for (const [k, v] of Dictionary.asMap<V>(input)) {\n                        const kw = this.parseSimplePattern(p.key, k);\n                        if (kw === void 0) return void 0;\n                        const vw = this.parseSimplePattern(p.value, v);\n                        if (vw === void 0) return void 0;\n                        result.set(kw === null ? UNIT : kw, vw === null ? UNIT : vw);\n                    }\n                    return result;\n                }\n            }\n            case 'Ref': return this.tryParse(p.value.module, p.value.name, input);\n        }\n    }\n\n    parseCompoundPattern(p: M.CompoundPattern<V>, input: Value<V>): Bindings<V> | undefined {\n        switch (p._variant) {\n            case 'rec':\n                if (!Record.isRecord<Value<V>, Array<Value<V>>, V>(input)) return void 0;\n                return optmap(this.parseNamedPattern(p.label, input.label),\n                              lw => optmap(this.parseNamedPattern(p.fields, Array.from(input)),\n                                           fsw => Bindings.merge(lw, fsw)));\n            case 'tuple': {\n                if (!isSequence(input)) return void 0;\n                if (input.length < p.patterns.length) return void 0;\n                let results: Bindings<V>[] = [];\n                for (let i = 0; i < p.patterns.length; i++) {\n                    const w = this.parseNamedPattern(p.patterns[i], input[i]);\n                    if (w === void 0) return void 0;\n                    results.push(w);\n                }\n                return Bindings.merge(... results);\n            }\n            case 'tuplePrefix': {\n                if (!isSequence(input)) return void 0;\n                if (input.length < p.fixed.length) return void 0;\n                let fixed_results: Bindings<V>[] = [];\n                for (let i = 0; i < p.fixed.length; i++) {\n                    const w = this.parseNamedPattern(p.fixed[i], input[i]);\n                    if (w === void 0) return void 0;\n                    fixed_results.push(w);\n                }\n                const remainder = input.slice(p.fixed.length);\n                return optmap(this.parseNamedSimplePattern(p.variable, remainder), vw => {\n                    const variable_results = DynField.unwrap_compound(vw);\n                    return Bindings.merge(variable_results, ... fixed_results);\n                });\n            }\n            case 'dict': {\n                const inputMap = Dictionary.asMap<V>(input);\n                if (!inputMap) return void 0;\n                const results: Bindings<V>[] = [];\n                for (const [key, vp] of p.entries) {\n                    const v = inputMap.get(key);\n                    if (v === void 0) return void 0;\n                    const vw = this.parseNamedSimplePattern(vp, v);\n                    if (vw === void 0) return void 0;\n                    results.push(DynField.unwrap_compound(vw));\n                }\n                return Bindings.merge(... results);\n            }\n        }\n    }\n\n    parsePattern(p: M.Pattern<V>, input: Value<V>): DynField<V> | undefined {\n        switch (p._variant) {\n            case 'SimplePattern':\n                return optmap(this.parseSimplePattern(p.value, input), DynField.maybeSimple);\n            case 'CompoundPattern':\n                return optmap(this.parseCompoundPattern(p.value, input), DynField.compound);\n        }\n    }\n\n    unparse(\n        modulePath: M.ModulePath,\n        name: symbol,\n        v: Unparseable<V>,\n    ): Value<V> {\n        return this.unparser(modulePath, name)(v);\n    }\n\n    unparser(modulePath: M.ModulePath, name: symbol): Unparser<V> {\n        return this._unparser(modulePath, name)[0];\n    }\n\n    _unparser(modulePath: M.ModulePath, name: symbol): [Unparser<V>] {\n        const key = [... modulePath.map(n => n.description!), name.description!].join('.');\n        if (!(key in this.unparserCache)) {\n            const cell: [Unparser<V>] = [null!];\n            this.unparserCache[key] = cell;\n            cell[0] = this._lookup(modulePath, name, p => this.unparserDefinition(p));\n        }\n        return this.unparserCache[key];\n    }\n\n    unparserDefinition(p: M.Definition<V>): Unparser<V> {\n        switch (p._variant) {\n            case 'or': {\n                const ups = [p.pattern0, p.pattern1, ... p.patternN].map(\n                    p => this.unparserNamedAlternative(p));\n                return v => {\n                    const bs = v as Bindings<V>;\n                    return ups.find(up => up[0] === bs._variant)![1](bs);\n                };\n            }\n            case 'and': {\n                const ups = [p.pattern0, p.pattern1, ... p.patternN].map(\n                    p => this.unparserNamedPattern(p));\n                return v => plainMerge(this.mergeEmbeddeds,\n                                       ups[0](v), ... ups.slice(1).map(up => up(v)));\n            }\n            case 'Pattern':\n                return this.unparserPattern(p.value);\n        }\n    }\n\n    unparserNamedAlternative(p: M.NamedAlternative<V>): [string, UnparserCompound<V>] {\n        const up = this.unparserPattern(p.pattern);\n        const ty = H.patternType(p.pattern);\n        switch (ty._variant) {\n            case 'Field': return [p.variantLabel, bs => up(bs['value'])];\n            case 'Record': return [p.variantLabel, up];\n        }\n    }\n\n    unparserNamedPattern(p: M.NamedPattern<V>): Unparser<V> {\n        switch (p._variant) {\n            case 'named': {\n                const up = this.unparserSimplePattern(p.value.pattern);\n                const key = M.jsId(p.value.name.description!);\n                return v => up((v as Bindings<V>)[key]);\n            }\n            case 'anonymous':\n                return this.unparserPattern(p.value);\n        }\n    }\n\n    unparserPattern(p: M.Pattern<V>): Unparser<V> {\n        switch (p._variant) {\n            case 'CompoundPattern': {\n                const up = this.unparserCompoundPattern(p.value);\n                return v => up(v as Bindings<V>);\n            }\n            case 'SimplePattern':\n                return this.unparserSimplePattern(p.value);\n        }\n    }\n\n    unparserSimplePattern(p: M.SimplePattern<V>): Unparser<V> {\n        switch (p._variant) {\n            case 'any': return v => v as Value<V>; // ?!\n            case 'atom': return v => v as Atom;\n            case 'embedded': return v => v as V;\n            case 'lit': return _v => p.value;\n            case 'seqof': {\n                const up = this.unparserSimplePattern(p.pattern);\n                return vs => (vs as Parsed<V>[]).map(up);\n            }\n            case 'setof': {\n                const up = this.unparserSimplePattern(p.pattern);\n                return vs => new Set<V>((vs as Parsed<V>[]).map(up));\n            }\n            case 'dictof': {\n                const kp = this.unparserSimplePattern(p.key);\n                const vp = this.unparserSimplePattern(p.value);\n                return vs => {\n                    const d = new DictionaryMap<V>();\n                    for (const [k, v] of\n                         (Map.isMap<Parsed<V>, Parsed<V>>(vs)\n                             ? vs.entries()\n                             : JsDictionary.entries(vs as Bindings<V>)))\n                    {\n                        d.set(kp(k), vp(v));\n                    }\n                    return M.isSymbolPattern(p.key) ? d.asJsDictionary() : d.asKeyedDictionary();\n                };\n            }\n            case 'Ref': {\n                const up = this._unparser(p.value.module, p.value.name);\n                return v => up[0](v as Bindings<V>);\n            }\n        }\n    }\n\n    unparserCompoundPattern(p: M.CompoundPattern<V>): UnparserCompound<V> {\n        switch (p._variant) {\n            case 'rec': {\n                const lp = this.unparserNamedPattern(p.label);\n                const fp = this.unparserNamedPattern(p.fields);\n                return bs => Record(lp(bs), fp(bs) as Value<V>[]);\n            }\n            case 'tuple': {\n                const ups = p.patterns.map(p => this.unparserNamedPattern(p));\n                return bs => ups.map(up => up(bs));\n            }\n            case 'tuplePrefix': {\n                const fixed = p.fixed.map(p => this.unparserNamedPattern(p));\n                const variable = this.unparserNamedSimplePattern(p.variable);\n                return bs => [... fixed.map(up => up(bs)), ... variable(bs) as Value<V>[]];\n            }\n            case 'dict': {\n                const ups: [Value<V>, Unparser<V>][] = Array.from(p.entries.entries()).map(\n                    ([key, vp]) => [key, this.unparserNamedSimplePattern(vp)]);\n                return bs => {\n                    const result = new DictionaryMap<V>();\n                    for (const [key, up] of ups) {\n                        result.set(key, up(bs));\n                    }\n                    return result.simplifiedValue();\n                };\n            }\n        }\n    }\n\n    unparserNamedSimplePattern(p: M.NamedSimplePattern<V>): Unparser<V> {\n        switch (p._variant) {\n            case 'named': {\n                const up = this.unparserSimplePattern(p.value.pattern);\n                const key = M.jsId(p.value.name.description!);\n                return v => up((v as Bindings<V>)[key]);\n            }\n            case 'anonymous':\n                return this.unparserSimplePattern(p.value);\n        }\n    }\n\n    moduleFor(modulePath: M.ModulePath): { [key: string]: any } | undefined {\n        const schema = this.env.get(modulePath);\n        if (schema === void 0) return void 0;\n        const mod: { [key: string]: any } = {};\n        JsDictionary.forEach(schema.definitions, (_d, n) => {\n            const definitionName = n.description!;\n            const definitionId = M.jsId(definitionName);\n            mod[`${definitionId}`] = this.definitionConstructor(modulePath, n);\n            mod[`from${definitionId}`] = this.unparser(modulePath, n);\n            mod[`to${definitionId}`] = (v: Value<V>) => this.tryParse(modulePath, n, v);\n            mod[`as${definitionId}`] = (v: Value<V>) => this.parse(modulePath, n, v);\n        });\n        return mod;\n    }\n\n    moduleTree(tree: { [key: string]: any } = {}): { [key: string]: any } {\n        for (const modulePath of this.env.keys()) {\n            let container = tree;\n            modulePath.slice(0, -1).forEach(n => {\n                if (!(n.description! in container)) container[n.description!] = {};\n                container = container[n.description!];\n            });\n            container[modulePath[modulePath.length - 1].description!] =\n                this.moduleFor(modulePath)!;\n        }\n        return tree;\n    }\n}\n","import { compare, Embeddable } from '@preserves/core';\n\nimport * as M from './meta.js';\nimport * as H from './gen/host.js';\n\nexport * from './gen/host.js';\n\nexport function definitionType<V extends Embeddable>(p: M.Definition<V>): H.Definition {\n    switch (p._variant) {\n        case 'or': return H.Definition.union([p.pattern0, p.pattern1, ... p.patternN].map(p =>\n            H.Variant({ label: Symbol.for(p.variantLabel), type: patternType(p.pattern) })));\n        case 'and':\n            return H.Definition.Simple(productType([p.pattern0, p.pattern1, ... p.patternN]));\n        case 'Pattern':\n            return H.Definition.Simple(patternType(p.value));\n    }\n}\n\nexport function patternType<V extends Embeddable>(p: M.Pattern<V>): H.Simple {\n    switch (p._variant) {\n        case 'SimplePattern':\n            return H.Simple.Field(fieldType(p.value));\n        case 'CompoundPattern':\n            return productType([M.NamedPattern.anonymous(p)]);\n    }\n}\n\nexport function fieldType<V extends Embeddable>(p: M.SimplePattern<V>): H.Field {\n    switch (p._variant) {\n        case 'any': return H.Field.any();\n        case 'atom': return H.Field.AtomKind(p.atomKind);\n        case 'embedded': return H.Field.embedded();\n        case 'lit': return H.Field.unit();\n        case 'seqof': return H.Field.array(fieldType(p.pattern));\n        case 'setof': return H.Field.set(fieldType(p.pattern));\n        case 'dictof': return H.Field.map({ key: fieldType(p.key), value: fieldType(p.value) });\n        case 'Ref': return H.Field.ref(p.value);\n    }\n}\n\nexport function productType<V extends Embeddable>(ps: M.NamedPattern<V>[]): H.Simple {\n    const gathered: H.NamedField[] = [];\n    ps.forEach(p => gather(p, gathered));\n    if (gathered.length === 0) return H.Simple.Field(H.Field.unit());\n    return H.Simple.Record(H.Record(gathered));\n}\n\nfunction promote<V extends Embeddable>(p: M.NamedSimplePattern<V>): M.NamedPattern<V> {\n    if (p._variant === 'named') return p;\n    return M.NamedPattern.anonymous(M.Pattern.SimplePattern(p.value));\n}\n\nfunction gather<V extends Embeddable>(p: M.NamedPattern<V>, into: H.NamedField[]) {\n    switch (p._variant) {\n        case 'named': {\n            const t = fieldType(p.value.pattern);\n            if (t._variant !== 'unit') into.push(H.NamedField({ name: p.value.name, type: t }));\n            break;\n        }\n        case 'anonymous': {\n            if (p.value._variant === 'SimplePattern') return;\n            const q = p.value.value;\n            switch (q._variant) {\n                case 'rec':\n                    gather(q.label, into);\n                    gather(q.fields, into);\n                    break;\n                case 'tuple':\n                    q.patterns.forEach(p => gather(p, into));\n                    break;\n                case 'tuplePrefix':\n                    q.fixed.forEach(p => gather(p, into));\n                    gather(promote(q.variable), into);\n                    break;\n                case 'dict': {\n                    const items = Array.from(q.entries.entries()).sort((a, b) => compare(a[0], b[0]));\n                    items.forEach(([_key, p]) => gather(promote(p), into));\n                    break;\n                }\n            }\n        }\n    }\n}\n","import * as _ from \"@preserves/core\";\nimport * as _i_schema from \"./schema.js\";\n\nexport const $any = _.Symbol.for(\"any\");\nexport const $array = _.Symbol.for(\"array\");\nexport const $embedded = _.Symbol.for(\"embedded\");\nexport const $map = _.Symbol.for(\"map\");\nexport const $rec = _.Symbol.for(\"rec\");\nexport const $ref = _.Symbol.for(\"ref\");\nexport const $set = _.Symbol.for(\"set\");\nexport const $union = _.Symbol.for(\"union\");\nexport const $unit = _.Symbol.for(\"unit\");\n\nlet __schema: _.Value | null = null;\n\nexport function _schema() {\n    if (__schema === null) {\n        __schema = _.decode<_.GenericEmbedded>(_.Bytes.fromHex(\"b4b306736368656d61b7b30776657273696f6eb00101b30b646566696e6974696f6e73b7b3054669656c64b4b3026f72b5b5b104756e6974b4b3036c6974b304756e69748484b5b103616e79b4b3036c6974b303616e798484b5b108656d626564646564b4b3036c6974b308656d6265646465648484b5b1056172726179b4b303726563b4b3036c6974b305617272617984b4b3057475706c65b5b4b3056e616d6564b307656c656d656e74b4b303726566b584b3054669656c64848484848484b5b103736574b4b303726563b4b3036c6974b30373657484b4b3057475706c65b5b4b3056e616d6564b307656c656d656e74b4b303726566b584b3054669656c64848484848484b5b1036d6170b4b303726563b4b3036c6974b3036d617084b4b3057475706c65b5b4b3056e616d6564b3036b6579b4b303726566b584b3054669656c648484b4b3056e616d6564b30576616c7565b4b303726566b584b3054669656c64848484848484b5b103726566b4b303726563b4b3036c6974b30372656684b4b3057475706c65b5b4b3056e616d6564b3046e616d65b4b303726566b5b306736368656d6184b303526566848484848484b5b10841746f6d4b696e64b4b303726566b5b306736368656d6184b30841746f6d4b696e6484848484b3065265636f7264b4b303726563b4b3036c6974b30372656384b4b3057475706c65b5b4b3056e616d6564b3066669656c6473b4b3057365716f66b4b303726566b584b30a4e616d65644669656c64848484848484b30653696d706c65b4b3026f72b5b5b1054669656c64b4b303726566b584b3054669656c648484b5b1065265636f7264b4b303726566b584b3065265636f726484848484b30756617269616e74b4b3057475706c65b5b4b3056e616d6564b3056c6162656cb4b30461746f6db30653796d626f6c8484b4b3056e616d6564b30474797065b4b303726566b584b30653696d706c6584848484b30a446566696e6974696f6eb4b3026f72b5b5b105756e696f6eb4b303726563b4b3036c6974b305756e696f6e84b4b3057475706c65b5b4b3056e616d6564b30876617269616e7473b4b3057365716f66b4b303726566b584b30756617269616e7484848484848484b5b10653696d706c65b4b303726566b584b30653696d706c6584848484b30a4e616d65644669656c64b4b3057475706c65b5b4b3056e616d6564b3046e616d65b4b30461746f6db30653796d626f6c8484b4b3056e616d6564b30474797065b4b303726566b584b3054669656c648484848484b30c656d62656464656454797065808484\"));\n    };\n    return __schema;\n}\n\nexport const _imports = {\"schema\": _i_schema}\n\n\nexport type Definition = (\n    (\n        {\"_variant\": \"union\", \"variants\": Array<Variant>} |\n        {\"_variant\": \"Simple\", \"value\": Simple}\n    ) &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\nexport type Variant = (\n    {\"label\": symbol, \"type\": Simple} &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\nexport type Simple = (\n    (\n        {\"_variant\": \"Field\", \"value\": Field} |\n        {\"_variant\": \"Record\", \"value\": Record}\n    ) &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\nexport type Record = (\n    {\"fields\": Array<NamedField>} &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\nexport type NamedField = (\n    {\"name\": symbol, \"type\": Field} &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\nexport type Field = (\n    (\n        {\"_variant\": \"unit\"} |\n        {\"_variant\": \"any\"} |\n        {\"_variant\": \"embedded\"} |\n        {\"_variant\": \"array\", \"element\": Field} |\n        {\"_variant\": \"set\", \"element\": Field} |\n        {\"_variant\": \"map\", \"key\": Field, \"value\": Field} |\n        {\"_variant\": \"ref\", \"name\": _i_schema.Ref} |\n        {\"_variant\": \"AtomKind\", \"value\": _i_schema.AtomKind}\n    ) &\n    _.Preservable<any> &\n    _.PreserveWritable<any> &\n    {\n        __as_preserve__<_embedded extends _.Embeddable = _.GenericEmbedded>(): _.Value<_embedded>\n    }\n);\n\n\nexport namespace Definition {\n    export function union(variants: Array<Variant>): Definition {\n        return {\n            \"_variant\": \"union\",\n            \"variants\": variants,\n            __as_preserve__() {return fromDefinition(this);},\n            __preserve_on__(e) { e.push(fromDefinition(this)); },\n            __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n        };\n    };\n    union.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Definition\"),\n            variant: _.Symbol.for(\"union\")\n        };\n    };\n    export function Simple(value: Simple): Definition {\n        return {\n            \"_variant\": \"Simple\",\n            \"value\": value,\n            __as_preserve__() {return fromDefinition(this);},\n            __preserve_on__(e) { e.push(fromDefinition(this)); },\n            __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n        };\n    };\n    Simple.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Definition\"),\n            variant: _.Symbol.for(\"Simple\")\n        };\n    };\n}\n\nexport function Variant({label, type}: {label: symbol, type: Simple}): Variant {\n    return {\n        \"label\": label,\n        \"type\": type,\n        __as_preserve__() {return fromVariant(this);},\n        __preserve_on__(e) { e.push(fromVariant(this)); },\n        __preserve_text_on__(w) { w.push(fromVariant(this)); }\n    };\n}\n\nVariant.schema = function () {\n    return {schema: _schema(), imports: _imports, definitionName: _.Symbol.for(\"Variant\")};\n}\n\nexport namespace Simple {\n    export function Field(value: Field): Simple {\n        return {\n            \"_variant\": \"Field\",\n            \"value\": value,\n            __as_preserve__() {return fromSimple(this);},\n            __preserve_on__(e) { e.push(fromSimple(this)); },\n            __preserve_text_on__(w) { w.push(fromSimple(this)); }\n        };\n    };\n    Field.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Simple\"),\n            variant: _.Symbol.for(\"Field\")\n        };\n    };\n    export function Record(value: Record): Simple {\n        return {\n            \"_variant\": \"Record\",\n            \"value\": value,\n            __as_preserve__() {return fromSimple(this);},\n            __preserve_on__(e) { e.push(fromSimple(this)); },\n            __preserve_text_on__(w) { w.push(fromSimple(this)); }\n        };\n    };\n    Record.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Simple\"),\n            variant: _.Symbol.for(\"Record\")\n        };\n    };\n}\n\nexport function Record(fields: Array<NamedField>): Record {\n    return {\n        \"fields\": fields,\n        __as_preserve__() {return fromRecord(this);},\n        __preserve_on__(e) { e.push(fromRecord(this)); },\n        __preserve_text_on__(w) { w.push(fromRecord(this)); }\n    };\n}\n\nRecord.schema = function () {\n    return {schema: _schema(), imports: _imports, definitionName: _.Symbol.for(\"Record\")};\n}\n\nexport function NamedField({name, type}: {name: symbol, type: Field}): NamedField {\n    return {\n        \"name\": name,\n        \"type\": type,\n        __as_preserve__() {return fromNamedField(this);},\n        __preserve_on__(e) { e.push(fromNamedField(this)); },\n        __preserve_text_on__(w) { w.push(fromNamedField(this)); }\n    };\n}\n\nNamedField.schema = function () {\n    return {\n        schema: _schema(),\n        imports: _imports,\n        definitionName: _.Symbol.for(\"NamedField\")\n    };\n}\n\nexport namespace Field {\n    export function unit(): Field {\n        return {\n            \"_variant\": \"unit\",\n            __as_preserve__() {return fromField(this);},\n            __preserve_on__(e) { e.push(fromField(this)); },\n            __preserve_text_on__(w) { w.push(fromField(this)); }\n        };\n    };\n    unit.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Field\"),\n            variant: _.Symbol.for(\"unit\")\n        };\n    };\n    export function any(): Field {\n        return {\n            \"_variant\": \"any\",\n            __as_preserve__() {return fromField(this);},\n            __preserve_on__(e) { e.push(fromField(this)); },\n            __preserve_text_on__(w) { w.push(fromField(this)); }\n        };\n    };\n    any.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Field\"),\n            variant: _.Symbol.for(\"any\")\n        };\n    };\n    export function embedded(): Field {\n        return {\n            \"_variant\": \"embedded\",\n            __as_preserve__() {return fromField(this);},\n            __preserve_on__(e) { e.push(fromField(this)); },\n            __preserve_text_on__(w) { w.push(fromField(this)); }\n        };\n    };\n    embedded.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Field\"),\n            variant: _.Symbol.for(\"embedded\")\n        };\n    };\n    export function array(element: Field): Field {\n        return {\n            \"_variant\": \"array\",\n            \"element\": element,\n            __as_preserve__() {return fromField(this);},\n            __preserve_on__(e) { e.push(fromField(this)); },\n            __preserve_text_on__(w) { w.push(fromField(this)); }\n        };\n    };\n    array.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Field\"),\n            variant: _.Symbol.for(\"array\")\n        };\n    };\n    export function set(element: Field): Field {\n        return {\n            \"_variant\": \"set\",\n            \"element\": element,\n            __as_preserve__() {return fromField(this);},\n            __preserve_on__(e) { e.push(fromField(this)); },\n            __preserve_text_on__(w) { w.push(fromField(this)); }\n        };\n    };\n    set.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Field\"),\n            variant: _.Symbol.for(\"set\")\n        };\n    };\n    export function map({key, value}: {key: Field, value: Field}): Field {\n        return {\n            \"_variant\": \"map\",\n            \"key\": key,\n            \"value\": value,\n            __as_preserve__() {return fromField(this);},\n            __preserve_on__(e) { e.push(fromField(this)); },\n            __preserve_text_on__(w) { w.push(fromField(this)); }\n        };\n    };\n    map.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Field\"),\n            variant: _.Symbol.for(\"map\")\n        };\n    };\n    export function ref(name: _i_schema.Ref): Field {\n        return {\n            \"_variant\": \"ref\",\n            \"name\": name,\n            __as_preserve__() {return fromField(this);},\n            __preserve_on__(e) { e.push(fromField(this)); },\n            __preserve_text_on__(w) { w.push(fromField(this)); }\n        };\n    };\n    ref.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Field\"),\n            variant: _.Symbol.for(\"ref\")\n        };\n    };\n    export function AtomKind(value: _i_schema.AtomKind): Field {\n        return {\n            \"_variant\": \"AtomKind\",\n            \"value\": value,\n            __as_preserve__() {return fromField(this);},\n            __preserve_on__(e) { e.push(fromField(this)); },\n            __preserve_text_on__(w) { w.push(fromField(this)); }\n        };\n    };\n    AtomKind.schema = function () {\n        return {\n            schema: _schema(),\n            imports: _imports,\n            definitionName: _.Symbol.for(\"Field\"),\n            variant: _.Symbol.for(\"AtomKind\")\n        };\n    };\n}\n\nexport function asDefinition<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Definition {\n    let result = toDefinition(v);\n    if (result === void 0) throw new TypeError(`Invalid Definition: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toDefinition<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Definition {\n    let result: undefined | Definition;\n    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n        let _tmp0: ({}) | undefined;\n        _tmp0 = _.is(v.label, $union) ? {} : void 0;\n        if (_tmp0 !== void 0) {\n            let _tmp1: (Array<Variant>) | undefined;\n            _tmp1 = void 0;\n            if (_.isSequence(v[0])) {\n                _tmp1 = [];\n                for (const _tmp2 of v[0]) {\n                    let _tmp3: (Variant) | undefined;\n                    _tmp3 = toVariant(_tmp2);\n                    if (_tmp3 !== void 0) {_tmp1.push(_tmp3); continue;};\n                    _tmp1 = void 0;\n                    break;\n                };\n            };\n            if (_tmp1 !== void 0) {\n                result = {\n                    \"_variant\": \"union\",\n                    \"variants\": _tmp1,\n                    __as_preserve__() {return fromDefinition(this);},\n                    __preserve_on__(e) { e.push(fromDefinition(this)); },\n                    __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n                };\n            };\n        };\n    };\n    if (result === void 0) {\n        let _tmp4: (Simple) | undefined;\n        _tmp4 = toSimple(v);\n        if (_tmp4 !== void 0) {\n            result = {\n                \"_variant\": \"Simple\",\n                \"value\": _tmp4,\n                __as_preserve__() {return fromDefinition(this);},\n                __preserve_on__(e) { e.push(fromDefinition(this)); },\n                __preserve_text_on__(w) { w.push(fromDefinition(this)); }\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace Definition {export const __from_preserve__ = toDefinition;}\n\nexport function fromDefinition<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Definition): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"union\": {return _.Record($union, [_v[\"variants\"].map(v => fromVariant<_embedded>(v))]);};\n        case \"Simple\": {return fromSimple<_embedded>(_v.value);};\n    };\n}\n\nexport function asVariant<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Variant {\n    let result = toVariant(v);\n    if (result === void 0) throw new TypeError(`Invalid Variant: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toVariant<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Variant {\n    let result: undefined | Variant;\n    if (_.isSequence(v) && v.length >= 2) {\n        let _tmp0: (symbol) | undefined;\n        _tmp0 = typeof v[0] === 'symbol' ? v[0] : void 0;\n        if (_tmp0 !== void 0) {\n            let _tmp1: (Simple) | undefined;\n            _tmp1 = toSimple(v[1]);\n            if (_tmp1 !== void 0) {\n                result = {\n                    \"label\": _tmp0,\n                    \"type\": _tmp1,\n                    __as_preserve__() {return fromVariant(this);},\n                    __preserve_on__(e) { e.push(fromVariant(this)); },\n                    __preserve_text_on__(w) { w.push(fromVariant(this)); }\n                };\n            };\n        };\n    };\n    return result;\n}\n\nVariant.__from_preserve__ = toVariant;\n\nexport function fromVariant<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Variant): _.Value<_embedded> {return [_v[\"label\"], fromSimple<_embedded>(_v[\"type\"])];}\n\nexport function asSimple<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Simple {\n    let result = toSimple(v);\n    if (result === void 0) throw new TypeError(`Invalid Simple: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toSimple<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Simple {\n    let _tmp0: (Field) | undefined;\n    let result: undefined | Simple;\n    _tmp0 = toField(v);\n    if (_tmp0 !== void 0) {\n        result = {\n            \"_variant\": \"Field\",\n            \"value\": _tmp0,\n            __as_preserve__() {return fromSimple(this);},\n            __preserve_on__(e) { e.push(fromSimple(this)); },\n            __preserve_text_on__(w) { w.push(fromSimple(this)); }\n        };\n    };\n    if (result === void 0) {\n        let _tmp1: (Record) | undefined;\n        _tmp1 = toRecord(v);\n        if (_tmp1 !== void 0) {\n            result = {\n                \"_variant\": \"Record\",\n                \"value\": _tmp1,\n                __as_preserve__() {return fromSimple(this);},\n                __preserve_on__(e) { e.push(fromSimple(this)); },\n                __preserve_text_on__(w) { w.push(fromSimple(this)); }\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace Simple {export const __from_preserve__ = toSimple;}\n\nexport function fromSimple<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Simple): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"Field\": {return fromField<_embedded>(_v.value);};\n        case \"Record\": {return fromRecord<_embedded>(_v.value);};\n    };\n}\n\nexport function asRecord<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Record {\n    let result = toRecord(v);\n    if (result === void 0) throw new TypeError(`Invalid Record: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toRecord<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Record {\n    let result: undefined | Record;\n    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n        let _tmp0: ({}) | undefined;\n        _tmp0 = _.is(v.label, $rec) ? {} : void 0;\n        if (_tmp0 !== void 0) {\n            let _tmp1: (Array<NamedField>) | undefined;\n            _tmp1 = void 0;\n            if (_.isSequence(v[0])) {\n                _tmp1 = [];\n                for (const _tmp2 of v[0]) {\n                    let _tmp3: (NamedField) | undefined;\n                    _tmp3 = toNamedField(_tmp2);\n                    if (_tmp3 !== void 0) {_tmp1.push(_tmp3); continue;};\n                    _tmp1 = void 0;\n                    break;\n                };\n            };\n            if (_tmp1 !== void 0) {\n                result = {\n                    \"fields\": _tmp1,\n                    __as_preserve__() {return fromRecord(this);},\n                    __preserve_on__(e) { e.push(fromRecord(this)); },\n                    __preserve_text_on__(w) { w.push(fromRecord(this)); }\n                };\n            };\n        };\n    };\n    return result;\n}\n\nRecord.__from_preserve__ = toRecord;\n\nexport function fromRecord<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Record): _.Value<_embedded> {return _.Record($rec, [_v[\"fields\"].map(v => fromNamedField<_embedded>(v))]);}\n\nexport function asNamedField<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): NamedField {\n    let result = toNamedField(v);\n    if (result === void 0) throw new TypeError(`Invalid NamedField: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toNamedField<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | NamedField {\n    let result: undefined | NamedField;\n    if (_.isSequence(v) && v.length >= 2) {\n        let _tmp0: (symbol) | undefined;\n        _tmp0 = typeof v[0] === 'symbol' ? v[0] : void 0;\n        if (_tmp0 !== void 0) {\n            let _tmp1: (Field) | undefined;\n            _tmp1 = toField(v[1]);\n            if (_tmp1 !== void 0) {\n                result = {\n                    \"name\": _tmp0,\n                    \"type\": _tmp1,\n                    __as_preserve__() {return fromNamedField(this);},\n                    __preserve_on__(e) { e.push(fromNamedField(this)); },\n                    __preserve_text_on__(w) { w.push(fromNamedField(this)); }\n                };\n            };\n        };\n    };\n    return result;\n}\n\nNamedField.__from_preserve__ = toNamedField;\n\nexport function fromNamedField<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: NamedField): _.Value<_embedded> {return [_v[\"name\"], fromField<_embedded>(_v[\"type\"])];}\n\nexport function asField<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): Field {\n    let result = toField(v);\n    if (result === void 0) throw new TypeError(`Invalid Field: ${_.stringify(v)}`);\n    return result;\n}\n\nexport function toField<_embedded extends _.Embeddable = _.GenericEmbedded>(v: _.Value<_embedded>): undefined | Field {\n    let _tmp0: ({}) | undefined;\n    let result: undefined | Field;\n    _tmp0 = _.is(v, $unit) ? {} : void 0;\n    if (_tmp0 !== void 0) {\n        result = {\n            \"_variant\": \"unit\",\n            __as_preserve__() {return fromField(this);},\n            __preserve_on__(e) { e.push(fromField(this)); },\n            __preserve_text_on__(w) { w.push(fromField(this)); }\n        };\n    };\n    if (result === void 0) {\n        let _tmp1: ({}) | undefined;\n        _tmp1 = _.is(v, $any) ? {} : void 0;\n        if (_tmp1 !== void 0) {\n            result = {\n                \"_variant\": \"any\",\n                __as_preserve__() {return fromField(this);},\n                __preserve_on__(e) { e.push(fromField(this)); },\n                __preserve_text_on__(w) { w.push(fromField(this)); }\n            };\n        };\n        if (result === void 0) {\n            let _tmp2: ({}) | undefined;\n            _tmp2 = _.is(v, $embedded) ? {} : void 0;\n            if (_tmp2 !== void 0) {\n                result = {\n                    \"_variant\": \"embedded\",\n                    __as_preserve__() {return fromField(this);},\n                    __preserve_on__(e) { e.push(fromField(this)); },\n                    __preserve_text_on__(w) { w.push(fromField(this)); }\n                };\n            };\n            if (result === void 0) {\n                if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                    let _tmp3: ({}) | undefined;\n                    _tmp3 = _.is(v.label, $array) ? {} : void 0;\n                    if (_tmp3 !== void 0) {\n                        let _tmp4: (Field) | undefined;\n                        _tmp4 = toField(v[0]);\n                        if (_tmp4 !== void 0) {\n                            result = {\n                                \"_variant\": \"array\",\n                                \"element\": _tmp4,\n                                __as_preserve__() {return fromField(this);},\n                                __preserve_on__(e) { e.push(fromField(this)); },\n                                __preserve_text_on__(w) { w.push(fromField(this)); }\n                            };\n                        };\n                    };\n                };\n                if (result === void 0) {\n                    if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                        let _tmp5: ({}) | undefined;\n                        _tmp5 = _.is(v.label, $set) ? {} : void 0;\n                        if (_tmp5 !== void 0) {\n                            let _tmp6: (Field) | undefined;\n                            _tmp6 = toField(v[0]);\n                            if (_tmp6 !== void 0) {\n                                result = {\n                                    \"_variant\": \"set\",\n                                    \"element\": _tmp6,\n                                    __as_preserve__() {return fromField(this);},\n                                    __preserve_on__(e) { e.push(fromField(this)); },\n                                    __preserve_text_on__(w) { w.push(fromField(this)); }\n                                };\n                            };\n                        };\n                    };\n                    if (result === void 0) {\n                        if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                            let _tmp7: ({}) | undefined;\n                            _tmp7 = _.is(v.label, $map) ? {} : void 0;\n                            if (_tmp7 !== void 0) {\n                                let _tmp8: (Field) | undefined;\n                                _tmp8 = toField(v[0]);\n                                if (_tmp8 !== void 0) {\n                                    let _tmp9: (Field) | undefined;\n                                    _tmp9 = toField(v[1]);\n                                    if (_tmp9 !== void 0) {\n                                        result = {\n                                            \"_variant\": \"map\",\n                                            \"key\": _tmp8,\n                                            \"value\": _tmp9,\n                                            __as_preserve__() {return fromField(this);},\n                                            __preserve_on__(e) { e.push(fromField(this)); },\n                                            __preserve_text_on__(w) { w.push(fromField(this)); }\n                                        };\n                                    };\n                                };\n                            };\n                        };\n                        if (result === void 0) {\n                            if (_.Record.isRecord<_.Value<_embedded>, _.Tuple<_.Value<_embedded>>, _embedded>(v)) {\n                                let _tmp10: ({}) | undefined;\n                                _tmp10 = _.is(v.label, $ref) ? {} : void 0;\n                                if (_tmp10 !== void 0) {\n                                    let _tmp11: (_i_schema.Ref) | undefined;\n                                    _tmp11 = _i_schema.toRef<_embedded>(v[0]);\n                                    if (_tmp11 !== void 0) {\n                                        result = {\n                                            \"_variant\": \"ref\",\n                                            \"name\": _tmp11,\n                                            __as_preserve__() {return fromField(this);},\n                                            __preserve_on__(e) { e.push(fromField(this)); },\n                                            __preserve_text_on__(w) { w.push(fromField(this)); }\n                                        };\n                                    };\n                                };\n                            };\n                            if (result === void 0) {\n                                let _tmp12: (_i_schema.AtomKind) | undefined;\n                                _tmp12 = _i_schema.toAtomKind<_embedded>(v);\n                                if (_tmp12 !== void 0) {\n                                    result = {\n                                        \"_variant\": \"AtomKind\",\n                                        \"value\": _tmp12,\n                                        __as_preserve__() {return fromField(this);},\n                                        __preserve_on__(e) { e.push(fromField(this)); },\n                                        __preserve_text_on__(w) { w.push(fromField(this)); }\n                                    };\n                                };\n                            };\n                        };\n                    };\n                };\n            };\n        };\n    };\n    return result;\n}\n\nexport namespace Field {export const __from_preserve__ = toField;}\n\nexport function fromField<_embedded extends _.Embeddable = _.GenericEmbedded>(_v: Field): _.Value<_embedded> {\n    switch (_v._variant) {\n        case \"unit\": {return $unit;};\n        case \"any\": {return $any;};\n        case \"embedded\": {return $embedded;};\n        case \"array\": {return _.Record($array, [fromField<_embedded>(_v[\"element\"])]);};\n        case \"set\": {return _.Record($set, [fromField<_embedded>(_v[\"element\"])]);};\n        case \"map\": {\n            return _.Record($map, [fromField<_embedded>(_v[\"key\"]), fromField<_embedded>(_v[\"value\"])]);\n        };\n        case \"ref\": {return _.Record($ref, [_i_schema.fromRef<_embedded>(_v[\"name\"])]);};\n        case \"AtomKind\": {return _i_schema.fromAtomKind<_embedded>(_v.value);};\n    };\n}\n\n"],"mappings":"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","names":["src_exports","__export","gentype_exports","host_exports","interpreter_exports","meta_exports","SchemaInterpreter","SchemaSyntaxError","type_exports","checkSchema","compile","parseSchema","readSchema","recordPosition","refPosition","__toCommonJS","import_core","meta_exports","__export","$1","$Boolean","$ByteString","$Double","$SignedInteger","$String","$Symbol","$and","$any","$atom","$bundle","$definitions","$dict","$dictof","$embedded","$embeddedType","$lit","$named","$or","$rec","$ref","$schema","$seqof","$setof","$tuple","$tuplePrefix","$version","ANDSYM","AtomKind","Binding","Bundle","CompoundPattern","DOT","DOTDOTDOT","Definition","Definitions","DictionaryEntries","EQUALS","EmbeddedTypeName","INCLUDE","ModulePath","Modules","NamedAlternative","NamedPattern","NamedSimplePattern","ORSYM","Pattern","Ref","Schema","SimplePattern","Version","__lit6","_imports","_schema","anonymousSimplePattern","asAtomKind","asBinding","asBundle","asCompoundPattern","asDefinition","asDefinitions","asDictionaryEntries","asEmbeddedTypeName","asModulePath","asModules","asNamedAlternative","asNamedPattern","asNamedSimplePattern","asPattern","asRef","asSchema","asSimplePattern","asVersion","envLookup","formatModulePath","formatRef","fromAtomKind","fromBinding","fromBundle","fromCompoundPattern","fromDefinition","fromDefinitions","fromDictionaryEntries","fromEmbeddedTypeName","fromModulePath","fromModules","fromNamedAlternative","fromNamedPattern","fromNamedSimplePattern","fromPattern","fromRef","fromSchema","fromSimplePattern","fromVersion","isSymbolPattern","isValidJsId","isValidQid","isValidToken","jsId","jsToken","modsymFor","nameFor","namelike","promoteNamedSimplePattern","qidLast","toAtomKind","toBinding","toBundle","toCompoundPattern","toDefinition","toDefinitions","toDictionaryEntries","toEmbeddedTypeName","toModulePath","toModules","toNamedAlternative","toNamedPattern","toNamedSimplePattern","toPattern","toRef","toSchema","toSimplePattern","toVersion","unnamePattern","unnameSimplePattern","import_core","schema_exports","__export","$1","$Boolean","$ByteString","$Double","$SignedInteger","$String","$Symbol","$and","$any","$atom","$bundle","$definitions","$dict","$dictof","$embedded","$embeddedType","$lit","$named","$or","$rec","$ref","$schema","$seqof","$setof","$tuple","$tuplePrefix","$version","AtomKind","Binding","Bundle","CompoundPattern","Definition","Definitions","DictionaryEntries","EmbeddedTypeName","ModulePath","Modules","NamedAlternative","NamedPattern","NamedSimplePattern","Pattern","Ref","Schema","SimplePattern","Version","__lit6","_imports","_schema","asAtomKind","asBinding","asBundle","asCompoundPattern","asDefinition","asDefinitions","asDictionaryEntries","asEmbeddedTypeName","asModulePath","asModules","asNamedAlternative","asNamedPattern","asNamedSimplePattern","asPattern","asRef","asSchema","asSimplePattern","asVersion","fromAtomKind","fromBinding","fromBundle","fromCompoundPattern","fromDefinition","fromDefinitions","fromDictionaryEntries","fromEmbeddedTypeName","fromModulePath","fromModules","fromNamedAlternative","fromNamedPattern","fromNamedSimplePattern","fromPattern","fromRef","fromSchema","fromSimplePattern","fromVersion","toAtomKind","toBinding","toBundle","toCompoundPattern","toDefinition","toDefinitions","toDictionaryEntries","toEmbeddedTypeName","toModulePath","toModules","toNamedAlternative","toNamedPattern","toNamedSimplePattern","toPattern","toRef","toSchema","toSimplePattern","toVersion","__schema","modules","w","value","version","embeddedType","definitions","e","$false","or","pattern0","pattern1","patternN","and","any","atom","atomKind","embedded","$interface","lit","seqof","pattern","setof","dictof","key","rec","label","fields","tuple","patterns","tuplePrefix","fixed","variable","dict","entries","Boolean","Double","SignedInteger","String","ByteString","Symbol","variantLabel","named","anonymous","name","module","v","result","_tmp0","_tmp1","_v","_tmp2","_tmp3","_tmp4","_tmp5","k","_tmp6","_tmp7","_tmp8","_tmp9","_tmp10","_tmp11","_tmp12","_tmp13","_tmp14","isJsKeyword","s","JS_KEYWORDS","qidLast","s","isValidToken","isValidQid","isValidJsId","isJsKeyword","jsId","v","kf","jsToken","ANDSYM","DOT","DOTDOTDOT","EQUALS","INCLUDE","ORSYM","envLookup","env","soughtModule","e","modsymFor","formatModulePath","p","formatRef","r","unnamePattern","Pattern","unnameSimplePattern","promoteNamedSimplePattern","NamedPattern","nameFor","anonymousSimplePattern","namelike","x","isSymbolPattern","checkSchema","schema","checker","Checker","Checker","context","detail","scope","sym","name","isValidToken","def","labels","variantLabel","pattern","ps","p","Pattern","availability","n","pp","i","promoteNamedSimplePattern","np","key","SchemaSyntaxError","message","pos","import_core","positionTable","recordPosition","v","pos","refPosition","_a","splitBy","items","separator","groups","group","finish","item","invalidClause","clause","SchemaSyntaxError","invalidPattern","name","_readSchema","source","options","readSchema","checked","checkSchema","parseSchema","c","toplevelTokens","version","embeddedType","EmbeddedTypeName","definitions","process","toplevelClauses","DOT","EQUALS","isValidToken","parseDefinition","$version","asVersion","$embeddedType","stx","isValidQid","parseRef","INCLUDE","path","Schema","Version","namedMustBeSimple","p","body","alternativeName","input","n","findName","parsePattern","NamedAlternative","qidLast","s","namelike","patternName","NamedPattern","Binding","andPieces","ANDSYM","orPieces","ORSYM","Definition","transferAnnotations","dest","src","body0","parseSimple","item0","ks","kf","complain","str","SimplePattern","AtomKind","label","$lit","DOTDOTDOT","walkSimple","vp","itemMap","kp","parseCompound","$rec","CompoundPattern","maybeNamed","Pattern","variableTemplateInput","variablePart","maybeNamedSimple","entries","k","_maybeNamed","NamedSimplePattern","walk","b","named","anonymous","recur","literalName","x","a0","a","pieces","Ref","import_core","import_core","Formatter","_Formatter","n","i","f","oldIndent","formatItems","width","Sequence","items","needSeparator","CommaSequence","Grouping","index","delim","g","s","Parens","OperatorSequence","operator","Brackets","AngleBrackets","Braces","Block","seq","commas","parens","opseq","zero","op","brackets","anglebrackets","braces","block","keyvalue","k","v","seq","type_exports","__export","ANY_TYPE","Type","isSymbolType","variants","typeName","ref","type","key","value","fields","ty","variantInitFor","variantName","variantFor","keyvalue","simpleTypeFields","ctxt","t","renderType","nn","tt","renderVariant","fields","braces","opseq","entry","seq","anglebrackets","isSymbolType","renderTypeWithConversionMixins","gentype_exports","__export","simpleType","typeFor","typeForDefinition","typeForIntersection","typeForDefinition","resolver","d","Type","a","typeFor","typeForIntersection","ps","fs","p","gatherFields","simpleType","NamedPattern","ANY_TYPE","compoundFields","pp","promoteNamedSimplePattern","_k","n","t","RECURSION_LIMIT","ModuleContext","env","modulePath","schema","options","t","v","varname","jsId","p","refCount","_t","_modPath","_modId","_modFile","_modExpr","pp","_tt","i","f","definitionName","FunctionContext","ref","_p","Type","modPath","modId","modFile","modExpr","name","kLocal","kOther","soughtModule","e","envLookup","expr","modsymFor","typeForDefinition","SchemaSyntaxError","formatRef","refPosition","anglebrackets","seq","self","state","WalkState","walk","mod","vartype","ANY_TYPE","typeitem","renderType","typestr","formatItems","oldTemps","items","ts","block","_typestr","type","names","commas","fieldName","valueType","sourceExpr","ks","shouldCapture","result","dest","buildProduct","variant","initializers","braces","variantInitFor","keyvalue","refCanonicalizer","r0","step","kf","r","Ref","maybe_e","saved","converterForDefinition","ctx","p","src","dest","loop","i","alts","converterForPattern","seq","pcs","converterFor","NamedPattern","simpleValue","typeFor","converterForTuple","ps","knownArray","variablePattern","k","vN","Type","ANY_TYPE","promoteNamedSimplePattern","lengthCheck","encoderForSimplePattern","_p","t","jsId","modPath","modId","modFile","modExpr","e","parens","np","ks","unnamePattern","maybeName","nameFor","destType","simpleType","converterForSimple","converterForCompound","test","valexp","kKnownArray","v","anonymousSimplePattern","vv","_a","vt","anglebrackets","renderType","_b","srcMap","resolver","kt","symbolKeyed","isSymbolType","kk","_t","entries","n","tmpSrc","genConstructor","mod","definitionName","name","variant","arg","resultType","resultTypeItem","formals","simpleValue","examine","t","initializers","n","_t","jsId","declArgs","seq","braces","f","renderType","parens","block","buildProduct","unconverterForDefinition","ctx","def","src","seq","block","p","hasValueField","unconverterFor","parens","unconverterForNamed","Pattern","isSymbolPattern","brackets","_p","_t","modPath","modId","modFile","modExpr","pp","varExp","promoteNamedSimplePattern","k","n","unconverterForNamedSimple","stepSource","key","steppedSrc","import_core","sourceCodeFor","v","b","f","i","s","seq","brackets","r","k","parens","a","d","kk","vv","t","_k","compile","env","modulePath","schema","options","_a","mod","ModuleContext","seq","block","fromSchema","name","def","t","typeForDefinition","nameStr","resultTypeItem","renderTypeWithConversionMixins","_ctx","vn","vt","genConstructor","name0","ctx","converterForDefinition","jsId","unconverterForDefinition","braces","identifier","_path","expr","formatModulePath","f","Formatter","_modulePath","path","_expr","sortedLiterals","a","b","lit","varname","sourceCodeFor","i","p","interpreter_exports","__export","Bindings","DynField","SchemaInterpreter","UNIT","import_core","host_exports","__export","$any","$array","$embedded","$map","$rec","$ref","$set","$union","$unit","Definition","Field","NamedField","Record","Simple","Variant","_imports","_schema","asDefinition","asField","asNamedField","asRecord","asSimple","asVariant","definitionType","fieldType","fromDefinition","fromField","fromNamedField","fromRecord","fromSimple","fromVariant","patternType","productType","toDefinition","toField","toNamedField","toRecord","toSimple","toVariant","import_core","_","$any","$array","$embedded","$map","$rec","$ref","$set","$union","$unit","__schema","_schema","_imports","schema_exports","Definition","union","variants","fromDefinition","e","w","Simple","value","Variant","label","type","fromVariant","Field","fromSimple","Record","fields","fromRecord","NamedField","name","fromNamedField","unit","fromField","any","embedded","array","element","set","map","key","ref","AtomKind","asDefinition","v","result","toDefinition","_tmp0","_tmp1","_tmp2","_tmp3","toVariant","_tmp4","toSimple","_v","asVariant","asSimple","toField","toRecord","asRecord","toNamedField","asNamedField","asField","_tmp5","_tmp6","_tmp7","_tmp8","_tmp9","_tmp10","_tmp11","toRef","_tmp12","toAtomKind","fromRef","fromAtomKind","definitionType","p","Definition","Variant","patternType","productType","Simple","fieldType","NamedPattern","Field","ps","gathered","gather","Record","promote","Pattern","into","t","NamedField","q","a","b","_key","UNIT","Bindings","empty","single","k","v","bs","merge","vs","acc","kw","vw","DynField","unwrap","f","unwrap_compound","simple","value","maybeSimple","compound","values","promote","key","jsId","optmap","a","attachSchema","schema","name","variant","g","SchemaInterpreter","env","mergeEmbeddeds","_a","_b","modulePath","saved","prefix","probe","formatModulePath","resolved","definition","s","fields","result","e","w","ty","flatName","mkBase","tmp","__spreadProps","__spreadValues","rec","field","definitionType","multiple","input","result0","d","p","r","rs","inputIf","b","isSymbolPattern","lw","fsw","results","i","fixed_results","remainder","variable_results","inputMap","vp","n","cell","ups","up","plainMerge","patternType","_v","kp","lp","fp","fixed","variable","mod","_d","definitionName","definitionId","tree","container"]}