{"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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,eAAwC;;;ACAxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAuD;;;ACAvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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","names":["import_core","EmbeddedTypeName","Ref","Definition","Pattern","SimplePattern","CompoundPattern","AtomKind","Symbol","NamedSimplePattern","NamedPattern","module","p","import_core","toplevelTokens","name","import_core","import_core","i","Type","ref","_","p","t","sourceExpr","loop","name","p","import_core","b","modulePath","import_core","$any","$embedded","$rec","$ref","Definition","Record","_imports","_schema","asDefinition","fromDefinition","toDefinition","import_core","_","$any","$embedded","$rec","$ref","__schema","_schema","_imports","Definition","fromDefinition","Simple","Field","Record","AtomKind","asDefinition","toDefinition","Definition","p","Record","Bindings","DynField","promote","p","plainMerge"]}