{"version":3,"file":"swim-structure.mjs","sources":["../main/Item.ts","../main/Field.ts","../main/Attr.ts","../main/Slot.ts","../main/Value.ts","../main/Record.ts","../main/RecordMap.ts","../main/RecordMapView.ts","../main/Data.ts","../main/Text.ts","../main/Num.ts","../main/Bool.ts","../main/Extant.ts","../main/Absent.ts","../main/Expression.ts","../main/operator/Operator.ts","../main/operator/BinaryOperator.ts","../main/operator/BinaryOperatorInterpolator.ts","../main/operator/UnaryOperator.ts","../main/operator/UnaryOperatorInterpolator.ts","../main/operator/ConditionalOperator.ts","../main/operator/ConditionalOperatorInterpolator.ts","../main/interpreter/InterpreterException.ts","../main/interpreter/InterpreterSettings.ts","../main/interpreter/Interpreter.ts","../main/operator/OrOperator.ts","../main/operator/AndOperator.ts","../main/operator/BitwiseOrOperator.ts","../main/operator/BitwiseXorOperator.ts","../main/operator/BitwiseAndOperator.ts","../main/operator/LtOperator.ts","../main/operator/LeOperator.ts","../main/operator/EqOperator.ts","../main/operator/NeOperator.ts","../main/operator/GeOperator.ts","../main/operator/GtOperator.ts","../main/operator/PlusOperator.ts","../main/operator/MinusOperator.ts","../main/operator/TimesOperator.ts","../main/operator/DivideOperator.ts","../main/operator/ModuloOperator.ts","../main/operator/NotOperator.ts","../main/operator/BitwiseNotOperator.ts","../main/operator/NegativeOperator.ts","../main/operator/PositiveOperator.ts","../main/operator/InvokeOperator.ts","../main/operator/InvokeOperatorInterpolator.ts","../main/selector/Selector.ts","../main/selector/IdentitySelector.ts","../main/selector/GetSelector.ts","../main/selector/GetAttrSelector.ts","../main/selector/GetItemSelector.ts","../main/selector/KeysSelector.ts","../main/selector/ValuesSelector.ts","../main/selector/ChildrenSelector.ts","../main/selector/DescendantsSelector.ts","../main/selector/FilterSelector.ts","../main/selector/LiteralSelector.ts","../main/func/Func.ts","../main/func/LambdaFunc.ts","../main/func/BridgeFunc.ts","../main/func/MathModule.ts","../main/form/FormException.ts","../main/form/Form.ts","../main/form/TagForm.ts","../main/form/UnitForm.ts","../main/form/StringForm.ts","../main/form/NumberForm.ts","../main/form/BooleanForm.ts","../main/form/AnyForm.ts","../main/form/ItemForm.ts","../main/form/ValueForm.ts","../main/collections/ValueCursor.ts","../main/collections/ValueEntryCursor.ts"],"sourcesContent":["// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Lazy} from \"@swim/util\";\nimport type {Mutable} from \"@swim/util\";\nimport type {HashCode} from \"@swim/util\";\nimport type {Equivalent} from \"@swim/util\";\nimport type {Compare} from \"@swim/util\";\nimport {Cursor} from \"@swim/util\";\nimport type {Interpolate} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {Debug} from \"@swim/codec\";\nimport type {Display} from \"@swim/codec\";\nimport {Format} from \"@swim/codec\";\nimport type {Field} from \"./Field\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./\"; // forward import\nimport {Record} from \"./\"; // forward import\nimport type {TextLike} from \"./Text\";\nimport type {NumLike} from \"./Num\";\nimport {Bool} from \"./\"; // forward import\nimport {Extant} from \"./\"; // forward import\nimport {Absent} from \"./\"; // forward import\nimport {Selector} from \"./\"; // forward import\nimport {MathModule} from \"./\"; // forward import\nimport type {InterpreterLike} from \"./interpreter/Interpreter\";\nimport type {Form} from \"./form/Form\";\n\n/** @public */\nexport type ItemLike = Item\n                     | {readonly $key: ValueLike, readonly $value: ValueLike}\n                     | {readonly [key: string]: ValueLike}\n                     | readonly ItemLike[]\n                     | Uint8Array\n                     | string\n                     | number\n                     | boolean\n                     | null\n                     | undefined;\n\n/** @public */\nexport abstract class Item implements Interpolate<Item>, HashCode, Equivalent, Compare, Debug, Display {\n  /** @internal */\n  constructor() {\n    // nop\n  }\n\n  likeType?(like: {readonly $key: ValueLike, readonly $value: ValueLike}\n                | {readonly [key: string]: ValueLike}\n                | readonly ItemLike[]\n                | Uint8Array\n                | string\n                | number\n                | boolean\n                | null\n                | undefined): void;\n\n  /**\n   * Returns `true` if this `Item` is not [[Absent]].\n   */\n  abstract isDefined(): boolean;\n\n  /**\n   * Returns `true` if this `Item` is neither [[Extant]] nor [[Absent]].\n   */\n  abstract isDistinct(): boolean;\n\n  /**\n   * Returns `true` if this `Item` is not one of: an empty `Record`, `False`,\n   * `Extant`, or `Absent`.\n   */\n  abstract isDefinite(): boolean;\n\n  /**\n   * Returns `true` if this `Item` always [[Item.evaluate evaluates]] to the\n   * same `Item`.\n   */\n  abstract isConstant(): boolean;\n\n  /**\n   * Returns the key component of this `Item`, if this `Item` is a [[Field]];\n   * otherwise returns [[Absent]] if this `Item` is a `Value`.\n   */\n  abstract readonly key: Value;\n\n  /**\n   * Returns the value component of this `Item`, if this `Item` is a [[Field]];\n   * otherwise returns `this` if this `Item` is a `Value`.\n   */\n  abstract toValue(): Value;\n\n  /**\n   * Returns the `key` string of the first member of this `Item`, if this `Item`\n   * is a [[Record]], and its first member is an [[Attr]]; otherwise returns\n   * `undefined` if this `Item` is not a `Record`, or if this `Item` is a\n   * `Record` whose first member is not an `Attr`.\n   *\n   * Used to concisely get the name of the discriminating attribute of a\n   * structure. The `tag` can be used to discern the nominal type of a\n   * polymorphic structure, similar to an XML element tag.\n   */\n  abstract readonly tag: string | undefined;\n\n  /**\n   * Returns the [[Item.flattened flattened]] members of this `Item` after all\n   * attributes have been removed, if this `Item` is a [[Record]]; otherwise\n   * returns `this` if this `Item` is a non-`Record` `Value`, or returns\n   * the value component if this `Item` is a `Field`.\n   *\n   * Used to concisely get the scalar value of an attributed structure. An\n   * attributed structure is a `Record` with one or more attributes that modify\n   * one or more other members.\n   */\n  abstract readonly target: Value;\n\n  /**\n   * Returns the sole member of this `Item`, if this `Item` is a [[Record]]\n   * with exactly one member, and its member is a `Value`; returns [[Extant]]\n   * if this `Item` is an empty `Record`; returns [[Absent]] if this `Item` is\n   * a `Field`; otherwise returns `this` if this `Item` is a `Record` with more\n   * than one member, or if this `Item` is a non-`Record` `Value`.\n   *\n   * Used to convert a unary `Record` into its member `Value`. Facilitates\n   * writing code that treats a unary `Record` equivalently to a bare `Value`.\n   */\n  abstract flattened(): Value;\n\n  /**\n   * Returns `this` if this `Item` is a [[Record]]; returns a `Record`\n   * containing just this `Item`, if this `Item` is [[Item.isDistinct\n   * distinct]]; otherwise returns an empty `Record` if this `Item` is\n   * [[Extant]] or [[Absent]]. Facilitates writing code that treats a bare\n   * `Value` equivalently to a unary `Record`.\n   */\n  abstract unflattened(): Record;\n\n  /**\n   * Returns the value of the first member of this `Item`, if this `Item` is a\n   * [[Record]], and its first member is an [[Attr]] whose `key` string is\n   * equal to `tag`; otherwise returns [[Absent]] if this `Item` is not a\n   * `Record`, or if this `Item` is a `Record` whose first member is not an\n   * `Attr`, or if this `Item` is a `Record` whose first member is an `Attr`\n   * whose `key` does not equal the `tag`.\n   *\n   * Used to conditionally get the value of the head `Attr` of a structure, if\n   * and only if the key string of the head `Attr` is equal to the `tag`. Can\n   * be used to check if a structure might conform to a nominal type named\n   * `tag`, while simultaneously getting the value of the `tag` attribute.\n   */\n  abstract header(tag: string): Value;\n\n  /**\n   * Returns the [[Item.unflattened unflattened]] [[Item.header header]] of\n   * this `Item`, if this `Item` is a [[Record]], and its first member is an\n   * [[Attr]] whose `key` string is equal to `tag`; otherwise returns\n   * `undefined`.\n   *\n   * The `headers` of the `tag` attribute of a structure are like the\n   * attributes of an XML element tag; through unlike an XML element, `tag`\n   * attribute headers are not limited to string keys and values.\n   */\n  abstract headers(tag: string): Record | undefined;\n\n  /**\n   * Returns the first member of this `Item`, if this `Item` is a non-empty\n   * [[Record]]; otherwise returns [[Absent]].\n   */\n  abstract head(): Item;\n\n  /**\n   * Returns a view of all but the first member of this `Item`, if this `Item`\n   * is a non-empty [[Record]]; otherwise returns an empty `Record` if this\n   * `Item` is not a `Record`, or if this `Item` is itself an empty `Record`.\n   */\n  abstract tail(): Record;\n\n  /**\n   * Returns the [[Record.flattened flattened]] [[Item.tail tail]] of this\n   * `Item`. Used to recursively deconstruct a structure, terminating with its\n   * last `Value`, rather than a unary `Record` containing its last value, if\n   * the structure ends with a `Value` member.\n   */\n  abstract body(): Value;\n\n  /**\n   * Returns the number of members contained in this `Item`, if this `Item` is\n   * a [[Record]]; otherwise returns `0` if this `Item` is not a `Record`.\n   */\n  abstract readonly length: number;\n\n  /**\n   * Returns `true` if this `Item` is a [[Record]] that has a [[Field]] member\n   * with a key that is equal to the given `key`; otherwise returns `false` if\n   * this `Item` is not a `Record`, or if this `Item` is a `Record`, but has no\n   * `Field` member with a key equal to the given `key`.\n   */\n  abstract has(key: ValueLike): boolean;\n\n  /**\n   * Returns the value of the last [[Field]] member of this `Item` whose key\n   * is equal to the given `key`; returns [[Absent]] if this `Item` is not a\n   * [[Record]], or if this `Item` is a `Record`, but has no `Field` member\n   * with a key equal to the given `key`.\n   */\n  abstract get(key: ValueLike): Value;\n\n  /**\n   * Returns the value of the last [[Attr]] member of this `Item` whose key\n   * is equal to the given `key`; returns [[Absent]] if this `Item` is not a\n   * [[Record]], or if this `Item` is a `Record`, but has no `Attr` member\n   * with a key equal to the given `key`.\n   */\n  abstract getAttr(key: TextLike): Value;\n\n  /**\n   * Returns the value of the last [[Slot]] member of this `Item` whose key\n   * is equal to the given `key`; returns [[Absent]] if this `Item` is not a\n   * [[Record]], or if this `Item` is a `Record`, but has no `Slot` member\n   * with a key equal to the given `key`.\n   */\n  abstract getSlot(key: ValueLike): Value;\n\n  /**\n   * Returns the last [[Field]] member of this `Item` whose key is equal to the\n   * given `key`; returns `undefined` if this `Item` is not a [[Record]], or if\n   * this `Item` is a `Record`, but has no `Field` member with a `key` equal to\n   * the given `key`.\n   */\n  abstract getField(key: ValueLike): Field | undefined;\n\n  /**\n   * Returns the member of this `Item` at the given `index`, if this `Item` is\n   * a [[Record]], and the `index` is greater than or equal to zero, and less\n   * than the [[Record.length length]] of the `Record`; otherwise returns\n   * [[Absent]] if this `Item` is not a `Record`, or if this `Item` is a\n   * `Record`, but the `index` is out of bounds.\n   */\n  abstract getItem(index: NumLike): Item;\n\n  updated(key: ValueLike, value: ValueLike): Record {\n    const record = Record.create(2);\n    record.push(this);\n    record.set(key, value);\n    return record;\n  }\n\n  updatedAttr(key: TextLike, value: ValueLike): Record {\n    const record = Record.create(2);\n    record.push(this);\n    record.setAttr(key, value);\n    return record;\n  }\n\n  updatedSlot(key: ValueLike, value: ValueLike): Record {\n    const record = Record.create(2);\n    record.push(this);\n    record.setSlot(key, value);\n    return record;\n  }\n\n  appended(...items: ItemLike[]): Record {\n    const record = Record.create(1 + arguments.length);\n    record.push(this);\n    record.push(...items);\n    return record;\n  }\n\n  prepended(...items: ItemLike[]): Record {\n    const record = Record.create(arguments.length + 1);\n    record.push(...items);\n    record.push(this);\n    return record;\n  }\n\n  abstract deleted(key: ValueLike): Item;\n\n  concat(...items: ItemLike[]): Record {\n    const record = Record.create();\n    record.push(this);\n    for (let i = 0; i < items.length; i += 1) {\n      Item.fromLike(items[i]).forEach(function (item: Item): void {\n        record.push(item);\n      });\n    }\n    return record;\n  }\n\n  abstract conditional(thenTerm: Item, elseTerm: Item): Item;\n\n  abstract or(that: Item): Item;\n\n  abstract and(that: Item): Item;\n\n  abstract bitwiseOr(that: ItemLike): Item;\n\n  abstract bitwiseXor(that: ItemLike): Item;\n\n  abstract bitwiseAnd(that: ItemLike): Item;\n\n  lt(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    return this.compareTo(that) < 0 ? Bool.from(true) : Item.absent();\n  }\n\n  le(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    return this.compareTo(that) <= 0 ? Bool.from(true) : Item.absent();\n  }\n\n  eq(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    return this.equals(that) ? Bool.from(true) : Item.absent();\n  }\n\n  ne(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    return !this.equals(that) ? Bool.from(true) : Item.absent();\n  }\n\n  ge(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    return this.compareTo(that) >= 0 ? Bool.from(true) : Item.absent();\n  }\n\n  gt(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    return this.compareTo(that) > 0 ? Bool.from(true) : Item.absent();\n  }\n\n  abstract plus(that: ItemLike): Item;\n\n  abstract minus(that: ItemLike): Item;\n\n  abstract times(that: ItemLike): Item;\n\n  abstract divide(that: ItemLike): Item;\n\n  abstract modulo(that: ItemLike): Item;\n\n  abstract not(): Item;\n\n  abstract bitwiseNot(): Item;\n\n  abstract negative(): Item;\n\n  abstract positive(): Item;\n\n  abstract inverse(): Item;\n\n  invoke(args: Value): Item {\n    return Item.absent();\n  }\n\n  abstract lambda(template: Value): Value;\n\n  filter(predicate?: ItemLike): Selector {\n    const selector = Selector.literal(this);\n    if (arguments.length === 0) {\n      return selector.filter();\n    } else {\n      return selector.filter(predicate);\n    }\n  }\n\n  max(that: Item): Item {\n    return this.compareTo(that) >= 0 ? this : that;\n  }\n\n  min(that: Item): Item {\n    return this.compareTo(that) <= 0 ? this : that;\n  }\n\n  evaluate(interpreter: InterpreterLike): Item {\n    return this;\n  }\n\n  substitute(interpreter: InterpreterLike): Item {\n    return this;\n  }\n\n  /**\n   * Converts this `Item` into a `string` value, if possible; otherwise returns\n   * `undefined` if this `Item` can't be converted into a `string` value.\n   */\n  abstract stringValue(): string | undefined;\n\n  /**\n   * Converts this `Item` into a `string` value, if possible; otherwise returns\n   * `orElse` if this `Item` can't be converted into a `string` value.\n   */\n  abstract stringValue<T>(orElse: T): string | T;\n\n  /**\n   * Converts this `Item` into a `number` value, if possible; otherwise returns\n   * `undefined` if this `Item` can't be converted into a `number` value.\n   */\n  abstract numberValue(): number | undefined;\n\n  /**\n   * Converts this `Item` into a `number` value, if possible; otherwise returns\n   * `orElse` if this `Item` can't be converted into a `number` value.\n   */\n  abstract numberValue<T>(orElse: T): number | T;\n\n  /**\n   * Converts this `Item` into a `boolean` value, if possible; otherwise returns\n   * `undefined` if this `Item` can't be converted into a `boolean` value.\n   */\n  abstract booleanValue(): boolean | undefined;\n\n  /**\n   * Converts this `Item` into a `boolean` value, if possible; otherwise returns\n   * `orElse` if this `Item` can't be converted into a `boolean` value.\n   */\n  abstract booleanValue<T>(orElse: T): boolean | T;\n\n  cast<T>(form: Form<T, unknown>): T | undefined;\n\n  cast<T, E = T>(form: Form<T, unknown>, orElse: E): T | E;\n\n  cast<T, E = T>(form: Form<T, unknown>, orElse?: E): T | E | undefined {\n    let object: T | E | undefined = form.cast(this);\n    if (object === void 0) {\n      object = orElse;\n    }\n    return object;\n  }\n\n  coerce<T>(form: Form<T, unknown>): T;\n\n  coerce<T, E = T>(form: Form<T, unknown>, orElse: E): T | E;\n\n  coerce<T, E = T>(form: Form<T, unknown>, orElse?: E): T | E {\n    let object: T | E | undefined = form.cast(this);\n    if (object === void 0) {\n      object = form.unit;\n    }\n    if (object === void 0) {\n      object = orElse;\n    }\n    return object!;\n  }\n\n  abstract toLike(): ItemLike;\n\n  abstract isAliased(): boolean;\n\n  abstract isMutable(): boolean;\n\n  abstract alias(): void;\n\n  abstract branch(): Item;\n\n  abstract clone(): Item;\n\n  abstract commit(): this;\n\n  /** @internal */\n  get precedence(): number {\n    return 11;\n  }\n\n  forEach<T>(callback: (item: Item, index: number) => T | void): T | undefined;\n  forEach<T, S>(callback: (this: S, item: Item, index: number) => T | void, thisArg: S): T | undefined;\n  forEach<T, S>(callback: (this: S | undefined, item: Item, index: number) => T | undefined, thisArg?: S): T | undefined {\n    return callback.call(thisArg, this, 0);\n  }\n\n  iterator(): Cursor<Item> {\n    return Cursor.unary(this);\n  }\n\n  [Symbol.iterator](): Cursor<Item> {\n    return this.iterator();\n  }\n\n  /** @override */\n  interpolateTo(that: Item): Interpolator<Item>;\n  interpolateTo(that: unknown): Interpolator<Item> | null;\n  interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof Item) {\n      return ItemInterpolator(this, that);\n    }\n    return null;\n  }\n\n  /**\n   * Returns the heterogeneous sort order of this `Item`. Used to impose a\n   * total order on the set of all items. When comparing two items of\n   * different types, the items order according to their `typeOrder`.\n   */\n  abstract readonly typeOrder: number;\n\n  /** @override */\n  abstract compareTo(that: unknown): number;\n\n  /** @override */\n  abstract equivalentTo(that: unknown, epsilon?: number): boolean;\n\n  abstract keyEquals(key: unknown): boolean;\n\n  /** @override */\n  abstract equals(that: unknown): boolean;\n\n  /** @override */\n  abstract hashCode(): number;\n\n  /** @override */\n  abstract debug<T>(output: Output<T>): Output<T>;\n\n  /** @override */\n  display<T>(output: Output<T>): Output<T> {\n    return this.debug(output);\n  }\n\n  /** @override */\n  toString(): string {\n    return Format.debug(this);\n  }\n\n  static empty(): Item {\n    return Record.empty();\n  }\n\n  static extant(): Item {\n    return Extant.extant();\n  }\n\n  static absent(): Item {\n    return Absent.absent();\n  }\n\n  static fromLike(item: ItemLike): Item {\n    if (item instanceof Item) {\n      return item;\n    }\n    return Value.fromLike(item);\n  }\n\n  @Lazy\n  static globalScope(): Item {\n    return Record.create(1)\n        .slot(\"math\", MathModule.scope)\n        .commit();\n  }\n}\n\n/** @internal */\nexport const ItemInterpolator = (function (_super: typeof Interpolator) {\n  const ItemInterpolator = function <Y extends Item>(y0: Y, y1: Y): Interpolator<Y> {\n    const interpolator = function (u: number): Y {\n      return u < 1 ? interpolator[0] : interpolator[1];\n    } as Interpolator<Y>;\n    Object.setPrototypeOf(interpolator, ItemInterpolator.prototype);\n    (interpolator as Mutable<typeof interpolator>)[0] = y0.commit();\n    (interpolator as Mutable<typeof interpolator>)[1] = y1.commit();\n    return interpolator;\n  } as {\n    <Y extends Item>(y0: Y, y1: Y): Interpolator<Y>;\n\n    /** @internal */\n    prototype: Interpolator<any>;\n  };\n\n  ItemInterpolator.prototype = Object.create(_super.prototype);\n  ItemInterpolator.prototype.constructor = ItemInterpolator;\n\n  return ItemInterpolator;\n})(Interpolator);\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport {Attr} from \"./\"; // forward import\nimport {Slot} from \"./\"; // forward import\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./\"; // forward import\nimport {Record} from \"./\"; // forward import\nimport type {TextLike} from \"./Text\";\nimport {Text} from \"./\"; // forward import\nimport type {NumLike} from \"./Num\";\n\n/** @public */\nexport type FieldLike = Field\n                      | {readonly $key: ValueLike, readonly $value: ValueLike}\n                      | {[key: string]: ValueLike};\n\n/** @public */\nexport abstract class Field extends Item {\n  /** @internal */\n  constructor() {\n    super();\n  }\n\n  override likeType?(like: {readonly $key: ValueLike, readonly $value: ValueLike}\n                         | {[key: string]: ValueLike}): void;\n\n  /**\n   * Always returns `true` because a `Field` can never be [[Absent]].\n   */\n  override isDefined(): boolean {\n    return true;\n  }\n\n  /**\n   * Always returns `true` because a `Field` can be neither [[Extant]] nor\n   * [[Absent]].\n   */\n  override isDistinct(): boolean {\n    return true;\n  }\n\n  /**\n   * Always returns `true` because a `Field` cannot be one of:\n   * an empty `Record`, `False`, `Extant`, or `Absent`.\n   */\n  override isDefinite(): boolean {\n    return true;\n  }\n\n  /**\n   * Returns the key component of this `Field`.\n   */\n  abstract override readonly key: Value;\n\n  /**\n   * Returns the value component of this `Field`.\n   */\n  abstract readonly value: Value;\n\n  /**\n   * Sets the value of this `Field` to the new `value`, returning the old value.\n   *\n   * @throws `Error` if this `Field` is immutable.\n   */\n  abstract setValue(value: ValueLike): Value;\n\n  /**\n   * Returns a copy of this `Field` with the updated `value`.\n   */\n  abstract updatedValue(value: ValueLike): Field;\n\n  /**\n   * Returns the value component of this `Field`.\n   */\n  override toValue(): Value {\n    return this.value;\n  }\n\n  /**\n   * Always returns `undefined` because a `Field` can't be a `Record`, so it\n   * can't have a first member `Attr` whose key string could be returned.\n   */\n  override get tag(): string | undefined {\n    return void 0;\n  }\n\n  /**\n   * Always returns the value component of this `Field`.\n   */\n  override get target(): Value {\n    return this.value;\n  }\n\n  /**\n   * Always returns [[Absent]] because a `Field` can't be flattened into a\n   * `Value`.\n   */\n  override flattened(): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Returns a `Record` containing just this `Field`.\n   */\n  override unflattened(): Record {\n    return Record.of(this);\n  }\n\n  /**\n   * Always returns [[Absent]] because a `Field` can't be a `Record`, so it\n   * can't have a head `Attr` whose value could be returned if its key were\n   * equal to the `tag`.\n   */\n  override header(tag: string): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Always returns `undefined` because a `Field` can't be a `Record`, so it\n   * can't have a head `Attr` whose value could be returned as a `Record` if\n   * its key were equal to the `tag`.\n   */\n  override headers(tag: string): Record | undefined {\n    return void 0;\n  }\n\n  /**\n   * Always returns [[Absent]] because a `Field` can't be a `Record`, so it\n   * can't have a first member.\n   */\n  override head(): Item {\n    return Item.absent();\n  }\n\n  /**\n   * Always returns an empty `Record` because a `Field` can't itself be a\n   * `Record`, so it can't have any non-first members.\n   */\n  override tail(): Record {\n    return Record.empty();\n  }\n\n  /**\n   * Always returns [[Absent]] because a `Field` can't be a `Record`, so it\n   * can't have any non-first members to flatten, and because a `Field` isn't\n   * a distinct `Value`, so it can't return `Extant`.\n   */\n  override body(): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Always returns `0` because a `Field` can't be a `Record`, so it can't\n   * contain any members.\n   */\n  override get length(): number {\n    return 0;\n  }\n\n  /**\n   * Always returns `false` because a `Field` can't be a `Record`, so it can't\n   * have a `Field` member whose key is equal to the given `key`.\n   */\n  override has(key: ValueLike): boolean {\n    return false;\n  }\n\n  /**\n   * Always returns [[Absent]] because a `Field` can't be a `Record`, so it\n   * can't have a `Field` member whose key is equal to the given `key`.\n   */\n  override get(key: ValueLike): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Always returns [[Absent]] because a `Field` can't be a `Record`, so it\n   * can't have an `Attr` member whose key is equal to the given `key`.\n   */\n  override getAttr(key: TextLike): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Always returns [[Absent]] because a `Field` can't be a `Record`, so it\n   * can't have a `Slot` member whose key is equal to the given `key`.\n   */\n  override getSlot(key: ValueLike): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Always returns `undefined` because a `Field` can't be a `Record`, so it\n   * can't have a `Field` member whose key is equal to the given `key`.\n   */\n  override getField(key: ValueLike): Field | undefined {\n    return void 0;\n  }\n\n  /**\n   * Always returns [[Absent]] because a `Field` can't be a `Record`, so it\n   * can't have a member at the given `index`.\n   */\n  override getItem(index: NumLike): Item {\n    return Item.absent();\n  }\n\n  override deleted(key: ValueLike): Field {\n    return this;\n  }\n\n  override conditional(thenTerm: Field, elseTerm: Field): Field;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item {\n    thenTerm = Item.fromLike(thenTerm);\n    return thenTerm;\n  }\n\n  override or(that: Field): Field;\n  override or(that: ItemLike): Item;\n  override or(that: ItemLike): Item {\n    return this;\n  }\n\n  override and(that: Field): Field;\n  override and(that: ItemLike): Item;\n  override and(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    return that;\n  }\n\n  override lambda(template: Value): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Converts the value of this `Field` into a `string` value, if possible.\n   *\n   * @throws `Error` if the value of this `Field` can't be converted into a\n   *         `string` value.\n   */\n  override stringValue(): string | undefined;\n  /**\n   * Converts the value of this `Field` into a `string` value, if possible;\n   * otherwise returns `orElse` if the value of this `Field` can't be converted\n   * into a `string` value.\n   */\n  override stringValue<T>(orElse: T): string | T;\n  override stringValue<T>(orElse?: T): string | T | undefined {\n    return this.value.stringValue(orElse);\n  }\n\n  /**\n   * Converts the value of this `Field` into a `number` value, if possible.\n   *\n   * @throws `Error` if the value of this `Field` can't be converted into a\n   *         `number` value.\n   */\n  override numberValue(): number | undefined;\n  /**\n   * Converts the value of this `Field` into a `number` value, if possible;\n   * otherwise returns `orElse` if the value of this `Field` can't be converted\n   * into a `number` value.\n   */\n  override numberValue<T>(orElse: T): number | T;\n  override numberValue<T>(orElse?: T): number | T | undefined {\n    return this.value.numberValue(orElse);\n  }\n\n  /**\n   * Converts the value of this `Field` into a `boolean` value, if possible.\n   *\n   * @throws `Error` if the value of this `Field` can't be converted into a\n   *         `boolean` value.\n   */\n  override booleanValue(): boolean | undefined;\n  /**\n   * Converts the value of this `Field` into a `boolean` value, if possible;\n   * otherwise returns `orElse` if the value of this `Field` can't be converted\n   * into a `boolean` value.\n   */\n  override booleanValue<T>(orElse: T): boolean | T;\n  override booleanValue<T>(orElse?: T): boolean | T | undefined {\n    return this.value.booleanValue(orElse);\n  }\n\n  abstract override toLike(): FieldLike;\n\n  abstract override branch(): Field;\n\n  abstract override clone(): Field;\n\n  abstract override commit(): this;\n\n  override interpolateTo(that: Field): Interpolator<Field>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof Field) {\n      return FieldInterpolator(this, that);\n    }\n    return super.interpolateTo(that);\n  }\n\n  /** @internal */\n  static readonly ImmutableFlag: number = 1 << 0;\n\n  static of(key: ValueLike, value?: ValueLike): Field {\n    let name: string | undefined;\n    if (typeof key === \"string\") {\n      name = key;\n    } else if (key instanceof Text) {\n      name = key.value;\n    }\n    if (name !== void 0 && name.charCodeAt(0) === 64/*'@'*/) {\n      name = name.slice(1);\n      if (arguments.length === 1) {\n        return Attr.of(name);\n      } else {\n        return Attr.of(name, value);\n      }\n    } else if (arguments.length === 1) {\n      return Slot.of(key);\n    } else {\n      return Slot.of(key, value);\n    }\n  }\n\n  static override fromLike(field: FieldLike): Field {\n    if (field instanceof Field) {\n      return field;\n    } else if (typeof field === \"object\" && field !== null) {\n      if ((field as any).$key !== void 0) {\n        return Field.of((field as any).$key, (field as any).$value);\n      } else {\n        for (const key in field) {\n          return Field.of(key, (field as any)[key]);\n        }\n      }\n    }\n    throw new TypeError(\"\" + field);\n  }\n}\n\n/** @internal */\nexport interface FieldInterpolator extends Interpolator<Field> {\n  /** @internal */\n  readonly keyInterpolator: Interpolator<Value>;\n  /** @internal */\n  readonly valueInterpolator: Interpolator<Value>;\n\n  readonly 0: Field;\n\n  readonly 1: Field;\n\n  equals(that: unknown): boolean;\n}\n\n/** @internal */\nexport const FieldInterpolator = (function (_super: typeof Interpolator) {\n  const FieldInterpolator = function (y0: Field, y1: Field): FieldInterpolator {\n    const interpolator = function (u: number): Field {\n      const key = interpolator.keyInterpolator(u);\n      const value = interpolator.valueInterpolator(u);\n      return Slot.of(key, value);\n    } as FieldInterpolator;\n    Object.setPrototypeOf(interpolator, FieldInterpolator.prototype);\n    (interpolator as Mutable<typeof interpolator>).keyInterpolator = y0.key.interpolateTo(y1.key);\n    (interpolator as Mutable<typeof interpolator>).valueInterpolator = y0.value.interpolateTo(y1.value);\n    return interpolator;\n  } as {\n    (y0: Field, y1: Field): FieldInterpolator;\n\n    /** @internal */\n    prototype: FieldInterpolator;\n  };\n\n  FieldInterpolator.prototype = Object.create(_super.prototype);\n  FieldInterpolator.prototype.constructor = FieldInterpolator;\n\n  Object.defineProperty(FieldInterpolator.prototype, 0, {\n    get(this: FieldInterpolator): Field {\n      return Slot.of(this.keyInterpolator[0], this.valueInterpolator[0]);\n    },\n    configurable: true,\n  });\n\n  Object.defineProperty(FieldInterpolator.prototype, 1, {\n    get(this: FieldInterpolator): Field {\n      return Slot.of(this.keyInterpolator[1], this.valueInterpolator[1]);\n    },\n    configurable: true,\n  });\n\n  FieldInterpolator.prototype.equals = function (that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof FieldInterpolator) {\n      return this.keyInterpolator.equals(that.keyInterpolator)\n          && this.valueInterpolator.equals(that.valueInterpolator);\n    }\n    return false;\n  };\n\n  return FieldInterpolator;\n})(Interpolator);\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport type {FieldLike} from \"./Field\";\nimport {Field} from \"./Field\";\nimport {Slot} from \"./\"; // forward import\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./\"; // forward import\nimport type {TextLike} from \"./Text\";\nimport {Text} from \"./\"; // forward import\nimport {Extant} from \"./\"; // forward import\nimport {Expression} from \"./\"; // forward import\nimport {BitwiseOrOperator} from \"./\"; // forward import\nimport {BitwiseXorOperator} from \"./\"; // forward import\nimport {BitwiseAndOperator} from \"./\"; // forward import\nimport {PlusOperator} from \"./\"; // forward import\nimport {MinusOperator} from \"./\"; // forward import\nimport {TimesOperator} from \"./\"; // forward import\nimport {DivideOperator} from \"./\"; // forward import\nimport {ModuloOperator} from \"./\"; // forward import\nimport type {InterpreterLike} from \"./interpreter/Interpreter\";\nimport {Interpreter} from \"./\"; // forward import\n\n/** @public */\nexport class Attr extends Field {\n  constructor(key: Text, value: Value, flags?: number) {\n    super();\n    this.key = key;\n    this.value = value;\n    this.flags = flags !== void 0 ? flags : 0;\n  }\n\n  override isConstant(): boolean {\n    return this.key.isConstant() && this.value.isConstant();\n  }\n\n  get name(): string {\n    return this.key.value;\n  }\n\n  override readonly key: Text;\n\n  override readonly value: Value;\n\n  /** @internal */\n  readonly flags: number;\n\n  override setValue(newValue: Value): Value {\n    if ((this.flags & Field.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    const oldValue = this.value;\n    (this as Mutable<this>).value = newValue;\n    return oldValue;\n  }\n\n  override updatedValue(value: Value): Attr {\n    return new Attr(this.key, value);\n  }\n\n  override bitwiseOr(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new BitwiseOrOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Attr && this.key.equals(that.key)) {\n      newValue = this.value.bitwiseOr(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.bitwiseOr(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override bitwiseXor(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new BitwiseXorOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Attr && this.key.equals(that.key)) {\n      newValue = this.value.bitwiseXor(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.bitwiseXor(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override bitwiseAnd(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new BitwiseAndOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Attr && this.key.equals(that.key)) {\n      newValue = this.value.bitwiseAnd(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.bitwiseAnd(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override plus(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new PlusOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Attr && this.key.equals(that.key)) {\n      newValue = this.value.plus(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.plus(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override minus(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new MinusOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Attr && this.key.equals(that.key)) {\n      newValue = this.value.minus(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.minus(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override times(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new TimesOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Attr && this.key.equals(that.key)) {\n      newValue = this.value.times(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.times(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override divide(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new DivideOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Attr && this.key.equals(that.key)) {\n      newValue = this.value.divide(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.divide(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override modulo(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new ModuloOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Attr && this.key.equals(that.key)) {\n      newValue = this.value.modulo(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.modulo(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override not(): Item {\n    const newValue = this.value.not();\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override bitwiseNot(): Item {\n    const newValue = this.value.bitwiseNot();\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override negative(): Item {\n    const newValue = this.value.negative();\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override positive(): Item {\n    const newValue = this.value.positive();\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override inverse(): Item {\n    const newValue = this.value.inverse();\n    if (newValue.isDefined()) {\n      return new Attr(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const key = this.key.evaluate(interpreter).toValue();\n    const value = this.value.evaluate(interpreter).toValue();\n    if (key === this.key && value === this.value) {\n      return this;\n    } else if (key.isDefined() && value.isDefined()) {\n      if (key instanceof Text) {\n        return new Attr(key, value);\n      } else {\n        return new Slot(key, value);\n      }\n    }\n    return Item.absent();\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const key = this.key.substitute(interpreter).toValue();\n    const value = this.value.substitute(interpreter).toValue();\n    if (key === this.key && value === this.value) {\n      return this;\n    } else if (key.isDefined() && value.isDefined()) {\n      if (key instanceof Text) {\n        return new Attr(key, value);\n      } else {\n        return new Slot(key, value);\n      }\n    }\n    return Item.absent();\n  }\n\n  override toLike(): FieldLike {\n    const field = {} as {[key: string]: ValueLike};\n    field[\"@\" + this.key.value] = this.value.toLike();\n    return field;\n  }\n\n  override isAliased(): boolean {\n    return false;\n  }\n\n  override isMutable(): boolean {\n    return (this.flags & Field.ImmutableFlag) === 0;\n  }\n\n  override alias(): void {\n    (this as Mutable<this>).flags |= Field.ImmutableFlag;\n  }\n\n  override branch(): Attr {\n    if ((this.flags & Field.ImmutableFlag) === 0) {\n      return this;\n    }\n    return new Attr(this.key, this.value, this.flags & ~Field.ImmutableFlag);\n  }\n\n  override clone(): Attr {\n    return new Attr(this.key.clone(), this.value.clone());\n  }\n\n  override commit(): this {\n    (this as Mutable<this>).flags |= Field.ImmutableFlag;\n    this.value.commit();\n    return this;\n  }\n\n  override interpolateTo(that: Attr): Interpolator<Attr>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof Attr) {\n      return AttrInterpolator(this, that);\n    }\n    return super.interpolateTo(that);\n  }\n\n  override get typeOrder(): number {\n    return 1;\n  }\n\n  override compareTo(that: Item): number {\n    if (that instanceof Attr) {\n      let order = this.key.compareTo(that.key);\n      if (order === 0) {\n        order = this.value.compareTo(that.value);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Attr) {\n      return this.key.equals(that.key) && this.value.equivalentTo(that.value, epsilon);\n    }\n    return false;\n  }\n\n  override keyEquals(key: unknown): boolean {\n    if (typeof key === \"string\") {\n      return this.key.value === key;\n    } else if (key instanceof Field) {\n      return this.key.equals(key.key);\n    } else {\n      return this.key.equals(key);\n    }\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Attr) {\n      return this.key.equals(that.key) && this.value.equals(that.value);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(Attr),\n        this.key.hashCode()), this.value.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Attr\").write(46/*'.'*/).write(\"of\").write(40/*'('*/).display(this.key);\n    if (!(this.value instanceof Extant)) {\n      output = output.write(44/*','*/).write(32/*' '*/).display(this.value);\n    }\n    output = output.write(41/*')'*/);\n    return output;\n  }\n\n  static override of(key: TextLike, value?: ValueLike): Attr {\n    key = Text.fromLike(key);\n    if (arguments.length === 1) {\n      value = Value.extant();\n    } else {\n      value = Value.fromLike(value);\n    }\n    return new Attr(key, value);\n  }\n}\n\n/** @internal */\nexport interface AttrInterpolator extends Interpolator<Attr> {\n  /** @internal */\n  readonly keyInterpolator: Interpolator<Text>;\n  /** @internal */\n  readonly valueInterpolator: Interpolator<Value>;\n\n  readonly 0: Attr;\n\n  readonly 1: Attr;\n\n  equals(that: unknown): boolean;\n}\n\n/** @internal */\nexport const AttrInterpolator = (function (_super: typeof Interpolator) {\n  const AttrInterpolator = function (y0: Attr, y1: Attr): AttrInterpolator {\n    const interpolator = function (u: number): Attr {\n      const key = interpolator.keyInterpolator(u);\n      const value = interpolator.valueInterpolator(u);\n      return Attr.of(key, value);\n    } as AttrInterpolator;\n    Object.setPrototypeOf(interpolator, AttrInterpolator.prototype);\n    (interpolator as Mutable<typeof interpolator>).keyInterpolator = y0.key.interpolateTo(y1.key);\n    (interpolator as Mutable<typeof interpolator>).valueInterpolator = y0.value.interpolateTo(y1.value);\n    return interpolator;\n  } as {\n    (y0: Attr, y1: Attr): AttrInterpolator;\n\n    /** @internal */\n    prototype: AttrInterpolator;\n  };\n\n  AttrInterpolator.prototype = Object.create(_super.prototype);\n  AttrInterpolator.prototype.constructor = AttrInterpolator;\n\n  Object.defineProperty(AttrInterpolator.prototype, 0, {\n    get(this: AttrInterpolator): Attr {\n      return Attr.of(this.keyInterpolator[0], this.valueInterpolator[0]);\n    },\n    configurable: true,\n  });\n\n  Object.defineProperty(AttrInterpolator.prototype, 1, {\n    get(this: AttrInterpolator): Attr {\n      return Attr.of(this.keyInterpolator[1], this.valueInterpolator[1]);\n    },\n    configurable: true,\n  });\n\n  AttrInterpolator.prototype.equals = function (that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof AttrInterpolator) {\n      return this.keyInterpolator.equals(that.keyInterpolator)\n          && this.valueInterpolator.equals(that.valueInterpolator);\n    }\n    return false;\n  };\n\n  return AttrInterpolator;\n})(Interpolator);\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport type {FieldLike} from \"./Field\";\nimport {Field} from \"./Field\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./\"; // forward import\nimport {Text} from \"./\"; // forward import\nimport {Extant} from \"./\"; // forward import\nimport {Expression} from \"./\"; // forward import\nimport {BitwiseOrOperator} from \"./\"; // forward import\nimport {BitwiseXorOperator} from \"./\"; // forward import\nimport {BitwiseAndOperator} from \"./\"; // forward import\nimport {PlusOperator} from \"./\"; // forward import\nimport {MinusOperator} from \"./\"; // forward import\nimport {TimesOperator} from \"./\"; // forward import\nimport {DivideOperator} from \"./\"; // forward import\nimport {ModuloOperator} from \"./\"; // forward import\nimport type {InterpreterLike} from \"./interpreter/Interpreter\";\nimport {Interpreter} from \"./\"; // forward import\n\n/** @public */\nexport class Slot extends Field {\n  constructor(key: Value, value: Value, flags?: number) {\n    super();\n    this.key = key.commit();\n    this.value = value;\n    this.flags = flags !== void 0 ? flags : 0;\n  }\n\n  override readonly key: Value;\n\n  override readonly value: Value;\n\n  /** @internal */\n  readonly flags: number;\n\n  override isConstant(): boolean {\n    return this.key.isConstant() && this.value.isConstant();\n  }\n\n  override setValue(newValue: Value): Value {\n    if ((this.flags & Field.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    const oldValue = this.value;\n    (this as Mutable<this>).value = newValue;\n    return oldValue;\n  }\n\n  override updatedValue(value: Value): Slot {\n    return new Slot(this.key, value);\n  }\n\n  override bitwiseOr(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new BitwiseOrOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Slot && this.key.equals(that.key)) {\n      newValue = this.value.bitwiseOr(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.bitwiseOr(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override bitwiseXor(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new BitwiseXorOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Slot && this.key.equals(that.key)) {\n      newValue = this.value.bitwiseXor(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.bitwiseXor(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override bitwiseAnd(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new BitwiseAndOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Slot && this.key.equals(that.key)) {\n      newValue = this.value.bitwiseAnd(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.bitwiseAnd(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override plus(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new PlusOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Slot && this.key.equals(that.key)) {\n      newValue = this.value.plus(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.plus(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override minus(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new MinusOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Slot && this.key.equals(that.key)) {\n      newValue = this.value.minus(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.minus(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override times(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new TimesOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Slot && this.key.equals(that.key)) {\n      newValue = this.value.times(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.times(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override divide(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new DivideOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Slot && this.key.equals(that.key)) {\n      newValue = this.value.divide(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.divide(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override modulo(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new ModuloOperator(this, that);\n    }\n    let newValue;\n    if (that instanceof Slot && this.key.equals(that.key)) {\n      newValue = this.value.modulo(that.value);\n    } else if (that instanceof Value) {\n      newValue = this.value.modulo(that);\n    } else {\n      newValue = Value.absent();\n    }\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override not(): Item {\n    const newValue = this.value.not();\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override bitwiseNot(): Item {\n    const newValue = this.value.bitwiseNot();\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override negative(): Item {\n    const newValue = this.value.negative();\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override positive(): Item {\n    const newValue = this.value.positive();\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override inverse(): Item {\n    const newValue = this.value.inverse();\n    if (newValue.isDefined()) {\n      return new Slot(this.key, newValue);\n    }\n    return Item.absent();\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const key = this.key.evaluate(interpreter).toValue();\n    const value = this.value.evaluate(interpreter).toValue();\n    if (key === this.key && value === this.value) {\n      return this;\n    } else if (key.isDefined() && value.isDefined()) {\n      return new Slot(key, value);\n    }\n    return Item.absent();\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const key = this.key.substitute(interpreter).toValue();\n    const value = this.value.substitute(interpreter).toValue();\n    if (key === this.key && value === this.value) {\n      return this;\n    } else if (key.isDefined() && value.isDefined()) {\n      return new Slot(key, value);\n    }\n    return Item.absent();\n  }\n\n  override toLike(): FieldLike {\n    const field = {} as {[key: string]: ValueLike};\n    if (this.key instanceof Text) {\n      field[this.key.value] = this.value.toLike();\n    } else {\n      field.$key = this.key.toLike();\n      field.$value = this.value.toLike();\n    }\n    return field;\n  }\n\n  override isAliased(): boolean {\n    return false;\n  }\n\n  override isMutable(): boolean {\n    return (this.flags & Field.ImmutableFlag) === 0;\n  }\n\n  override alias(): void {\n    (this as Mutable<this>).flags |= Field.ImmutableFlag;\n  }\n\n  override branch(): Slot {\n    if ((this.flags & Field.ImmutableFlag) === 0) {\n      return this;\n    }\n    return new Slot(this.key, this.value, this.flags & ~Field.ImmutableFlag);\n  }\n\n  override clone(): Slot {\n    return new Slot(this.key.clone(), this.value.clone());\n  }\n\n  override commit(): this {\n    (this as Mutable<this>).flags |= Field.ImmutableFlag;\n    this.value.commit();\n    return this;\n  }\n\n  override interpolateTo(that: Slot): Interpolator<Slot>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof Slot) {\n      return SlotInterpolator(this, that);\n    }\n    return super.interpolateTo(that);\n  }\n\n  override get typeOrder(): number {\n    return 2;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof Slot) {\n      let order = this.key.compareTo(that.key);\n      if (order === 0) {\n        order = this.value.compareTo(that.value);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Slot) {\n      return this.key.equals(that.key) && this.value.equivalentTo(that.value, epsilon);\n    }\n    return false;\n  }\n\n  override keyEquals(key: unknown): boolean {\n    if (typeof key === \"string\" && this.key instanceof Text) {\n      return this.key.value === key;\n    } else if (key instanceof Field) {\n      return this.key.equals(key.key);\n    } else {\n      return this.key.equals(key);\n    }\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Slot) {\n      return this.key.equals(that.key) && this.value.equals(that.value);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(Slot),\n        this.key.hashCode()), this.value.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Slot\").write(46/*'.'*/).write(\"of\").write(40/*'('*/).display(this.key);\n    if (!(this.value instanceof Extant)) {\n      output = output.write(44/*','*/).write(32/*' '*/).display(this.value);\n    }\n    output = output.write(41/*')'*/);\n    return output;\n  }\n\n  static override of(key: ValueLike, value?: ValueLike): Slot {\n    key = Value.fromLike(key);\n    if (arguments.length === 1) {\n      value = Value.extant();\n    } else {\n      value = Value.fromLike(value);\n    }\n    return new Slot(key, value);\n  }\n}\n\n/** @internal */\nexport interface SlotInterpolator extends Interpolator<Slot> {\n  /** @internal */\n  readonly keyInterpolator: Interpolator<Value>;\n  /** @internal */\n  readonly valueInterpolator: Interpolator<Value>;\n\n  readonly 0: Slot;\n\n  readonly 1: Slot;\n\n  equals(that: unknown): boolean;\n}\n\n/** @internal */\nexport const SlotInterpolator = (function (_super: typeof Interpolator) {\n  const SlotInterpolator = function (y0: Slot, y1: Slot): SlotInterpolator {\n    const interpolator = function (u: number): Slot {\n      const key = interpolator.keyInterpolator(u);\n      const value = interpolator.valueInterpolator(u);\n      return Slot.of(key, value);\n    } as SlotInterpolator;\n    Object.setPrototypeOf(interpolator, SlotInterpolator.prototype);\n    (interpolator as Mutable<typeof interpolator>).keyInterpolator = y0.key.interpolateTo(y1.key);\n    (interpolator as Mutable<typeof interpolator>).valueInterpolator = y0.value.interpolateTo(y1.value);\n    return interpolator;\n  } as {\n    (y0: Slot, y1: Slot): SlotInterpolator;\n\n    /** @internal */\n    prototype: SlotInterpolator;\n  };\n\n  SlotInterpolator.prototype = Object.create(_super.prototype);\n  SlotInterpolator.prototype.constructor = SlotInterpolator;\n\n  Object.defineProperty(SlotInterpolator.prototype, 0, {\n    get(this: SlotInterpolator): Slot {\n      return Slot.of(this.keyInterpolator[0], this.valueInterpolator[0]);\n    },\n    configurable: true,\n  });\n\n  Object.defineProperty(SlotInterpolator.prototype, 1, {\n    get(this: SlotInterpolator): Slot {\n      return Slot.of(this.keyInterpolator[1], this.valueInterpolator[1]);\n    },\n    configurable: true,\n  });\n\n  SlotInterpolator.prototype.equals = function (that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof SlotInterpolator) {\n      return this.keyInterpolator.equals(that.keyInterpolator)\n          && this.valueInterpolator.equals(that.valueInterpolator);\n    }\n    return false;\n  };\n\n  return SlotInterpolator;\n})(Interpolator);\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Interpolator} from \"@swim/util\";\nimport type {Builder} from \"@swim/util\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport {Field} from \"./\"; // forward import\nimport {Attr} from \"./Attr\";\nimport {Slot} from \"./Slot\";\nimport {Record} from \"./\"; // forward import\nimport {Data} from \"./\"; // forward import\nimport type {TextLike} from \"./Text\";\nimport {Text} from \"./\"; // forward import\nimport type {NumLike} from \"./Num\";\nimport {Num} from \"./\"; // forward import\nimport {Bool} from \"./\"; // forward import\nimport {Extant} from \"./\"; // forward import\nimport {Absent} from \"./\"; // forward import\nimport {Expression} from \"./\"; // forward import\nimport {BitwiseOrOperator} from \"./\"; // forward import\nimport {BitwiseXorOperator} from \"./\"; // forward import\nimport {BitwiseAndOperator} from \"./\"; // forward import\nimport {LtOperator} from \"./\"; // forward import\nimport {LeOperator} from \"./\"; // forward import\nimport {EqOperator} from \"./\"; // forward import\nimport {NeOperator} from \"./\"; // forward import\nimport {GeOperator} from \"./\"; // forward import\nimport {GtOperator} from \"./\"; // forward import\nimport {PlusOperator} from \"./\"; // forward import\nimport {MinusOperator} from \"./\"; // forward import\nimport {TimesOperator} from \"./\"; // forward import\nimport {DivideOperator} from \"./\"; // forward import\nimport {ModuloOperator} from \"./\"; // forward import\nimport {LambdaFunc} from \"./\"; // forward import\n\n/** @public */\nexport type ValueLike = Value\n                      | {readonly [key: string]: ValueLike}\n                      | readonly ItemLike[]\n                      | Uint8Array\n                      | string\n                      | number\n                      | boolean\n                      | null\n                      | undefined;\n\n/** @public */\nexport abstract class Value extends Item {\n  /** @internal */\n  constructor() {\n    super();\n  }\n\n  override likeType?(like: {readonly [key: string]: ValueLike}\n                         | readonly ItemLike[]\n                         | Uint8Array\n                         | string\n                         | number\n                         | boolean\n                         | null\n                         | undefined): void;\n\n  /**\n   * Returns `true` if this `Value` is not [[Absent]].\n   */\n  override isDefined(): boolean {\n    return true;\n  }\n\n  /**\n   * Returns `true` if this `Value` is neither [[Extant]] nor [[Absent]].\n   */\n  override isDistinct(): boolean {\n    return true;\n  }\n\n  /**\n   * Returns `true` if this `Value` is not one of: an empty `Record`, `False`,\n   * `Extant`, or `Absent`.\n   */\n  override isDefinite(): boolean {\n    return true;\n  }\n\n  /**\n   * Always returns [[Absent]] because a `Value` can't be a `Field`, so it\n   * can't have a key component.\n   */\n  override get key(): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Always returns `this` because every `Value` is its own value component.\n   */\n  override toValue(): Value {\n    return this;\n  }\n\n  /**\n   * Returns the `key` string of the first member of this `Value`, if this\n   * `Value` is a [[Record]], and its first member is an [[Attr]]; otherwise\n   * returns `undefined` if this `Value` is not a `Record`, or if this `Value`\n   * is a `Record` whose first member is not an `Attr`.\n   *\n   * Used to concisely get the name of the discriminating attribute of a\n   * structure. The `tag` can be used to discern the nominal type of a\n   * polymorphic structure, similar to an XML element tag.\n   */\n  override get tag(): string | undefined {\n    return void 0;\n  }\n\n  /**\n   * Returns the [[Value.flattened flattened]] members of this `Value` after\n   * all attributes have been removed, if this `Value` is a [[Record]];\n   * otherwise returns `this` if this `Value` is not a `Record`.\n   *\n   * Used to concisely get the scalar value of an attributed structure. An\n   * attributed structure is a `Record` with one or more attributes that modify\n   * one or more other members.\n   */\n  override get target(): Value {\n    return this;\n  }\n\n  /**\n   * Returns the sole member of this `Value`, if this `Value` is a [[Record]]\n   * with exactly one member, and its member is a `Value`; returns [[Extant]]\n   * if this `Value` is an empty `Record`; otherwise returns `this` if this\n   * `Value` is a `Record` with more than one member, or if this `Value` is a\n   * not a `Record`.\n   *\n   * Used to convert a unary `Record` into its member `Value`. Facilitates\n   * writing code that treats a unary `Record` equivalently to a bare `Value`.\n   */\n  override flattened(): Value {\n    return this;\n  }\n\n  /**\n   * Returns `this` if this `Value` is a [[Record]]; returns a `Record`\n   * containing just this `Value`, if this `Value` is [[Value.isDistinct\n   * distinct]]; otherwise returns an empty `Record` if this `Value` is\n   * [[Extant]] or [[Absent]]. Facilitates writing code that treats a bare\n   * `Value` equivalently to a unary `Record`.\n   */\n  override unflattened(): Record {\n    return Record.of(this);\n  }\n\n  /**\n   * Returns the value of the first member of this `Value`, if this `Value` is\n   * a `Record`, and its first member is an [[Attr]] whose `key` string is\n   * equal to `tag`; otherwise returns [[Absent]] if this `Value` is not a\n   * `Record`, or if this `Value` is a `Record` whose first member is not an\n   * `Attr`, or if this `Value` is a `Record` whose first member is an `Attr`\n   * whose `key` does not equal the `tag`.\n   *\n   * Used to conditionally get the value of the head `Attr` of a structure, if\n   * and only if the key string of the head `Attr` is equal to the `tag`. Can\n   * be used to check if a structure might conform to a nominal type named\n   * `tag`, while simultaneously getting the value of the `tag` attribute.\n   */\n  override header(tag: string): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Returns the [[Value.unflattened unflattened]] [[Value.header header]] of\n   * this `Value`, if this `Value` is a [[Record]], and its first member is an\n   * [[Attr]] whose `key` string is equal to `tag`; otherwise returns\n   * `undefined`.\n   *\n   * The `headers` of the `tag` attribute of a structure are like the\n   * attributes of an XML element tag; through unlike an XML element, `tag`\n   * attribute headers are not limited to string keys and values.\n   */\n  override headers(tag: string): Record | undefined {\n    return void 0;\n  }\n\n  /**\n   * Returns the first member of this `Value`, if this `Value` is a non-empty\n   * [[Record]]; otherwise returns [[Absent]].\n   */\n  override head(): Item {\n    return Item.absent();\n  }\n\n  /**\n   * Returns a view of all but the first member of this `Value`, if this\n   * `Value` is a non-empty [[Record]]; otherwise returns an empty `Record`\n   * if this `Value` is not a `Record`, of if this `Value` is itself an\n   * empty `Record`.\n   */\n  override tail(): Record {\n    return Record.empty();\n  }\n\n  /**\n   * Returns the [[Record.flattened flattened]] [[Value.tail tail]] of this\n   * `Value`. Used to recursively deconstruct a structure, terminating with\n   * its last `Value`, rather than a unary `Record` containing its last value,\n   * if the structure ends with a `Value` member.\n   */\n  override body(): Value {\n    return Value.extant();\n  }\n\n  /**\n   * Returns the number of members contained in this `Value`, if this `Value`\n   * is a [[Record]]; otherwise returns `0` if this `Value` is not a `Record`.\n   */\n  override get length(): number {\n    return 0;\n  }\n\n  /**\n   * Returns `true` if this `Value` is a [[Record]] that has a [[Field]] member\n   * with a key that is equal to the given `key`; otherwise returns `false` if\n   * this `Value` is not a `Record`, or if this `Value` is a `Record`, but has\n   * no `Field` member with a key equal to the given `key`.\n   */\n  override has(key: ValueLike): boolean {\n    return false;\n  }\n\n  /**\n   * Returns the value of the last [[Field]] member of this `Value` whose key\n   * is equal to the given `key`; returns [[Absent]] if this `Value` is not a\n   * [[Record]], or if this `Value` is a `Record`, but has no `Field` member\n   * with a key equal to the given `key`.\n   */\n  override get(key: ValueLike): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Returns the value of the last [[Attr]] member of this `Value` whose key\n   * is equal to the given `key`; returns [[Absent]] if this `Value` is not a\n   * [[Record]], or if this `Value` is a `Record`, but has no `Attr` member\n   * with a key equal to the given `key`.\n   */\n  override getAttr(key: TextLike): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Returns the value of the last [[Slot]] member of this `Value` whose key\n   * is equal to the given `key`; returns [[Absent]] if this `Value` is not a\n   * [[Record]], or if this `Value` is a `Record`, but has no `Slot` member\n   * with a key equal to the given `key`.\n   */\n  override getSlot(key: ValueLike): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Returns the last [[Field]] member of this `Value` whose key is equal to\n   * the given `key`; returns `undefined` if this `Value` is not a [[Record]],\n   * or if this `Value` is a `Record`, but has no `Field` member with a `key`\n   * equal to the given `key`.\n   */\n  override getField(key: ValueLike): Field | undefined {\n    return void 0;\n  }\n\n  /**\n   * Returns the member of this `Value` at the given `index`, if this `Value`\n   * is a [[Record]], and the `index` is greater than or equal to zero, and\n   * less than the [[Record.length length]] of the `Record`; otherwise returns\n   * [[Absent]] if this `Value` is not a `Record`, or if this `Value` is a\n   * `Record`, but the `index` is out of bounds.\n   */\n  override getItem(index: NumLike): Item {\n    return Item.absent();\n  }\n\n  override deleted(key: ValueLike): Value {\n    return this;\n  }\n\n  override conditional(thenTerm: ValueLike, elseTerm: ValueLike): Value;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item {\n    thenTerm = Item.fromLike(thenTerm);\n    return thenTerm;\n  }\n\n  override or(that: ValueLike): Value;\n  override or(that: ItemLike): Item;\n  override or(that: ItemLike): Item {\n    return this;\n  }\n\n  override and(that: ValueLike): Value;\n  override and(that: ItemLike): Item;\n  override and(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    return that;\n  }\n\n  override bitwiseOr(that: ValueLike): Value;\n  override bitwiseOr(that: ItemLike): Item;\n  override bitwiseOr(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new BitwiseOrOperator(this, that);\n    } else if (that instanceof Attr) {\n      const newValue = this.bitwiseOr(that.value);\n      if (newValue.isDefined()) {\n        return new Attr(that.key, newValue);\n      }\n    } else if (that instanceof Slot) {\n      const newValue = this.bitwiseOr(that.value);\n      if (newValue.isDefined()) {\n        return new Slot(that.key, newValue);\n      }\n    }\n    return Item.absent();\n  }\n\n  override bitwiseXor(that: ValueLike): Value;\n  override bitwiseXor(that: ItemLike): Item;\n  override bitwiseXor(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new BitwiseXorOperator(this, that);\n    } else if (that instanceof Attr) {\n      const newValue = this.bitwiseXor(that.value);\n      if (newValue.isDefined()) {\n        return new Attr(that.key, newValue);\n      }\n    } else if (that instanceof Slot) {\n      const newValue = this.bitwiseXor(that.value);\n      if (newValue.isDefined()) {\n        return new Slot(that.key, newValue);\n      }\n    }\n    return Item.absent();\n  }\n\n  override bitwiseAnd(that: ValueLike): Value;\n  override bitwiseAnd(that: ItemLike): Item;\n  override bitwiseAnd(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new BitwiseAndOperator(this, that);\n    } else if (that instanceof Attr) {\n      const newValue = this.bitwiseAnd(that.value);\n      if (newValue.isDefined()) {\n        return new Attr(that.key, newValue);\n      }\n    } else if (that instanceof Slot) {\n      const newValue = this.bitwiseAnd(that.value);\n      if (newValue.isDefined()) {\n        return new Slot(that.key, newValue);\n      }\n    }\n    return Item.absent();\n  }\n\n  override lt(that: ValueLike): Value;\n  override lt(that: ItemLike): Item;\n  override lt(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new LtOperator(this, that);\n    }\n    return super.lt(that);\n  }\n\n  override le(that: ValueLike): Value;\n  override le(that: ItemLike): Item;\n  override le(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new LeOperator(this, that);\n    }\n    return super.le(that);\n  }\n\n  override eq(that: ValueLike): Value;\n  override eq(that: ItemLike): Item;\n  override eq(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new EqOperator(this, that);\n    }\n    return super.eq(that);\n  }\n\n  override ne(that: ValueLike): Value;\n  override ne(that: ItemLike): Item;\n  override ne(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new NeOperator(this, that);\n    }\n    return super.ne(that);\n  }\n\n  override ge(that: ValueLike): Value;\n  override ge(that: ItemLike): Item;\n  override ge(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new GeOperator(this, that);\n    }\n    return super.ge(that);\n  }\n\n  override gt(that: ValueLike): Value;\n  override gt(that: ItemLike): Item;\n  override gt(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new GtOperator(this, that);\n    }\n    return super.gt(that);\n  }\n\n  override plus(that: ValueLike): Value;\n  override plus(that: ItemLike): Item;\n  override plus(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new PlusOperator(this, that);\n    } else if (that instanceof Attr) {\n      const newValue = this.plus(that.value);\n      if (newValue.isDefined()) {\n        return new Attr(that.key, newValue);\n      }\n    } else if (that instanceof Slot) {\n      const newValue = this.plus(that.value);\n      if (newValue.isDefined()) {\n        return new Slot(that.key, newValue);\n      }\n    }\n    return Item.absent();\n  }\n\n  override minus(that: ValueLike): Value;\n  override minus(that: ItemLike): Item;\n  override minus(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new MinusOperator(this, that);\n    } else if (that instanceof Attr) {\n      const newValue = this.minus(that.value);\n      if (newValue.isDefined()) {\n        return new Attr(that.key, newValue);\n      }\n    } else if (that instanceof Slot) {\n      const newValue = this.minus(that.value);\n      if (newValue.isDefined()) {\n        return new Slot(that.key, newValue);\n      }\n    }\n    return Item.absent();\n  }\n\n  override times(that: ValueLike): Value;\n  override times(that: ItemLike): Item;\n  override times(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new TimesOperator(this, that);\n    } else if (that instanceof Attr) {\n      const newValue = this.times(that.value);\n      if (newValue.isDefined()) {\n        return new Attr(that.key, newValue);\n      }\n    } else if (that instanceof Slot) {\n      const newValue = this.times(that.value);\n      if (newValue.isDefined()) {\n        return new Slot(that.key, newValue);\n      }\n    }\n    return Item.absent();\n  }\n\n  override divide(that: ValueLike): Value;\n  override divide(that: ItemLike): Item;\n  override divide(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new DivideOperator(this, that);\n    } else if (that instanceof Attr) {\n      const newValue = this.divide(that.value);\n      if (newValue.isDefined()) {\n        return new Attr(that.key, newValue);\n      }\n    } else if (that instanceof Slot) {\n      const newValue = this.divide(that.value);\n      if (newValue.isDefined()) {\n        return new Slot(that.key, newValue);\n      }\n    }\n    return Item.absent();\n  }\n\n  override modulo(that: ValueLike): Value;\n  override modulo(that: ItemLike): Item;\n  override modulo(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Expression) {\n      return new ModuloOperator(this, that);\n    } else if (that instanceof Attr) {\n      const newValue = this.modulo(that.value);\n      if (newValue.isDefined()) {\n        return new Attr(that.key, newValue);\n      }\n    } else if (that instanceof Slot) {\n      const newValue = this.modulo(that.value);\n      if (newValue.isDefined()) {\n        return new Slot(that.key, newValue);\n      }\n    }\n    return Item.absent();\n  }\n\n  override not(): Value {\n    return Value.absent();\n  }\n\n  override bitwiseNot(): Value {\n    return Value.absent();\n  }\n\n  override negative(): Value {\n    return Value.absent();\n  }\n\n  override positive(): Value {\n    return Value.absent();\n  }\n\n  override inverse(): Value {\n    return Value.absent();\n  }\n\n  override lambda(template: Value): Value {\n    return new LambdaFunc(this, template);\n  }\n\n  /**\n   * Converts this `Value` into a `string` value, if possible; otherwise returns\n   * `undefined` if this `Value` can't be converted into a `string` value.\n   */\n  override stringValue(): string | undefined;\n  /**\n   * Converts this `Value` into a `string` value, if possible; otherwise returns\n   * `orElse` if this `Value` can't be converted into a `string` value.\n   */\n  override stringValue<T>(orElse: T): string | T;\n  override stringValue<T>(orElse?: T): string | T | undefined {\n    return orElse;\n  }\n\n  /**\n   * Converts this `Value` into a `number` value, if possible; otherwise returns\n   * `undefined` if this `Value` can't be converted into a `number` value.\n   */\n  override numberValue(): number | undefined;\n  /**\n   * Converts this `Value` into a `number` value, if possible; otherwise returns\n   * `orElse` if this `Value` can't be converted into a `number` value.\n   */\n  override numberValue<T>(orElse: T): number | T;\n  override numberValue<T>(orElse?: T): number | T | undefined {\n    return orElse;\n  }\n\n  /**\n   * Converts this `Value` into a `boolean` value, if possible; otherwise\n   * returns `undefined` if this `Value` can't be converted into a `boolean`\n   * value.\n   */\n  override booleanValue(): boolean | undefined;\n  /**\n   * Converts this `Value` into a `boolean` value, if possible; otherwise\n   * returns `orElse` if this `Value` can't be converted into a `boolean` value.\n   */\n  override booleanValue<T>(orElse: T): boolean | T;\n  override booleanValue<T>(orElse?: T): boolean | T | undefined {\n    return orElse;\n  }\n\n  abstract override toLike(): ValueLike;\n\n  override isAliased(): boolean {\n    return false;\n  }\n\n  override isMutable(): boolean {\n    return false;\n  }\n\n  override alias(): void {\n    // nop\n  }\n\n  override branch(): Value {\n    return this;\n  }\n\n  override clone(): Value {\n    return this;\n  }\n\n  override commit(): this {\n    return this;\n  }\n\n  override interpolateTo(that: Value): Interpolator<Value>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    return super.interpolateTo(that);\n  }\n\n  override keyEquals(key: unknown): boolean {\n    return false;\n  }\n\n  static builder(): Builder<Item, Value> {\n    return new ValueBuilder();\n  }\n\n  static override empty(): Value {\n    return Record.empty();\n  }\n\n  static override extant(): Value {\n    return Extant.extant();\n  }\n\n  static override absent(): Value {\n    return Absent.absent();\n  }\n\n  static override fromLike(value: ValueLike): Value {\n    if (value instanceof Value) {\n      return value;\n    } else if (value instanceof Item) {\n      return Record.create(1).item(value);\n    } else if (value === void 0) {\n      return Absent.absent();\n    } else if (value === null) {\n      return Extant.extant();\n    } else if (typeof value === \"boolean\") {\n      return Bool.from(value);\n    } else if (typeof value === \"number\") {\n      return Num.from(value);\n    } else if (typeof value === \"string\") {\n      return Text.from(value);\n    } else if (value instanceof Uint8Array) {\n      return Data.wrap(value);\n    } else if (Array.isArray(value)) {\n      return Record.fromArray(value);\n    } else if (typeof value === \"object\") {\n      return Record.fromObject(value as {[key: string]: ValueLike});\n    }\n    throw new TypeError(\"\" + value);\n  }\n}\n\n/** @internal */\nexport class ValueBuilder implements Builder<Item, Value> {\n  /** @internal */\n  record: Record | null;\n  /** @internal */\n  value: Value | null;\n\n  constructor() {\n    this.record = null;\n    this.value = null;\n  }\n\n  push(...items: Item[]): void {\n    for (let i = 0; i < items.length; i += 1) {\n      const item = items[i]!;\n      if (item instanceof Field) {\n        return this.pushField(item);\n      } else if (item instanceof Value) {\n        return this.pushValue(item);\n      } else {\n        throw new TypeError(\"\" + item);\n      }\n    }\n  }\n\n  /** @internal */\n  pushField(item: Field): void {\n    if (this.record === null) {\n      this.record = Record.create();\n      if (this.value !== null) {\n        this.record.push(this.value);\n        this.value = null;\n      }\n    }\n    this.record.push(item);\n  }\n\n  /** @internal */\n  pushValue(item: Value): void {\n    if (this.record !== null) {\n      this.record.push(item);\n    } else if (this.value === null) {\n      this.value = item;\n    } else {\n      this.record = Record.create();\n      this.record.push(this.value);\n      this.value = null;\n      this.record.push(item);\n    }\n  }\n\n  build(): Value {\n    if (this.record !== null) {\n      return this.record;\n    } else if (this.value !== null) {\n      return this.value;\n    }\n    return Value.absent();\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport {Cursor} from \"@swim/util\";\nimport type {Builder} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport {Field} from \"./Field\";\nimport {Attr} from \"./Attr\";\nimport {Slot} from \"./Slot\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./Value\";\nimport {RecordMap} from \"./\"; // forward import\nimport type {TextLike} from \"./Text\";\nimport {Text} from \"./\"; // forward import\nimport type {NumLike} from \"./Num\";\nimport type {InterpreterLike} from \"./interpreter/Interpreter\";\nimport {Interpreter} from \"./\"; // forward import\n\n/** @public */\nexport type RecordLike = Record\n                       | {readonly [key: string]: ValueLike}\n                       | readonly ItemLike[];\n\n/** @public */\nexport abstract class Record extends Value implements Builder<Item, Record> {\n  /** @internal */\n  constructor() {\n    super();\n  }\n\n  override likeType?(like: {readonly [key: string]: ValueLike}\n                         | readonly ItemLike[]): void;\n\n  override isDefinite(): boolean {\n    return !this.isEmpty();\n  }\n\n  /**\n   * Returns `true` if this `Record` has no members.\n   */\n  abstract isEmpty(): boolean;\n\n  /**\n   * Returns `true` if this `Record` has only [[Value]] members–no `Field`\n   * members.\n   */\n  isArray(): boolean {\n    return this.fieldCount === 0;\n  }\n\n  /**\n   * Returns `true` if this `Record` has only [[Field]] members–no `Value`\n   * members.\n   */\n  isObject(): boolean {\n    return this.valueCount === 0;\n  }\n\n  /**\n   * Returns the number of members contained in this `Record`.\n   */\n  abstract override get length(): number;\n\n  /**\n   * Returns the number of [[Field]] members contained in this `Record`.\n   */\n  declare readonly fieldCount: number; // getter defined below to work around useDefineForClassFields lunacy\n\n  /**\n   * Returns the number of [[Value]] members contained in this `Record`.\n   */\n  get valueCount(): number {\n    let count = 0;\n    this.forEach(function (member: Item): void {\n      if (member instanceof Value) {\n        count += 1;\n      }\n    }, this);\n    return count;\n  }\n\n  override isConstant(): boolean {\n    return this.forEach(function (member: Item): boolean | undefined {\n      return member.isConstant() ? void 0 : false;\n    }, this) === void 0;\n  }\n\n  /**\n   * Returns the `key` string of the first member of this `Record`, if the\n   * first member is an [[Attr]]; otherwise returns `undefined` if the first\n   * member is not an `Attr`.\n   *\n   * Used to concisely get the name of the discriminating attribute of a\n   * structure. The `tag` can be used to discern the nominal type of a\n   * polymorphic structure, similar to an XML element tag.\n   */\n  override get tag(): string | undefined {\n    const item = this.head();\n    if (item instanceof Attr) {\n      return item.key.value;\n    }\n    return void 0;\n  }\n\n  /**\n   * Returns the [[Record.flattened flattened]] members of this `Record` after\n   * all attributes have been removed.\n   *\n   * Used to concisely get the scalar value of an attributed structure. An\n   * attributed structure is a `Record` with one or more attributes that modify\n   * one or more other members.\n   */\n  override get target(): Value {\n    let value: Value | undefined;\n    let record: Record | undefined;\n    let modified = false;\n    this.forEach(function (item: Item): void {\n      if (item instanceof Attr) {\n        modified = true;\n      } else if (value === void 0 && item instanceof Value) {\n        value = item;\n      } else {\n        if (record === void 0) {\n          record = Record.create();\n          if (value !== void 0) {\n            record.push(value);\n          }\n        }\n        record.push(item);\n      }\n    }, this);\n    if (value === void 0) {\n      return Value.extant();\n    } else if (record === void 0) {\n      return value;\n    } else if (modified) {\n      return record;\n    }\n    return this;\n  }\n\n  /**\n   * Returns the sole member of this `Record`, if this `Record` has exactly one\n   * member, and its member is a `Value`; returns [[Extant]] if this `Record`\n   * is empty; otherwise returns `this` if this `Record` has more than one\n   * member.\n   *\n   * Used to convert a unary `Record` into its member `Value`. Facilitates\n   * writing code that treats a unary `Record` equivalently to a bare `Value`.\n   */\n  override flattened(): Value {\n    if (this.isEmpty()) {\n      return Value.extant();\n    }\n    const items = this.iterator();\n    const head = items.head();\n    items.step();\n    if (items.isEmpty() && head instanceof Value) {\n      return head;\n    } else {\n      return this.branch();\n    }\n  }\n\n  /**\n   * Returns this `Record`.\n   */\n  override unflattened(): Record {\n    return this;\n  }\n\n  /**\n   * Returns the value of the first member of this `Record`, if the first\n   * member is an [[Attr]] whose `key` string is equal to `tag`; otherwise\n   * returns [[Absent]] if the first member of this `Record` is not an `Attr`,\n   * or if the first member of this `Record` is an `Attr` whose `key` does not\n   * equal the `tag`.\n   *\n   * Used to conditionally get the value of the head `Attr` of a structure, if\n   * and only if the key string of the head `Attr` is equal to the `tag`. Can\n   * be used to check if a structure might conform to a nominal type named\n   * `tag`, while simultaneously getting the value of the `tag` attribute.\n   */\n  override header(tag: string): Value {\n    const head = this.head();\n    if (!(head instanceof Attr) || head.key.value !== tag) {\n      return Value.absent();\n    }\n    return head.value;\n  }\n\n  /**\n   * Returns the [[Record.unflattened unflattened]] [[Record.header header]] of\n   * this `Record`. The `headers` of the `tag` attribute of a structure are\n   * like the attributes of an XML element tag; through unlike an XML element,\n   * `tag` attribute headers are not limited to string keys and values.\n   */\n  override headers(tag: string): Record | undefined {\n    const head = this.head();\n    if (!(head instanceof Attr) || head.key.value !== tag) {\n      return void 0;\n    }\n    const header = head.value;\n    if (header instanceof Record) {\n      return header;\n    }\n    return Record.of(header);\n  }\n\n  /**\n   * Returns the first member of this `Record`, if this `Record` is non-empty;\n   * otherwise returns [[Absent]].\n   */\n  override head(): Item {\n    return this.forEach(function (item: Item): Item {\n      return item;\n    }, this) || Item.absent();\n  }\n\n  /**\n   * Returns a view of all but the first member of this `Record`, if this\n   * `Record` is non-empty; otherwise returns an empty `Record`, if this\n   * `Record` is itself empty.\n   */\n  override tail(): Record {\n    const tail = Record.create();\n    this.forEach(function (item: Item, index: number): void {\n      if (index > 0) {\n        tail.push(item);\n      }\n    }, this);\n    return tail;\n  }\n\n  /**\n   * Returns the [[Record.flattened flattened]] [[Record.tail tail]] of this\n   * `Record`. Used to recursively deconstruct a structure, terminating\n   * with its last `Value`, rather than a unary `Record` containing its last\n   * value, if the structure ends with a `Value` member.\n   */\n  override body(): Value {\n    const tail = this.tail();\n    if (tail.isEmpty()) {\n      return Value.absent();\n    }\n    return tail.flattened();\n  }\n\n  /**\n   * Returns `true` if this `Record` has a [[Field]] member with a key that is\n   * equal to the given `key`; otherwise returns `false` if this `Record` has\n   * no `Field` member with a key equal to the given `key`.\n   */\n  override has(key: ValueLike): boolean {\n    key = Value.fromLike(key);\n    return this.forEach(function (item: Item): boolean | undefined {\n      return item instanceof Field && item.key.equals(key) ? true : void 0;\n    }, this) || false;\n  }\n\n  indexOf(item: ItemLike, index: number = 0): number {\n    item = Item.fromLike(item);\n    if (index < 0) {\n      index = Math.max(0, this.length + index);\n    }\n    const i = this.forEach(function (member: Item, i: number): number | undefined {\n      return i >= index && (item as Item).equals(member) ? i : void 0;\n    }, this);\n    return i !== void 0 ? i : -1;\n  }\n\n  lastIndexOf(item: ItemLike, index?: number): number {\n    item = Item.fromLike(item);\n    const n = this.length;\n    if (index === void 0) {\n      index = n - 1;\n    } else if (index < 0) {\n      index = n + index;\n    }\n    index = Math.min(index, n - 1);\n    while (index >= 0) {\n      if (item.equals(this.getItem(index))) {\n        return index;\n      }\n      index -= 1;\n    }\n    return -1;\n  }\n\n  /**\n   * Returns the value of the last [[Field]] member of this `Record` whose key\n   * is equal to the given `key`; returns [[Absent]] if this `Record` has no\n   * `Field` member with a key equal to the given `key`.\n   */\n  override get(key: ValueLike): Value {\n    key = Value.fromLike(key);\n    return this.forEach(function (item: Item): Value | undefined {\n      return item instanceof Field && item.key.equals(key) ? item.value : void 0;\n    }, this) || Value.absent();\n  }\n\n  /**\n   * Returns the value of the last [[Attr]] member of this `Record` whose key\n   * is equal to the given `key`; returns [[Absent]] if this `Record` has no\n   * `Attr` member with a key equal to the given `key`.\n   */\n  override getAttr(key: TextLike): Value {\n    key = Text.fromLike(key);\n    return this.forEach(function (item: Item): Value | undefined {\n      return item instanceof Attr && item.key.equals(key) ? item.value : void 0;\n    }, this) || Value.absent();\n  }\n\n  /**\n   * Returns the value of the last [[Slot]] member of this `Record` whose key\n   * is equal to the given `key`; returns [[Absent]] if this `Record` has no\n   * `Slot` member with a key equal to the given `key`.\n   */\n  override getSlot(key: ValueLike): Value {\n    key = Value.fromLike(key);\n    return this.forEach(function (item: Item): Value | undefined {\n      return item instanceof Slot && item.key.equals(key) ? item.value : void 0;\n    }, this) || Value.absent();\n  }\n\n  /**\n   * Returns the last [[Field]] member of this `Record` whose key is equal to\n   * the given `key`; returns `undefined` if this `Record` has no `Field` member\n   * with a `key` equal to the given `key`.\n   */\n  override getField(key: ValueLike): Field | undefined {\n    key = Value.fromLike(key);\n    return this.forEach(function (item: Item): Field | undefined {\n      return item instanceof Field && item.key.equals(key) ? item : void 0;\n    }, this);\n  }\n\n  /**\n   * Returns the member of this `Record` at the given `index`, if the `index`\n   * is greater than or equal to zero, and less than the [[Record.length\n   * length]] of this `Record`; otherwise returns [[Absent]] if the `index` is\n   * out of bounds.\n   */\n  abstract override getItem(index: NumLike): Item;\n\n  set(key: ValueLike, newValue: ValueLike): this {\n    key = Value.fromLike(key);\n    newValue = Value.fromLike(newValue);\n    const items = this.iterator();\n    while (!items.isEmpty()) {\n      const item = items.head();\n      if (item instanceof Field && item.key.equals(key)) {\n        if (item.isMutable()) {\n          item.setValue(newValue);\n        } else {\n          items.set(item.updatedValue(newValue));\n        }\n        return this;\n      }\n      items.step();\n    }\n    this.push(new Slot(key, newValue));\n    return this;\n  }\n\n  setAttr(key: TextLike, newValue: ValueLike): this {\n    key = Text.fromLike(key);\n    newValue = Value.fromLike(newValue);\n    const items = this.iterator();\n    while (!items.isEmpty()) {\n      const item = items.head();\n      if (item instanceof Field && item.key.equals(key)) {\n        if (item instanceof Attr && item.isMutable()) {\n          item.setValue(newValue);\n        } else {\n          items.set(new Attr(key, newValue));\n        }\n        return this;\n      }\n      items.step();\n    }\n    this.push(new Attr(key, newValue));\n    return this;\n  }\n\n  setSlot(key: ValueLike, newValue: ValueLike): this {\n    key = Value.fromLike(key);\n    newValue = Value.fromLike(newValue);\n    const items = this.iterator();\n    while (!items.isEmpty()) {\n      const item = items.head();\n      if (item instanceof Field && item.key.equals(key)) {\n        if (item instanceof Slot && item.isMutable()) {\n          item.setValue(newValue);\n        } else {\n          items.set(new Slot(key, newValue));\n        }\n        return this;\n      }\n      items.step();\n    }\n    this.push(new Slot(key, newValue));\n    return this;\n  }\n\n  /**\n   * Replaces the member of this `Record` at the given `index` with a new\n   * `item`, returning `this` `Record`, if the `index` is greater than or\n   * equal to zero, and less than the [[Record.length length]] of this `Record`.\n   *\n   * @throws `Error` if this is an immutable `Record`.\n   * @throws `RangeError` if the `index` is out of bounds.\n   */\n  abstract setItem(index: number, item: ItemLike): this;\n\n  override updated(key: ValueLike, value: ValueLike): Record {\n    key = Value.fromLike(key);\n    value = Value.fromLike(value);\n    const record = this.isMutable() ? this : this.branch();\n    const items = record.iterator();\n    while (!items.isEmpty()) {\n      const item = items.head();\n      if (item.key.equals(key)) {\n        if (item instanceof Field && item.isMutable()) {\n          item.setValue(value);\n        } else {\n          items.set(new Slot(key, value));\n        }\n        return record;\n      }\n      items.step();\n    }\n    record.push(new Slot(key, value));\n    return record;\n  }\n\n  override updatedAttr(key: TextLike, value: ValueLike): Record {\n    key = Text.fromLike(key);\n    value = Value.fromLike(value);\n    const record = this.isMutable() ? this : this.branch();\n    const items = record.iterator();\n    while (!items.isEmpty()) {\n      const item = items.head();\n      if (item.key.equals(key)) {\n        if (item instanceof Attr && item.isMutable()) {\n          item.setValue(value);\n        } else {\n          items.set(new Attr(key, value));\n        }\n        return record;\n      }\n      items.step();\n    }\n    record.push(new Attr(key, value));\n    return record;\n  }\n\n  override updatedSlot(key: ValueLike, value: ValueLike): Record {\n    key = Value.fromLike(key);\n    value = Value.fromLike(value);\n    const record = this.isMutable() ? this : this.branch();\n    const items = record.iterator();\n    while (!items.isEmpty()) {\n      const item = items.head();\n      if (item.key.equals(key)) {\n        if (item instanceof Slot && item.isMutable()) {\n          item.setValue(value);\n        } else {\n          items.set(new Slot(key, value));\n        }\n        return record;\n      }\n      items.step();\n    }\n    record.push(new Slot(key, value));\n    return record;\n  }\n\n  abstract push(...items: ItemLike[]): number;\n\n  abstract splice(start: number, deleteCount?: number, ...newItems: ItemLike[]): Item[];\n\n  abstract delete(key: ValueLike): Item;\n\n  abstract clear(): void;\n\n  override appended(...items: ItemLike[]): Record {\n    const record = this.isMutable() ? this : this.branch();\n    record.push(...items);\n    return record;\n  }\n\n  override prepended(...items: ItemLike[]): Record {\n    const record = this.isMutable() ? this : this.branch();\n    record.splice(0, 0, ...items);\n    return record;\n  }\n\n  override deleted(key: ValueLike): Record {\n    const record = this.isMutable() ? this : this.branch();\n    record.delete(key);\n    return record;\n  }\n\n  override concat(...items: ItemLike[]): Record {\n    const record = this.isMutable() ? this : this.branch();\n    for (let i = 0; i < items.length; i += 1) {\n      Item.fromLike(items[i]).forEach(function (item: Item): void {\n        record.push(item);\n      });\n    }\n    return record;\n  }\n\n  slice(lower?: number, upper?: number): Record {\n    return this.subRecord(lower, upper).branch();\n  }\n\n  attr(key: TextLike, value?: ValueLike): this {\n    let field: Field;\n    if (arguments.length === 1) {\n      field = Attr.of(key);\n    } else {\n      field = Attr.of(key, value);\n    }\n    this.push(field);\n    return this;\n  }\n\n  slot(key: ValueLike, value?: ValueLike): this {\n    let field: Field;\n    if (arguments.length === 1) {\n      field = Slot.of(key);\n    } else {\n      field = Slot.of(key, value);\n    }\n    this.push(field);\n    return this;\n  }\n\n  item(item: ItemLike): this {\n    this.push(item);\n    return this;\n  }\n\n  items(...items: ItemLike[]): this {\n    this.push(this, ...items);\n    return this;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Record {\n    interpreter = Interpreter.fromLike(interpreter);\n    const scope = Record.create();\n    interpreter.pushScope(scope);\n    let changed = false;\n    this.forEach(function (oldItem: Item): void {\n      const newItem = oldItem.evaluate(interpreter);\n      if (newItem.isDefined()) {\n        scope.push(newItem);\n      }\n      if (oldItem !== newItem) {\n        changed = true;\n      }\n    }, this);\n    interpreter.popScope();\n    return changed ? scope : this;\n  }\n\n  override substitute(interpreter: InterpreterLike): Record {\n    interpreter = Interpreter.fromLike(interpreter);\n    const scope = Record.create();\n    interpreter.pushScope(scope);\n    let changed = false;\n    this.forEach(function (oldItem: Item) {\n      const newItem = oldItem.substitute(interpreter);\n      if (newItem.isDefined()) {\n        scope.push(newItem);\n      }\n      if (oldItem !== newItem) {\n        changed = true;\n      }\n    }, this);\n    interpreter.popScope();\n    return changed ? scope : this;\n  }\n\n  override stringValue(): string | undefined;\n  override stringValue<T>(orElse: T): string | T;\n  override stringValue<T>(orElse?: T): string | T | undefined {\n    let recordString = \"\";\n    const defined = this.forEach(function (item: Item): null | void {\n      if (item instanceof Value) {\n        const itemString = item.stringValue();\n        if (itemString !== void 0) {\n          recordString += itemString;\n          return;\n        }\n      }\n      return null; // break\n    }, this) === void 0;\n    return defined ? recordString : void 0;\n  }\n\n  override toLike(): ValueLike {\n    if (!this.isEmpty() && this.isArray()) {\n      return this.toArray();\n    }\n    return this.toObject();\n  }\n\n  toArray(): ItemLike[] {\n    const array = new Array<ItemLike>(this.length);\n    this.forEach(function (item: Item, index: number): void {\n      if (item instanceof Value) {\n        array[index] = item.toLike();\n      } else if (item instanceof Field) {\n        array[index] = {\n          $key: item.key.toLike(),\n          $value: item.value.toLike(),\n        };\n      }\n    }, this);\n    return array;\n  }\n\n  toObject(): {[key: string]: ValueLike} {\n    const object = {} as {[key: string]: ValueLike};\n    this.forEach(function (item: Item, index: number): void {\n      if (item instanceof Attr) {\n        object[\"@\" + item.key.value] = item.value.toLike();\n      } else if (item instanceof Slot) {\n        if (item.key instanceof Text) {\n          object[item.key.value] = item.value.toLike();\n        } else {\n          object[\"$\" + index] = {\n            $key: item.key.toLike(),\n            $value: item.value.toLike(),\n          };\n        }\n      } else if (item instanceof Value) {\n        object[\"$\" + index] = item.toLike();\n      }\n    }, this);\n    return object;\n  }\n\n  override isAliased(): boolean {\n    return false;\n  }\n\n  override isMutable(): boolean {\n    return true;\n  }\n\n  override alias(): void {\n    // nop\n  }\n\n  override branch(): Record {\n    const branch = Record.create();\n    this.forEach(function (item: Item): void {\n      branch.push(item);\n    }, this);\n    return branch;\n  }\n\n  override clone(): Record {\n    const clone = Record.create();\n    this.forEach(function (item: Item): void {\n      clone.push(item.clone());\n    }, this);\n    return clone;\n  }\n\n  override commit(): this {\n    return this;\n  }\n\n  build(): Record {\n    return this;\n  }\n\n  subRecord(lower?: number, upper?: number): Record {\n    const n = this.length;\n    if (lower === void 0) {\n      lower = 0;\n    } else if (lower < 0) {\n      lower = n + lower;\n    }\n    lower = Math.min(Math.max(0, lower), n);\n    if (upper === void 0) {\n      upper = n;\n    } else if (upper < 0) {\n      upper = n + upper;\n    }\n    const record = Record.create();\n    this.forEach(function (item: Item, index: number): null | void {\n      if (index < lower!) {\n        return;\n      } else if (index < upper!) {\n        record.push(item);\n        return;\n      } else {\n        return null;\n      }\n    }, this);\n    return record;\n  }\n\n  abstract override forEach<T>(callback: (item: Item, index: number) => T | void): T | undefined;\n  abstract override forEach<T, S>(callback: (this: S, item: Item, index: number) => T | void, thisArg: S): T | undefined;\n\n  override iterator(): Cursor<Item> {\n    return new RecordCursor(this);\n  }\n\n  override interpolateTo(that: Record): Interpolator<Record>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof Record) {\n      return RecordInterpolator(this, that);\n    }\n    return super.interpolateTo(that);\n  }\n\n  override get typeOrder(): number {\n    return 3;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof Record) {\n      const xs = this.iterator();\n      const ys = that.iterator();\n      let order = 0;\n      do {\n        if (!xs.isEmpty() && !ys.isEmpty()) {\n          order = xs.head().compareTo(ys.head());\n          xs.step();\n          ys.step();\n        } else {\n          break;\n        }\n      } while (order === 0);\n      if (order !== 0) {\n        return order;\n      } else if (xs.isEmpty() && !ys.isEmpty()) {\n        return -1;\n      } else if (!xs.isEmpty() && ys.isEmpty()) {\n        return 1;\n      } else {\n        return 0;\n      }\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Record) {\n      const xs = this.iterator();\n      const ys = that.iterator();\n      while (!xs.isEmpty() && !ys.isEmpty()) {\n        if (!xs.head().equivalentTo(ys.head(), epsilon)) {\n          return false;\n        }\n        xs.step();\n        ys.step();\n      }\n      return xs.isEmpty() && ys.isEmpty();\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Record) {\n      const xs = this.iterator();\n      const ys = that.iterator();\n      while (!xs.isEmpty() && !ys.isEmpty()) {\n        if (!xs.head().equals(ys.head())) {\n          return false;\n        }\n        xs.step();\n        ys.step();\n      }\n      return xs.isEmpty() && ys.isEmpty();\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    let hashValue = Constructors.hash(Record);\n    this.forEach(function (item: Item): void {\n      hashValue = Murmur3.mix(hashValue, item.hashCode());\n    }, this);\n    return hashValue;\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Record\").write(46/*'.'*/);\n    if (this.isEmpty()) {\n      output = output.write(\"empty\").write(40/*'('*/).write(41/*')'*/);\n    } else {\n      output = output.write(\"of\").write(40/*'('*/);\n      this.forEach(function (item: Item, index: number): void {\n        if (index !== 0) {\n          output = output.write(44/*','*/).write(32/*' '*/);\n        }\n        output = output.display(item);\n      }, this);\n      output = output.write(41/*')'*/);\n    }\n    return output;\n  }\n\n  /** @internal */\n  static readonly AliasedFlag: number = 1;\n  /** @internal */\n  static readonly ImmutableFlag: number = 2;\n\n  static override empty(): Record {\n    return RecordMap.empty();\n  }\n\n  static create(initialCapacity?: number): Record {\n    return RecordMap.create(initialCapacity);\n  }\n\n  static of(...items: ItemLike[]): Record {\n    return RecordMap.of(...items);\n  }\n\n  static override fromLike(value: RecordLike): Record {\n    if (value instanceof Record) {\n      return value;\n    } else if (Array.isArray(value)) {\n      return Record.fromArray(value);\n    } else if (typeof value === \"object\" && value !== null) {\n      return Record.fromObject(value as {[key: string]: ValueLike});\n    }\n    throw new TypeError(\"\" + value);\n  }\n\n  static fromArray(array: {[index: number]: ItemLike, length?: number}): Record {\n    const n = array.length || 0;\n    const record = Record.create(n);\n    for (let i = 0; i < n; i += 1) {\n      record.push(Item.fromLike(array[i]));\n    }\n    return record;\n  }\n\n  static fromObject(object: {[key: string]: ValueLike}): Record {\n    const record = Record.create();\n    for (const key in object) {\n      const value = object[key];\n      if (key.charCodeAt(0) === 36/*'$'*/) {\n        if (!value || typeof value !== \"object\" || !Object.prototype.hasOwnProperty.call(value, \"$key\")) {\n          record.push(Value.fromLike(value));\n        } else {\n          record.push(Field.of((value as any).$key, (value as any).$value));\n        }\n      } else {\n        record.push(Field.of(key, value));\n      }\n    }\n    return record;\n  }\n\n  /** @internal */\n  static expand(n: number): number {\n    n = Math.max(8, n) - 1;\n    n |= n >> 1; n |= n >> 2; n |= n >> 4; n |= n >> 8; n |= n >> 16;\n    return n + 1;\n  }\n}\nObject.defineProperty(Record.prototype, \"fieldCount\", {\n  get(this: Record): number {\n    let count = 0;\n    this.forEach(function (member: Item): void {\n      if (member instanceof Field) {\n        count += 1;\n      }\n    }, this);\n    return count;\n  },\n  configurable: true,\n});\n\n/** @internal */\nexport interface RecordInterpolator extends Interpolator<Record> {\n  /** @internal */\n  readonly interpolators: readonly Interpolator<Item>[];\n\n  readonly 0: Record;\n\n  readonly 1: Record;\n\n  equals(that: unknown): boolean;\n}\n\n/** @internal */\nexport const RecordInterpolator = (function (_super: typeof Interpolator) {\n  const RecordInterpolator = function (y0: Record, y1: Record): RecordInterpolator {\n    const interpolator = function (u: number): Record {\n      const interpolators = interpolator.interpolators;\n      const interpolatorCount = interpolators.length;\n      const record = Record.create(interpolatorCount);\n      for (let i = 0; i < interpolatorCount; i += 1) {\n        record.push(interpolators[i]!(u));\n      }\n      return record;\n    } as RecordInterpolator;\n    Object.setPrototypeOf(interpolator, RecordInterpolator.prototype);\n    const interpolatorCount = Math.min(y0.length, y1.length);\n    const interpolators = new Array<Interpolator<Item>>(interpolatorCount);\n    for (let i = 0; i < interpolatorCount; i += 1) {\n      interpolators[i] = y0.getItem(i)!.interpolateTo(y1.getItem(i)!);\n    }\n    (interpolator as Mutable<typeof interpolator>).interpolators = interpolators;\n    return interpolator;\n  } as {\n    (y0: Record, y1: Record): RecordInterpolator;\n\n    /** @internal */\n    prototype: RecordInterpolator;\n  };\n\n  RecordInterpolator.prototype = Object.create(_super.prototype);\n  RecordInterpolator.prototype.constructor = RecordInterpolator;\n\n  Object.defineProperty(RecordInterpolator.prototype, 0, {\n    get(this: RecordInterpolator): Record {\n      const interpolators = this.interpolators;\n      const interpolatorCount = interpolators.length;\n      const record = Record.create(interpolatorCount);\n      for (let i = 0; i < interpolatorCount; i += 1) {\n        record.push(interpolators[i]![0]);\n      }\n      return record;\n    },\n    configurable: true,\n  });\n\n  Object.defineProperty(RecordInterpolator.prototype, 1, {\n    get(this: RecordInterpolator): Record {\n      const interpolators = this.interpolators;\n      const interpolatorCount = interpolators.length;\n      const record = Record.create(interpolatorCount);\n      for (let i = 0; i < interpolatorCount; i += 1) {\n        record.push(interpolators[i]![1]);\n      }\n      return record;\n    },\n    configurable: true,\n  });\n\n  RecordInterpolator.prototype.equals = function (that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof RecordInterpolator) {\n      const n = this.interpolators.length;\n      if (n === that.interpolators.length) {\n        for (let i = 0; i < n; i += 1) {\n          if (!this.interpolators[i]!.equals(that.interpolators[i]!)) {\n            return false;\n          }\n        }\n        return true;\n      }\n    }\n    return false;\n  };\n\n  return RecordInterpolator;\n})(Interpolator);\n\n/** @internal */\nexport class RecordCursor extends Cursor<Item> {\n  constructor(record: Record, lower?: number, upper?: number, index?: number) {\n    super();\n    if (lower === void 0) {\n      lower = 0;\n    }\n    if (upper === void 0) {\n      upper = record.length;\n    }\n    if (index === void 0) {\n      index = lower;\n    }\n    this.record = record;\n    this.lower = lower;\n    this.upper = upper;\n    this.index = index;\n    this.direction = 0;\n  }\n\n  /** @internal */\n  readonly record: Record;\n\n  /** @internal */\n  readonly lower: number;\n\n  /** @internal */\n  readonly upper: number;\n\n  /** @internal */\n  readonly index: number;\n\n  /** @internal */\n  readonly direction: number;\n\n  override isEmpty(): boolean {\n    return this.index >= this.upper;\n  }\n\n  override head(): Item {\n    (this as Mutable<this>).direction = 0;\n    if (this.index >= this.upper) {\n      throw new Error(\"empty\");\n    }\n    return this.record.getItem(this.index);\n  }\n\n  override step(): void {\n    (this as Mutable<this>).direction = 0;\n    const index = this.index;\n    if (index >= this.upper) {\n      throw new Error(\"empty\");\n    }\n    (this as Mutable<this>).index = index + 1;\n  }\n\n  override skip(count: number): void {\n    (this as Mutable<this>).index = Math.min(Math.max(this.lower, this.index + count, this.upper));\n  }\n\n  override hasNext(): boolean {\n    return this.index < this.upper;\n  }\n\n  override nextIndex(): number {\n    return this.index - this.lower;\n  }\n\n  override next(): IteratorResult<Item> {\n    (this as Mutable<this>).direction = 1;\n    const index = this.index;\n    if (index >= this.upper) {\n      (this as Mutable<this>).index = this.upper;\n      return {done: true, value: void 0};\n    }\n    (this as Mutable<this>).index = index + 1;\n    return {done: this.index === this.upper, value: this.record.getItem(index)};\n  }\n\n  override hasPrevious(): boolean {\n    return this.index > this.lower;\n  }\n\n  override previousIndex(): number {\n    return this.index - this.lower - 1;\n  }\n\n  override previous(): IteratorResult<Item> {\n    (this as Mutable<this>).direction = -1;\n    const index = this.index - 1;\n    if (index < this.lower) {\n      (this as Mutable<this>).index = 0;\n      return {done: true, value: void 0};\n    }\n    (this as Mutable<this>).index = index;\n    return {done: index === this.lower, value: this.record.getItem(index)};\n  }\n\n  override set(newItem: Item): void {\n    if (this.direction > 0) {\n      this.record.setItem(this.index - 1, newItem);\n    } else {\n      this.record.setItem(this.index, newItem);\n    }\n  }\n\n  override delete(): void {\n    let index = this.index;\n    if (this.direction > 0) {\n      index -= 1;\n      (this as Mutable<this>).index = index;\n    }\n    this.record.splice(index, 1);\n    (this as Mutable<this>).direction = 0;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Lazy} from \"@swim/util\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport {Field} from \"./Field\";\nimport {Attr} from \"./Attr\";\nimport {Slot} from \"./Slot\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./Value\";\nimport {Record} from \"./Record\";\nimport {RecordMapView} from \"./\"; // forward import\nimport type {TextLike} from \"./Text\";\nimport {Text} from \"./\"; // forward import\nimport type {NumLike} from \"./Num\";\nimport {Num} from \"./\"; // forward import\nimport type {InterpreterLike} from \"./interpreter/Interpreter\"; // forward import\nimport {Interpreter} from \"./\"; // forward import\n\n/** @internal */\nexport class RecordMap extends Record {\n  constructor(array: Array<Item> | null, table: Array<Field> | null,\n              length: number, fieldCount: number, flags: number) {\n    super();\n    this.array = array;\n    this.table = table;\n    Object.defineProperty(this, \"length\", {\n      value: length,\n      writable: true,\n      enumerable: true,\n      configurable: true,\n    });\n    Object.defineProperty(this, \"fieldCount\", {\n      value: fieldCount,\n      writable: true,\n      enumerable: true,\n      configurable: true,\n    });\n    this.flags = flags;\n  }\n\n  /** @internal */\n  readonly array: Array<Item> | null;\n\n  /** @internal */\n  readonly table: Array<Field> | null;\n\n  override isEmpty(): boolean {\n    return this.length === 0;\n  }\n\n  override readonly length!: number;\n\n  override readonly fieldCount!: number;\n\n  override get valueCount(): number {\n    return this.length - this.fieldCount;\n  }\n\n  /** @internal */\n  readonly flags: number;\n\n  override isConstant(): boolean {\n    const array = this.array;\n    for (let i = 0; i < this.length; i += 1) {\n      if (!array![i]!.isConstant()) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  override get tag(): string | undefined {\n    if (this.fieldCount === 0) {\n      return void 0;\n    }\n    const head = this.array![0];\n    if (!(head instanceof Attr)) {\n      return void 0;\n    }\n    return head.key.value;\n  }\n\n  override get target(): Value {\n    let value: Value | undefined;\n    let record: Record | undefined;\n    let modified = false;\n    const array = this.array!;\n    for (let i = 0; i < this.length; i += 1) {\n      const item = array[i];\n      if (item instanceof Attr) {\n        modified = true;\n      } else if (value === void 0 && item instanceof Value) {\n        value = item;\n      } else {\n        if (record === void 0) {\n          record = Record.create();\n          if (value !== void 0) {\n            record.push(value);\n          }\n        }\n        record.push(item);\n      }\n    }\n    if (value === void 0) {\n      return Value.extant();\n    } else if (record === void 0) {\n      return value;\n    } else if (modified) {\n      return record;\n    }\n    return this;\n  }\n\n  override head(): Item {\n    if (this.length === 0) {\n      return Item.absent();\n    }\n    return this.array![0]!;\n  }\n\n  override tail(): Record {\n    const n = this.length;\n    if (n === 0) {\n      return Record.empty();\n    }\n    return new RecordMapView(this, 1, n);\n  }\n\n  override body(): Value {\n    const n = this.length;\n    if (n === 0 || n === 1) {\n      return Value.absent();\n    } else if (n === 2) {\n      const item = this.array![1];\n      if (item instanceof Value) {\n        return item;\n      }\n      return Record.of(item);\n    }\n    return new RecordMapView(this, 1, n).branch();\n  }\n\n  override has(key: ValueLike): boolean {\n    if (this.fieldCount === 0) {\n      return false;\n    }\n    key = Value.fromLike(key);\n    const table = this.hashTable()!;\n    const n = table.length;\n    //assert(n > 0);\n    const x = Math.abs(key.hashCode() % n);\n    let i = x;\n    do {\n      const field = table[i];\n      if (field === void 0) {\n        break;\n      } else if (field.key.equals(key)) {\n        return true;\n      }\n      i = (i + 1) % n;\n    } while (i !== x);\n    return false;\n  }\n\n  override indexOf(item: ItemLike, index: number = 0): number {\n    item = Item.fromLike(item);\n    const array = this.array!;\n    const n = this.length;\n    if (index < 0) {\n      index = Math.max(0, n + index);\n    }\n    while (index < n) {\n      if (item.equals(array[index])) {\n        return index;\n      }\n      index += 1;\n    }\n    return -1;\n  }\n\n  override lastIndexOf(item: ItemLike, index?: number): number {\n    item = Item.fromLike(item);\n    const array = this.array!;\n    const n = this.length;\n    if (index === void 0) {\n      index = n - 1;\n    } else if (index < 0) {\n      index = n + index;\n    }\n    index = Math.min(index, n - 1);\n    while (index >= 0) {\n      if (item.equals(array[index])) {\n        return index;\n      }\n      index -= 1;\n    }\n    return -1;\n  }\n\n  override get(key: ValueLike): Value {\n    if (this.fieldCount === 0) {\n      return Value.absent();\n    }\n    key = Value.fromLike(key);\n    const table = this.hashTable()!;\n    const n = table.length;\n    //assert(n > 0);\n    const x = Math.abs(key.hashCode() % n);\n    let i = x;\n    do {\n      const field = table[i];\n      if (field === void 0) {\n        break;\n      } else if (field.key.equals(key)) {\n        return field.value;\n      }\n      i = (i + 1) % n;\n    } while (i !== x);\n    return Value.absent();\n  }\n\n  override getAttr(key: TextLike): Value {\n    if (this.fieldCount === 0) {\n      return Value.absent();\n    }\n    key = Text.fromLike(key);\n    const table = this.hashTable()!;\n    const n = table.length;\n    //assert(n > 0);\n    const x = Math.abs(key.hashCode() % n);\n    let i = x;\n    do {\n      const field = table[i];\n      if (field === void 0) {\n        break;\n      } else if (field instanceof Attr && field.key.equals(key)) {\n        return field.value;\n      }\n      i = (i + 1) % n;\n    } while (i !== x);\n    return Value.absent();\n  }\n\n  override getSlot(key: ValueLike): Value {\n    if (this.fieldCount === 0) {\n      return Value.absent();\n    }\n    key = Value.fromLike(key);\n    const table = this.hashTable()!;\n    const n = table.length;\n    //assert(n > 0);\n    const x = Math.abs(key.hashCode() % n);\n    let i = x;\n    do {\n      const field = table[i];\n      if (field === void 0) {\n        break;\n      } else if (field instanceof Slot && field.key.equals(key)) {\n        return field.value;\n      }\n      i = (i + 1) % n;\n    } while (i !== x);\n    return Value.absent();\n  }\n\n  override getField(key: ValueLike): Field | undefined {\n    if (this.fieldCount === 0) {\n      return void 0;\n    }\n    key = Value.fromLike(key);\n    const table = this.hashTable()!;\n    const n = table.length;\n    //assert(n > 0);\n    const x = Math.abs(key.hashCode() % n);\n    let i = x;\n    do {\n      const field = table[i];\n      if (field === void 0) {\n        break;\n      } else if (field.key.equals(key)) {\n        return field;\n      }\n      i = (i + 1) % n;\n    } while (i !== x);\n    return void 0;\n  }\n\n  override getItem(index: NumLike): Item {\n    if (index instanceof Num) {\n      index = index.value;\n    }\n    const n = this.length;\n    if (index < 0) {\n      index = n + index;\n    }\n    if (index < 0 || index >= n) {\n      return Item.absent();\n    }\n    return this.array![index]!;\n  }\n\n  override set(key: ValueLike, newValue: Value): this {\n    if ((this.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    key = Value.fromLike(key);\n    newValue = Value.fromLike(newValue);\n    if ((this.flags & Record.AliasedFlag) !== 0) {\n      if (this.fieldCount > 0) {\n        this.setAliased(key, newValue);\n      } else {\n        this.pushAliased(new Slot(key, newValue));\n      }\n    } else if (this.fieldCount > 0) {\n      if (this.table !== null) {\n        this.setMutable(key, newValue);\n      } else {\n        this.updateMutable(key, newValue);\n      }\n    } else {\n      this.pushMutable(new Slot(key, newValue));\n    }\n    return this;\n  }\n\n  /** @internal */\n  setAliased(key: Value, newValue: Value): void {\n    const n = this.length;\n    const oldArray = this.array!;\n    const newArray = new Array(Record.expand(n + 1));\n    for (let i = 0; i < n; i += 1) {\n      const item = oldArray[i];\n      if (item instanceof Field && item.key.equals(key)) {\n        newArray[i] = item.updatedValue(newValue);\n        i += 1;\n        while (i < n) {\n          newArray[i] = oldArray[i];\n          i += 1;\n        }\n        (this as Mutable<this>).array = newArray;\n        (this as Mutable<this>).table = null;\n        (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n        return;\n      }\n      newArray[i] = item;\n    }\n    newArray[n] = new Slot(key, newValue);\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).table = null;\n    (this as Mutable<this>).length = n + 1;\n    (this as Mutable<this>).fieldCount += 1;\n    (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n  }\n\n  /** @internal */\n  setMutable(key: Value, newValue: Value): void {\n    const table = this.table!;\n    const n = table.length;\n    //assert(n > 0);\n    const x = Math.abs(key.hashCode() % n);\n    let i = x;\n    do {\n      const field = table[i];\n      if (field === void 0) {\n        break;\n      } else if (field.key.equals(key)) {\n        if (field.isMutable()) {\n          field.setValue(newValue);\n        } else {\n          this.updateMutable(key, newValue);\n        }\n        return;\n      }\n      i = (i + 1) % n;\n    } while (i !== x);\n    const field = new Slot(key, newValue);\n    this.pushMutable(field);\n    RecordMap.put(table, field);\n  }\n\n  /** @internal */\n  updateMutable(key: Value, newValue: Value): void {\n    const array = this.array!;\n    for (let i = 0; i < this.length; i += 1) {\n      const item = array[i];\n      if (item instanceof Field && item.key.equals(key)) {\n        array[i] = item.updatedValue(newValue);\n        (this as Mutable<this>).table = null;\n        return;\n      }\n    }\n    const field = new Slot(key, newValue);\n    this.pushMutable(field);\n    RecordMap.put(this.table, field);\n  }\n\n  override setAttr(key: TextLike, newValue: Value): this {\n    if ((this.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    key = Text.fromLike(key);\n    newValue = Value.fromLike(newValue);\n    if ((this.flags & Record.AliasedFlag) !== 0) {\n      if (this.fieldCount > 0) {\n        this.setAttrAliased(key, newValue);\n      } else {\n        this.pushAliased(new Attr(key, newValue));\n      }\n    } else if (this.fieldCount > 0) {\n      if (this.table !== null) {\n        this.setAttrMutable(key, newValue);\n      } else {\n        this.updateAttrMutable(key, newValue);\n      }\n    } else {\n      this.pushMutable(new Attr(key, newValue));\n    }\n    return this;\n  }\n\n  /** @internal */\n  setAttrAliased(key: Text, newValue: Value): void {\n    const n = this.length;\n    const oldArray = this.array!;\n    const newArray = new Array(Record.expand(n + 1));\n    for (let i = 0; i < n; i += 1) {\n      const item = oldArray[i];\n      if (item instanceof Field && item.key.equals(key)) {\n        newArray[i] = new Attr(key, newValue);\n        i += 1;\n        while (i < n) {\n          newArray[i] = oldArray[i];\n          i += 1;\n        }\n        (this as Mutable<this>).array = newArray;\n        (this as Mutable<this>).table = null;\n        (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n        return;\n      }\n      newArray[i] = item;\n    }\n    newArray[n] = new Attr(key, newValue);\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).table = null;\n    (this as Mutable<this>).length = n + 1;\n    (this as Mutable<this>).fieldCount += 1;\n    (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n  }\n\n  /** @internal */\n  setAttrMutable(key: Text, newValue: Value): void {\n    const table = this.table!;\n    const n = table.length;\n    //assert(n > 0);\n    const x = Math.abs(key.hashCode() % n);\n    let i = x;\n    do {\n      const field = table[i];\n      if (field === void 0) {\n        break;\n      } else if (field.key.equals(key)) {\n        if (field instanceof Attr && field.isMutable()) {\n          field.setValue(newValue);\n        } else {\n          this.updateAttrMutable(key, newValue);\n        }\n        return;\n      }\n      i = (i + 1) % n;\n    } while (i !== x);\n    const field = new Attr(key, newValue);\n    this.push(field);\n    RecordMap.put(table, field);\n  }\n\n  /** @internal */\n  updateAttrMutable(key: Text, newValue: Value): void {\n    const array = this.array!;\n    for (let i = 0; i < this.length; i += 1) {\n      const item = array[i];\n      if (item instanceof Field && item.key.equals(key)) {\n        array[i] = new Attr(key, newValue);\n        (this as Mutable<this>).table = null;\n        return;\n      }\n    }\n    const field = new Attr(key, newValue);\n    this.push(field);\n    RecordMap.put(this.table, field);\n  }\n\n  override setSlot(key: ValueLike, newValue: Value): this {\n    if ((this.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    key = Value.fromLike(key);\n    newValue = Value.fromLike(newValue);\n    if ((this.flags & Record.AliasedFlag) !== 0) {\n      if (this.fieldCount > 0) {\n        this.setSlotAliased(key, newValue);\n      } else {\n        this.pushAliased(new Slot(key, newValue));\n      }\n    } else if (this.fieldCount > 0) {\n      if (this.table !== null) {\n        this.setSlotMutable(key, newValue);\n      } else {\n        this.updateSlotMutable(key, newValue);\n      }\n    } else {\n      this.pushMutable(new Slot(key, newValue));\n    }\n    return this;\n  }\n\n  /** @internal */\n  setSlotAliased(key: Value, newValue: Value): void {\n    const n = this.length;\n    const oldArray = this.array!;\n    const newArray = new Array(Record.expand(n + 1));\n    for (let i = 0; i < n; i += 1) {\n      const item = oldArray[i];\n      if (item instanceof Field && item.key.equals(key)) {\n        newArray[i] = new Slot(key, newValue);\n        i += 1;\n        while (i < n) {\n          newArray[i] = oldArray[i];\n          i += 1;\n        }\n        (this as Mutable<this>).array = newArray;\n        (this as Mutable<this>).table = null;\n        (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n        return;\n      }\n      newArray[i] = item;\n    }\n    newArray[n] = new Slot(key, newValue);\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).table = null;\n    (this as Mutable<this>).length = n + 1;\n    (this as Mutable<this>).fieldCount += 1;\n    (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n  }\n\n  /** @internal */\n  setSlotMutable(key: Value, newValue: Value): void {\n    const table = this.table!;\n    const n = table.length;\n    //assert(n > 0);\n    const x = Math.abs(key.hashCode() % n);\n    let i = x;\n    do {\n      const field = table[i];\n      if (field === void 0) {\n        break;\n      } else if (field.key.equals(key)) {\n        if (field instanceof Slot && field.isMutable()) {\n          field.setValue(newValue);\n        } else {\n          this.updateSlotMutable(key, newValue);\n        }\n        return;\n      }\n      i = (i + 1) % n;\n    } while (i !== x);\n    const field = new Slot(key, newValue);\n    this.push(field);\n    RecordMap.put(table, field);\n  }\n\n  /** @internal */\n  updateSlotMutable(key: Value, newValue: Value): void {\n    const array = this.array!;\n    for (let i = 0; i < this.length; i += 1) {\n      const item = array[i];\n      if (item instanceof Field && item.key.equals(key)) {\n        array[i] = new Slot(key, newValue);\n        (this as Mutable<this>).table = null;\n        return;\n      }\n    }\n    const field = new Slot(key, newValue);\n    this.push(field);\n    RecordMap.put(this.table, field);\n  }\n\n  override setItem(index: number, newItem: ItemLike): this {\n    if ((this.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    newItem = Item.fromLike(newItem);\n    const n = this.length;\n    if (index < 0) {\n      index = n + index;\n    }\n    if (index < 0 || index > n) {\n      throw new RangeError(\"\" + index);\n    }\n    if ((this.flags & Record.AliasedFlag) !== 0) {\n      this.setItemAliased(index, newItem);\n    } else {\n      this.setItemMutable(index, newItem);\n    }\n    return this;\n  }\n\n  /** @internal */\n  setItemAliased(index: number, newItem: Item): void {\n    const n = this.length;\n    const oldArray = this.array!;\n    const newArray = new Array(Record.expand(n));\n    for (let i = 0; i < n; i += 1) {\n      newArray[i] = oldArray[i];\n    }\n    const oldItem = oldArray[index];\n    newArray[index] = newItem;\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).table = null;\n    if (newItem instanceof Field) {\n      if (!(oldItem instanceof Field)) {\n        (this as Mutable<this>).fieldCount += 1;\n      }\n    } else if (oldItem instanceof Field) {\n      (this as Mutable<this>).fieldCount -= 1;\n    }\n    (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n  }\n\n  /** @internal */\n  setItemMutable(index: number, newItem: Item): void {\n    const array = this.array!;\n    const oldItem = array[index];\n    array[index] = newItem;\n    if (newItem instanceof Field) {\n      (this as Mutable<this>).table = null;\n      if (!(oldItem instanceof Field)) {\n        (this as Mutable<this>).fieldCount += 1;\n      }\n    } else if (oldItem instanceof Field) {\n      (this as Mutable<this>).table = null;\n      (this as Mutable<this>).fieldCount -= 1;\n    }\n  }\n\n  override updated(key: ValueLike, newValue: ValueLike): Record {\n    key = Value.fromLike(key);\n    newValue = Value.fromLike(newValue);\n    const record = (this.flags & Record.ImmutableFlag) === 0 ? this : this.branch();\n    if ((record.flags & Record.AliasedFlag) !== 0) {\n      if (record.fieldCount > 0) {\n        record.setAliased(key, newValue);\n      } else {\n        record.pushAliased(new Slot(key, newValue));\n      }\n    } else if (record.fieldCount > 0) {\n      if (record.table !== null) {\n        record.setMutable(key, newValue);\n      } else {\n        record.updateMutable(key, newValue);\n      }\n    } else {\n      record.pushMutable(new Slot(key, newValue));\n    }\n    return record;\n  }\n\n  override updatedAttr(key: TextLike, newValue: ValueLike): Record {\n    key = Text.fromLike(key);\n    newValue = Value.fromLike(newValue);\n    const record = (this.flags & Record.ImmutableFlag) === 0 ? this : this.branch();\n    if ((record.flags & Record.AliasedFlag) !== 0) {\n      if (record.fieldCount > 0) {\n        record.setAttrAliased(key, newValue);\n      } else {\n        record.pushAliased(new Attr(key, newValue));\n      }\n    } else if (record.fieldCount > 0) {\n      if (record.table !== null) {\n        record.setAttrMutable(key, newValue);\n      } else {\n        record.updateAttrMutable(key, newValue);\n      }\n    } else {\n      record.pushMutable(new Attr(key, newValue));\n    }\n    return record;\n  }\n\n  override updatedSlot(key: ValueLike, newValue: ValueLike): Record {\n    key = Value.fromLike(key);\n    newValue = Value.fromLike(newValue);\n    const record = (this.flags & Record.ImmutableFlag) === 0 ? this : this.branch();\n    if ((record.flags & Record.AliasedFlag) !== 0) {\n      if (record.fieldCount > 0) {\n        record.setSlotAliased(key, newValue);\n      } else {\n        record.pushAliased(new Slot(key, newValue));\n      }\n    } else if (record.fieldCount > 0) {\n      if (record.table !== null) {\n        record.setSlotMutable(key, newValue);\n      } else {\n        record.updateSlotMutable(key, newValue);\n      }\n    } else {\n      record.pushMutable(new Slot(key, newValue));\n    }\n    return record;\n  }\n\n  override push(...newItems: ItemLike[]): number {\n    if ((this.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    if ((this.flags & Record.AliasedFlag) !== 0) {\n      this.pushAliased(...newItems);\n    } else {\n      this.pushMutable(...newItems);\n    }\n    return this.length;\n  }\n\n  /** @internal */\n  pushAliased(...newItems: ItemLike[]): void {\n    const k = newItems.length;\n    let m = this.length;\n    let n = this.fieldCount;\n    const oldArray = this.array;\n    const newArray = new Array(Record.expand(m + k));\n    if (oldArray !== null) {\n      for (let i = 0; i < m; i += 1) {\n        newArray[i] = oldArray[i];\n      }\n    }\n    for (let i = 0; i < k; i += 1) {\n      const newItem = Item.fromLike(newItems[i]);\n      newArray[m] = newItem;\n      m += 1;\n      if (newItem instanceof Field) {\n        n += 1;\n      }\n    }\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).table = null;\n    (this as Mutable<this>).length = m;\n    (this as Mutable<this>).fieldCount = n;\n    (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n  }\n\n  /** @internal */\n  pushMutable(...newItems: ItemLike[]): void {\n    const k = newItems.length;\n    let m = this.length;\n    let n = this.fieldCount;\n    const oldArray = this.array;\n    let newArray;\n    if (oldArray === null || m + k > oldArray.length) {\n      newArray = new Array(Record.expand(m + k));\n      if (oldArray !== null) {\n        for (let i = 0; i < m; i += 1) {\n          newArray[i] = oldArray[i];\n        }\n      }\n    } else {\n      newArray = oldArray;\n    }\n    for (let i = 0; i < k; i += 1) {\n      const newItem = Item.fromLike(newItems[i]);\n      newArray[m] = newItem;\n      m += 1;\n      if (newItem instanceof Field) {\n        n += 1;\n        (this as Mutable<this>).table = null;\n      }\n    }\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).length = m;\n    (this as Mutable<this>).fieldCount = n;\n  }\n\n  splice(start: number, deleteCount: number = 0, ...newItems: ItemLike[]): Item[] {\n    if ((this.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    const n = this.length;\n    if (start < 0) {\n      start = n + start;\n    }\n    start = Math.min(Math.max(0, start), n);\n    deleteCount = Math.min(Math.max(0, deleteCount), n - start);\n    if ((this.flags & Record.AliasedFlag) !== 0) {\n      return this.spliceAliased(start, deleteCount, ...newItems);\n    } else {\n      return this.spliceMutable(start, deleteCount, ...newItems);\n    }\n  }\n\n  /** @internal */\n  spliceAliased(start: number, deleteCount: number, ...newItems: ItemLike[]): Item[] {\n    const k = newItems.length;\n    let m = this.length;\n    let n = this.fieldCount;\n    const oldArray = this.array!;\n    const newArray = new Array(Record.expand(m - deleteCount + k));\n    for (let i = 0; i < start; i += 1) {\n      newArray[i] = oldArray[i];\n    }\n    const oldItems: Item[] = [];\n    for (let i = start; i < start + deleteCount; i += 1) {\n      const oldItem = oldArray[i]!;\n      oldItems.push(oldItem);\n      m -= 1;\n      if (oldItem instanceof Field) {\n        n -= 1;\n      }\n    }\n    for (let i = start; i < m; i += 1) {\n      newArray[i + k] = oldArray[i + deleteCount];\n    }\n    for (let i = 0; i < k; i += 1) {\n      const newItem = Item.fromLike(newItems[i]);\n      newArray[i + start] = newItem;\n      m += 1;\n      if (newItem instanceof Field) {\n        n += 1;\n      }\n    }\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).table = null;\n    (this as Mutable<this>).length = m;\n    (this as Mutable<this>).fieldCount = n;\n    (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n    return oldItems;\n  }\n\n  /** @internal */\n  spliceMutable(start: number, deleteCount: number, ...newItems: ItemLike[]): Item[] {\n    const k = newItems.length;\n    let m = this.length;\n    let n = this.fieldCount;\n    const oldArray = this.array!;\n    let newArray;\n    if (oldArray === null || m - deleteCount + k > oldArray.length) {\n      newArray = new Array(Record.expand(m - deleteCount + k));\n      if (oldArray !== null) {\n        for (let i = 0; i < start; i += 1) {\n          newArray[i] = oldArray[i];\n        }\n      }\n    } else {\n      newArray = oldArray;\n    }\n    const oldItems: Item[] = [];\n    for (let i = start; i < start + deleteCount; i += 1) {\n      const oldItem = oldArray[i]!;\n      oldItems.push(oldItem);\n      m -= 1;\n      if (oldItem instanceof Field) {\n        n -= 1;\n      }\n    }\n    if (k > deleteCount) {\n      for (let i = m - 1; i >= start; i -= 1) {\n        newArray[i + k] = oldArray[i + deleteCount];\n      }\n    } else {\n      for (let i = start; i < m; i += 1) {\n        newArray[i + k] = oldArray[i + deleteCount];\n      }\n    }\n    for (let i = 0; i < k; i += 1) {\n      const newItem = Item.fromLike(newItems[i]);\n      newArray[i + start] = newItem;\n      m += 1;\n      if (newItem instanceof Field) {\n        n += 1;\n      }\n    }\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).length = m;\n    (this as Mutable<this>).fieldCount = n;\n    return oldItems;\n  }\n\n  override delete(key: ValueLike): Item {\n    if ((this.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    key = Value.fromLike(key);\n    if ((this.flags & Record.AliasedFlag) !== 0) {\n      return this.deleteAliased(key);\n    } else {\n      return this.deleteMutable(key);\n    }\n  }\n\n  /** @internal */\n  deleteAliased(key: Value): Item {\n    const n = this.length;\n    const oldArray = this.array!;\n    const newArray = new Array(Record.expand(n));\n    for (let i = 0; i < n; i += 1) {\n      const item = oldArray[i];\n      if (item instanceof Field && item.key.equals(key)) {\n        for (let j = i + 1; j < n; j += 1, i += 1) {\n          newArray[i] = oldArray[j];\n        }\n        (this as Mutable<this>).array = newArray;\n        (this as Mutable<this>).table = null;\n        (this as Mutable<this>).length = n - 1;\n        (this as Mutable<this>).fieldCount -= 1;\n        (this as Mutable<this>).flags &= ~Record.AliasedFlag;\n        return item;\n      }\n      newArray[i] = item;\n    }\n    return Item.absent();\n  }\n\n  /** @internal */\n  deleteMutable(key: Value): Item {\n    const n = this.length;\n    const array = this.array!;\n    for (let i = 0; i < n; i += 1) {\n      const item = array[i]!;\n      if (item instanceof Field && item.key.equals(key)) {\n        for (let j = i + 1; j < n; j += 1, i += 1) {\n          array[i] = array[j]!;\n        }\n        array[n - 1] = void 0 as unknown as Item;\n        (this as Mutable<this>).table = null;\n        (this as Mutable<this>).length = n - 1;\n        (this as Mutable<this>).fieldCount -= 1;\n        return item;\n      }\n    }\n    return Item.absent();\n  }\n\n  override clear(): void {\n    if ((this.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    (this as Mutable<this>).array = null;\n    (this as Mutable<this>).table = null;\n    (this as Mutable<this>).length = 0;\n    (this as Mutable<this>).fieldCount = 0;\n    (this as Mutable<this>).flags = 0;\n  }\n\n  override isAliased(): boolean {\n    return (this.flags & Record.AliasedFlag) !== 0;\n  }\n\n  override isMutable(): boolean {\n    return (this.flags & Record.ImmutableFlag) === 0;\n  }\n\n  override alias(): void {\n    (this as Mutable<this>).flags |= Record.AliasedFlag;\n  }\n\n  override branch(): RecordMap {\n    if ((this.flags & (Record.AliasedFlag | Record.ImmutableFlag)) === 0) {\n      const array = this.array!;\n      for (let i = 0; i < this.length; i += 1) {\n        array[i]!.alias();\n      }\n    }\n    (this as Mutable<this>).flags |= Record.AliasedFlag;\n    return new RecordMap(this.array, this.table, this.length, this.fieldCount, Record.AliasedFlag);\n  }\n\n  override clone(): RecordMap {\n    const itemCount = this.length;\n    const oldArray = this.array!;\n    const newArray = new Array(itemCount);\n    for (let i = 0; i < itemCount; i += 1) {\n      newArray[i] = oldArray[i]!.clone();\n    }\n    return new RecordMap(newArray, null, itemCount, this.fieldCount, 0);\n  }\n\n  override commit(): this {\n    if ((this.flags & Record.ImmutableFlag) !== 0) {\n      return this;\n    }\n    (this as Mutable<this>).flags |= Record.ImmutableFlag;\n    const array = this.array!;\n    for (let i = 0; i < this.length; i += 1) {\n      array[i]!.commit();\n    }\n    return this;\n  }\n\n  hashTable(): Array<Field> | null {\n    const n = this.fieldCount;\n    let table = this.table;\n    if (n !== 0 && table === null) {\n      table = new Array(Record.expand(Math.max(n, n * 10 / 7)));\n      const array = this.array!;\n      for (let i = 0; i < this.length; i += 1) {\n        const item = array[i];\n        if (item instanceof Field) {\n          RecordMap.put(table, item);\n        }\n      }\n      (this as Mutable<this>).table = table;\n    }\n    return table;\n  }\n\n  /** @internal */\n  static put(table: Field[] | null, field: Field): void {\n    if (table === null) {\n      return;\n    }\n    const n = table.length;\n    const x = Math.abs(field.key.hashCode() % n);\n    let i = x;\n    do {\n      const item = table[i];\n      if (item === void 0 || field.key.equals(item.key)) {\n        table[i] = field;\n        return;\n      }\n      i = (i + 1) % n;\n    } while (i !== x);\n    throw new Error();\n  }\n\n  override evaluate(interpreter: InterpreterLike): Record {\n    interpreter = Interpreter.fromLike(interpreter);\n    const array = this.array!;\n    const n = this.length;\n    const scope = Record.create(n);\n    interpreter.pushScope(scope);\n    let changed = false;\n    for (let i = 0; i < n; i += 1) {\n      const oldItem = array[i]!;\n      const newItem = oldItem.evaluate(interpreter);\n      if (newItem.isDefined()) {\n        scope.push(newItem);\n      }\n      if (oldItem !== newItem) {\n        changed = true;\n      }\n    }\n    interpreter.popScope();\n    return changed ? scope : this;\n  }\n\n  override substitute(interpreter: InterpreterLike): Record {\n    interpreter = Interpreter.fromLike(interpreter);\n    const array = this.array!;\n    const n = this.length;\n    const scope = Record.create(n);\n    interpreter.pushScope(scope);\n    let changed = false;\n    for (let i = 0; i < n; i += 1) {\n      const oldItem = array[i]!;\n      const newItem = oldItem.substitute(interpreter);\n      if (newItem.isDefined()) {\n        scope.push(newItem);\n      }\n      if (oldItem !== newItem) {\n        changed = true;\n      }\n    }\n    interpreter.popScope();\n    return changed ? scope : this;\n  }\n\n  override subRecord(lower?: number, upper?: number): Record {\n    const n = this.length;\n    if (lower === void 0) {\n      lower = 0;\n    } else if (lower < 0) {\n      lower = n + lower;\n    }\n    if (upper === void 0) {\n      upper = n;\n    } else if (upper < 0) {\n      upper = n + upper;\n    }\n    if (lower < 0 || upper > n || lower > upper) {\n      throw new RangeError(lower + \", \" + upper);\n    }\n    return new RecordMapView(this, lower, upper);\n  }\n\n  override forEach<T>(callback: (item: Item, index: number) => T | void): T | undefined;\n  override forEach<T, S>(callback: (this: S, item: Item, index: number) => T | void, thisArg: S): T | undefined;\n  override forEach<T, S>(callback: (this: S | undefined, item: Item, index: number) => T | void, thisArg?: S): T | undefined {\n    const array = this.array!;\n    for (let i = 0; i < this.length; i += 1) {\n      const result = callback.call(thisArg, array[i]!, i);\n      if (result !== void 0) {\n        return result;\n      }\n    }\n    return void 0;\n  }\n\n  @Lazy\n  static override empty(): RecordMap {\n    return new RecordMap(null, null, 0, 0, Record.AliasedFlag | Record.ImmutableFlag);\n  }\n\n  static override create(initialCapacity?: number): RecordMap {\n    if (initialCapacity === void 0) {\n      return new RecordMap(null, null, 0, 0, Record.AliasedFlag);\n    }\n    return new RecordMap(new Array(initialCapacity), null, 0, 0, 0);\n  }\n\n  static override of(...items: ItemLike[]): RecordMap {\n    const n = items.length;\n    if (n === 0) {\n      return new RecordMap(null, null, 0, 0, Record.AliasedFlag);\n    }\n    const array = new Array(n);\n    let itemCount = 0;\n    let fieldCount = 0;\n    for (let i = 0; i < n; i += 1) {\n      const item = Item.fromLike(items[i]);\n      array[i] = item;\n      itemCount += 1;\n      if (item instanceof Field) {\n        fieldCount += 1;\n      }\n    }\n    return new RecordMap(array, null, itemCount, fieldCount, 0);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport {Field} from \"./Field\";\nimport {Attr} from \"./Attr\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./Value\";\nimport {Record} from \"./Record\";\nimport {RecordMap} from \"./RecordMap\";\nimport type {NumLike} from \"./Num\";\nimport {Num} from \"./\"; // forward import\n\n/** @internal */\nexport class RecordMapView extends Record {\n  constructor(record: RecordMap, lower: number, upper: number) {\n    super();\n    this.record = record;\n    this.lower = lower;\n    this.upper = upper;\n  }\n\n  /** @internal */\n  readonly record: RecordMap;\n\n  /** @internal */\n  readonly lower: number;\n\n  /** @internal */\n  readonly upper: number;\n\n  override isEmpty(): boolean {\n    return this.lower === this.upper;\n  }\n\n  override isArray(): boolean {\n    const array = this.record.array;\n    for (let i = this.lower; i < this.upper; i += 1) {\n      if (array![i] instanceof Field) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  override isObject(): boolean {\n    const array = this.record.array;\n    for (let i = this.lower; i < this.upper; i += 1) {\n      if (array![i] instanceof Value) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  override get length(): number {\n    return this.upper - this.lower;\n  }\n\n  declare readonly fieldCount: number; // getter defined below to work around useDefineForClassFields lunacy\n\n  override get valueCount(): number {\n    let k = 0;\n    const array = this.record.array;\n    for (let i = this.lower; i < this.upper; i += 1) {\n      if (array![i] instanceof Value) {\n        k += 1;\n      }\n    }\n    return k;\n  }\n\n  override isConstant(): boolean {\n    const array = this.record.array;\n    for (let i = this.lower; i < this.upper; i += 1) {\n      if (!array![i]!.isConstant()) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  override get tag(): string | undefined {\n    if (this.length === 0) {\n      return void 0;\n    }\n    const item = this.record.array![this.lower];\n    if (!(item instanceof Attr)) {\n      return void 0;\n    }\n    return item.key.value;\n  }\n\n  override get target(): Value {\n    let value: Value | undefined;\n    let record: Record | undefined;\n    let modified = false;\n    const array = this.record.array;\n    for (let i = this.lower; i < this.upper; i += 1) {\n      const item = array![i];\n      if (item instanceof Attr) {\n        modified = true;\n      } else if (value === void 0 && item instanceof Value) {\n        value = item;\n      } else {\n        if (record === void 0) {\n          record = Record.create();\n          if (value !== void 0) {\n            record.push(value);\n          }\n        }\n        record.push(item);\n      }\n    }\n    if (value === void 0) {\n      return Value.extant();\n    } else if (record === void 0) {\n      return value;\n    } else if (modified) {\n      return record;\n    }\n    return this;\n  }\n\n  override head(): Item {\n    if (this.length === 0) {\n      return Item.absent();\n    }\n    return this.record.array![this.lower]!;\n  }\n\n  override tail(): Record {\n    if (this.length === 0) {\n      return Record.empty();\n    }\n    return new RecordMapView(this.record, this.lower + 1, this.upper);\n  }\n\n  override body(): Value {\n    const n = this.length;\n    if (n === 0 || n === 1) {\n      return Value.absent();\n    } else if (n === 2) {\n      const item = this.record.array![this.lower + 1];\n      if (item instanceof Value) {\n        return item;\n      }\n      return Record.of(item);\n    }\n    return new RecordMapView(this.record, this.lower + 1, this.upper).branch();\n  }\n\n  override indexOf(item: ItemLike, index: number = 0): number {\n    item = Item.fromLike(item);\n    const array = this.record.array;\n    const n = this.length;\n    if (index < 0) {\n      index = Math.max(0, n + index);\n    }\n    index = this.lower + index;\n    while (index < this.upper) {\n      if (item.equals(array![index])) {\n        return index - this.lower;\n      }\n      index += 1;\n    }\n    return -1;\n  }\n\n  override lastIndexOf(item: ItemLike, index?: number): number {\n    item = Item.fromLike(item);\n    const array = this.record.array;\n    const n = this.length;\n    if (index === void 0) {\n      index = n - 1;\n    } else if (index < 0) {\n      index = n + index;\n    }\n    index = this.lower + Math.min(index, n - 1);\n    while (index >= this.lower) {\n      if (item.equals(array![index])) {\n        return index - this.lower;\n      }\n      index -= 1;\n    }\n    return -1;\n  }\n\n  override getItem(index: NumLike): Item {\n    if (index instanceof Num) {\n      index = index.value;\n    }\n    const n = this.length;\n    if (index < 0) {\n      index = n + index;\n    }\n    if (index < 0 || index >= n) {\n      return Item.absent();\n    }\n    return this.record.array![this.lower + index]!;\n  }\n\n  override setItem(index: number, newItem: ItemLike): this {\n    if ((this.record.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    newItem = Item.fromLike(newItem);\n    const n = this.length;\n    if (index < 0) {\n      index = n + index;\n    }\n    if (index < 0 || index > n) {\n      throw new RangeError(\"\" + index);\n    }\n    if ((this.record.flags & Record.AliasedFlag) !== 0) {\n      this.setItemAliased(index, newItem);\n    } else {\n      this.setItemMutable(index, newItem);\n    }\n    return this;\n  }\n\n  /** @internal */\n  setItemAliased(index: number, newItem: Item): void {\n    const record = this.record;\n    const n = record.length;\n    const oldArray = record.array;\n    const newArray = new Array(Record.expand(n));\n    for (let i = 0; i < n; i += 1) {\n      newArray[i] = oldArray![i];\n    }\n    const oldItem = oldArray !== null ? oldArray[this.lower + index] : null;\n    newArray[this.lower + index] = newItem;\n    (record as Mutable<RecordMap>).array = newArray;\n    (record as Mutable<RecordMap>).table = null;\n    if (newItem instanceof Field) {\n      if (!(oldItem instanceof Field)) {\n        (record as Mutable<RecordMap>).fieldCount += 1;\n      }\n    } else if (oldItem instanceof Field) {\n      (record as Mutable<RecordMap>).fieldCount -= 1;\n    }\n    (record as Mutable<RecordMap>).flags &= ~Record.AliasedFlag;\n  }\n\n  /** @internal */\n  setItemMutable(index: number, newItem: Item): void {\n    const record = this.record;\n    const array = record.array!;\n    const oldItem = array[this.lower + index];\n    array[this.lower + index] = newItem;\n    if (newItem instanceof Field) {\n      (record as Mutable<RecordMap>).table = null;\n      if (!(oldItem instanceof Field)) {\n        (record as Mutable<RecordMap>).fieldCount += 1;\n      }\n    } else if (oldItem instanceof Field) {\n      (record as Mutable<RecordMap>).table = null;\n      (record as Mutable<RecordMap>).fieldCount -= 1;\n    }\n  }\n\n  override push(...newItems: ItemLike[]): number {\n    if ((this.record.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    if ((this.record.flags & Record.AliasedFlag) !== 0) {\n      this.pushAliased(...newItems);\n    } else {\n      this.pushMutable(...newItems);\n    }\n    return this.length;\n  }\n\n  /** @internal */\n  pushAliased(...newItems: ItemLike[]): void {\n    const record = this.record;\n    const k = newItems.length;\n    let m = record.length;\n    let n = record.fieldCount;\n    const oldArray = record.array;\n    const newArray = new Array(Record.expand(m + k));\n    if (oldArray !== null) {\n      for (let i = 0; i < this.upper; i += 1) {\n        newArray[i] = oldArray[i];\n      }\n      for (let i = this.upper; i < m; i += 1) {\n        newArray[i + k] = oldArray[i];\n      }\n    }\n    for (let i = 0; i < k; i += 1) {\n      const newItem = Item.fromLike(newItems[i]);\n      newArray[i + this.upper] = newItem;\n      m += 1;\n      if (newItem instanceof Field) {\n        n += 1;\n      }\n    }\n    (record as Mutable<RecordMap>).array = newArray;\n    (record as Mutable<RecordMap>).table = null;\n    (record as Mutable<RecordMap>).length = m;\n    (record as Mutable<RecordMap>).fieldCount = n;\n    (record as Mutable<RecordMap>).flags &= ~Record.AliasedFlag;\n    (this as Mutable<this>).upper += k;\n  }\n\n  /** @internal */\n  pushMutable(...newItems: ItemLike[]): void {\n    const record = this.record;\n    const k = newItems.length;\n    let m = record.length;\n    let n = record.fieldCount;\n    const oldArray = record.array!;\n    let newArray;\n    if (oldArray === null || m + k > oldArray.length) {\n      newArray = new Array(Record.expand(m + k));\n      if (oldArray !== null) {\n        for (let i = 0; i < this.upper; i += 1) {\n          newArray[i] = oldArray[i];\n        }\n      }\n    } else {\n      newArray = oldArray;\n    }\n    for (let i = m - 1; i >= this.upper; i -= 1) {\n      newArray[i + k] = oldArray[i];\n    }\n    for (let i = 0; i < k; i += 1) {\n      const newItem = Item.fromLike(newItems[i]);\n      newArray[i + this.upper] = newItem;\n      m += 1;\n      if (newItem instanceof Field) {\n        n += 1;\n        (record as Mutable<RecordMap>).table = null;\n      }\n    }\n    (record as Mutable<RecordMap>).array = newArray;\n    (record as Mutable<RecordMap>).length = m;\n    (record as Mutable<RecordMap>).fieldCount = n;\n    (this as Mutable<this>).upper += k;\n  }\n\n  override splice(start: number, deleteCount: number = 0, ...newItems: ItemLike[]): Item[] {\n    if ((this.record.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    const n = this.length;\n    if (start < 0) {\n      start = n + start;\n    }\n    start = Math.min(Math.max(0, start), n);\n    deleteCount = Math.min(Math.max(0, deleteCount), n - start);\n    let deleted;\n    if ((this.record.flags & Record.AliasedFlag) !== 0) {\n      deleted = this.record.spliceAliased(this.lower + start, deleteCount, ...newItems);\n    } else {\n      deleted = this.record.spliceMutable(this.lower + start, deleteCount, ...newItems);\n    }\n    (this as Mutable<this>).upper += newItems.length - deleted.length;\n    return deleted;\n  }\n\n  override delete(key: ValueLike): Item {\n    if ((this.record.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    key = Value.fromLike(key);\n    if ((this.record.flags & Record.AliasedFlag) !== 0) {\n      return this.deleteAliased(key);\n    } else {\n      return this.deleteMutable(key);\n    }\n  }\n\n  /** @internal */\n  deleteAliased(key: Value): Item {\n    const record = this.record;\n    const n = record.length;\n    const oldArray = record.array;\n    const newArray = new Array(Record.expand(n));\n    for (let i = this.lower; i < this.upper; i += 1) {\n      const item = oldArray![i];\n      if (item instanceof Field && item.key.equals(key)) {\n        for (let j = i + 1; j < n; j += 1, i += 1) {\n          newArray[i] = oldArray![j];\n        }\n        (record as Mutable<RecordMap>).array = newArray;\n        (record as Mutable<RecordMap>).table = null;\n        (record as Mutable<RecordMap>).length = n - 1;\n        (record as Mutable<RecordMap>).fieldCount -= 1;\n        (record as Mutable<RecordMap>).flags &= ~Record.AliasedFlag;\n        (this as Mutable<this>).upper -= 1;\n        return item;\n      }\n      newArray[i] = item;\n    }\n    return Item.absent();\n  }\n\n  /** @internal */\n  deleteMutable(key: Value): Item {\n    const record = this.record;\n    const n = record.length;\n    const array = record.array;\n    for (let i = this.lower; i < this.upper; i += 1) {\n      const item = array![i]!;\n      if (item instanceof Field && item.key.equals(key)) {\n        for (let j = i + 1; j < n; j += 1, i += 1) {\n          array![i] = array![j]!;\n        }\n        array![n - 1] = void 0 as any;\n        (record as Mutable<RecordMap>).table = null;\n        (record as Mutable<RecordMap>).length = n - 1;\n        (record as Mutable<RecordMap>).fieldCount -= 1;\n        (this as Mutable<this>).upper -= 1;\n        return item;\n      }\n    }\n    return Item.absent();\n  }\n\n  override clear(): void {\n    if ((this.record.flags & Record.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    if ((this.record.flags & Record.AliasedFlag) !== 0) {\n      this.clearAliased();\n    } else {\n      this.clearMutable();\n    }\n  }\n\n  /** @internal */\n  clearAliased(): void {\n    const record = this.record;\n    const m = record.length;\n    let n = record.fieldCount;\n    const l = m - this.length;\n    const oldArray = record.array;\n    const newArray = new Array(Record.expand(l));\n    let i = 0;\n    while (i < this.lower) {\n      newArray[i] = oldArray![i];\n      i += 1;\n    }\n    while (i < this.upper) {\n      if (oldArray![i] instanceof Field) {\n        n -= 1;\n      }\n      i += 1;\n    }\n    i = this.lower;\n    let j = this.upper;\n    while (j < m) {\n      newArray[i] = oldArray![j];\n      i += 1;\n      j += 1;\n    }\n    (record as Mutable<RecordMap>).array = newArray;\n    (record as Mutable<RecordMap>).table = null;\n    (record as Mutable<RecordMap>).length = l;\n    (record as Mutable<RecordMap>).fieldCount = n;\n    (record as Mutable<RecordMap>).flags &= ~Record.AliasedFlag;\n    (this as Mutable<this>).upper = this.lower;\n  }\n\n  /** @internal */\n  clearMutable(): void {\n    const record = this.record;\n    const m = record.length;\n    let n = record.fieldCount;\n    const array = record.array;\n    let i = this.lower;\n    while (i < this.upper) {\n      if (array![i] instanceof Field) {\n        n -= 1;\n      }\n      i += 1;\n    }\n    i = this.lower;\n    let j = this.upper;\n    while (j < m) {\n      const item = array![j]!;\n      if (item instanceof Field) {\n        (record as Mutable<RecordMap>).table = null;\n      }\n      array![i] = item;\n      i += 1;\n      j += 1;\n    }\n    (record as Mutable<RecordMap>).length = i;\n    (record as Mutable<RecordMap>).fieldCount = n;\n    while (i < m) {\n      array![i] = void 0 as any;\n      i += 1;\n    }\n    (this as Mutable<this>).upper = this.lower;\n  }\n\n  override isAliased(): boolean {\n    return (this.record.flags & Record.AliasedFlag) !== 0;\n  }\n\n  override isMutable(): boolean {\n    return (this.record.flags & Record.ImmutableFlag) === 0;\n  }\n\n  override alias(): void {\n    (this.record as Mutable<RecordMap>).flags |= Record.AliasedFlag;\n  }\n\n  override branch(): RecordMap {\n    const m = this.length;\n    let n = 0;\n    const oldArray = this.record.array;\n    const newArray = new Array(Record.expand(m));\n    let i = this.lower;\n    let j = 0;\n    while (j < m) {\n      const item = oldArray![i];\n      newArray[j] = item;\n      if (item instanceof Field) {\n        n += 1;\n      }\n      i += 1;\n      j += 1;\n    }\n    return new RecordMap(newArray, null, m, n, 0);\n  }\n\n  override clone(): RecordMap {\n    const m = this.length;\n    let n = 0;\n    const oldArray = this.record.array;\n    const newArray = new Array(Record.expand(m));\n    let i = this.lower;\n    let j = 0;\n    while (j < m) {\n      const item = oldArray![i]!;\n      newArray[j] = item.clone();\n      if (item instanceof Field) {\n        n += 1;\n      }\n      i += 1;\n      j += 1;\n    }\n    return new RecordMap(newArray, null, m, n, 0);\n  }\n\n  override commit(): this {\n    this.record.commit();\n    return this;\n  }\n\n  override subRecord(lower?: number, upper?: number): Record {\n    const n = this.length;\n    if (lower === void 0) {\n      lower = 0;\n    } else if (lower < 0) {\n      lower = n + lower;\n    }\n    if (upper === void 0) {\n      upper = n;\n    } else if (upper < 0) {\n      upper = n + upper;\n    }\n    if (lower < 0 || upper > n || lower > upper) {\n      throw new RangeError(lower + \", \" + upper);\n    }\n    return new RecordMapView(this.record, this.lower + lower, this.upper + upper);\n  }\n\n  override forEach<T>(callback: (item: Item, index: number) => T | void): T | undefined;\n  override forEach<T, S>(callback: (this: S, item: Item, index: number) => T | void, thisArg?: S): T | undefined;\n  override forEach<T, S>(callback: (this: S | undefined, item: Item, index: number) => T | void, thisArg?: S): T | undefined {\n    const array = this.record.array;\n    for (let i = this.lower; i < this.upper; i += 1) {\n      const result = callback.call(thisArg, array![i]!, i);\n      if (result !== void 0) {\n        return result;\n      }\n    }\n    return void 0;\n  }\n}\nObject.defineProperty(RecordMapView.prototype, \"fieldCount\", {\n  get(this: RecordMapView): number {\n    const array = this.record.array;\n    let k = 0;\n    for (let i = this.lower; i < this.upper; i += 1) {\n      if (array![i] instanceof Field) {\n        k += 1;\n      }\n    }\n    return k;\n  },\n  configurable: true,\n});\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Lazy} from \"@swim/util\";\nimport {Random} from \"@swim/util\";\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Interpolator} from \"@swim/util\";\nimport type {Input} from \"@swim/codec\";\nimport type {OutputSettingsLike} from \"@swim/codec\";\nimport {OutputSettings} from \"@swim/codec\";\nimport {Output} from \"@swim/codec\";\nimport {Writer} from \"@swim/codec\";\nimport {Unicode} from \"@swim/codec\";\nimport {Base16} from \"@swim/codec\";\nimport {Base64} from \"@swim/codec\";\nimport {Item} from \"./Item\";\nimport {Value} from \"./Value\";\n\n/** @public */\nexport type DataLike = Data | Uint8Array;\n\n/** @public */\nexport class Data extends Value {\n  constructor(array: Uint8Array | null, size: number, flags: number) {\n    super();\n    this.array = array;\n    this.size = size;\n    this.flags = flags;\n  }\n\n  override likeType?(like: Uint8Array): void;\n\n  /** @internal */\n  readonly array: Uint8Array | null;\n\n  override isConstant(): boolean {\n    return true;\n  }\n\n  readonly size: number;\n\n  /** @internal */\n  readonly flags: number;\n\n  getByte(index: number): number {\n    if (index < 0 || index >= this.size) {\n      throw new RangeError(\"\" + index);\n    }\n    return this.array![index]!;\n  }\n\n  setByte(index: number, value: number): Data {\n    const flags = this.flags;\n    if ((flags & Data.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    } else if (index < 0 || index >= this.size) {\n      throw new RangeError(\"\" + index);\n    }\n    if ((flags & Data.AliasedFlag) !== 0) {\n      return this.setByteAliased(index, value);\n    } else {\n      return this.setByteMutable(index, value);\n    }\n  }\n\n  /** @internal */\n  setByteAliased(index: number, value: number): Data {\n    const n = this.size;\n    const oldArray = this.array!;\n    const newArray = new Uint8Array(Data.expand(n));\n    newArray.set(oldArray, 0);\n    newArray[index] = value;\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).flags &= ~Data.AliasedFlag;\n    return this;\n  }\n\n  /** @internal */\n  setByteMutable(index: number, value: number): Data {\n    this.array![index] = value;\n    return this;\n  }\n\n  addByte(value: number): Data {\n    const flags = this.flags;\n    if ((flags & Data.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    if ((flags & Data.AliasedFlag) !== 0) {\n      return this.addByteAliased(value);\n    } else {\n      return this.addByteMutable(value);\n    }\n  }\n\n  /** @internal */\n  addByteAliased(value: number): Data {\n    const n = this.size;\n    const oldArray = this.array;\n    const newArray = new Uint8Array(Data.expand(n + 1));\n    if (oldArray !== null) {\n      newArray.set(oldArray, 0);\n    }\n    newArray[n] = value;\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).size = n + 1;\n    (this as Mutable<this>).flags &= ~Data.AliasedFlag;\n    return this;\n  }\n\n  /** @internal */\n  addByteMutable(value: number): Data {\n    const n = this.size;\n    const oldArray = this.array;\n    let newArray;\n    if (oldArray === null || n + 1 > oldArray.length) {\n      newArray = new Uint8Array(Data.expand(n + 1));\n      if (oldArray !== null) {\n        newArray.set(oldArray, 0);\n      }\n      (this as Mutable<this>).array = newArray;\n    } else {\n      newArray = oldArray;\n    }\n    newArray[n] = value;\n    (this as Mutable<this>).size = n + 1;\n    return this;\n  }\n\n  addData(data: Data): Data {\n    let array = data.array;\n    if (array === null) {\n      return this;\n    }\n    const size = data.size;\n    if (array.length > size) {\n      array = array.slice(0, size);\n    }\n    return this.addUint8Array(array);\n  }\n\n  addUint8Array(array: Uint8Array): Data {\n    const flags = this.flags;\n    if ((flags & Data.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    if ((flags & Data.AliasedFlag) !== 0) {\n      return this.addUint8ArrayAliased(array);\n    } else {\n      return this.addUint8ArrayMutable(array);\n    }\n  }\n\n  /** @internal */\n  addUint8ArrayAliased(array: Uint8Array): Data {\n    const size = array.length;\n    if (size === 0) {\n      return this;\n    }\n    const n = this.size;\n    const oldArray = this.array;\n    const newArray = new Uint8Array(Data.expand(n + size));\n    if (oldArray !== null) {\n      newArray.set(oldArray, 0);\n    }\n    newArray.set(array, n);\n    (this as Mutable<this>).array = newArray;\n    (this as Mutable<this>).size = n + size;\n    (this as Mutable<this>).flags &= ~Data.AliasedFlag;\n    return this;\n  }\n\n  /** @internal */\n  addUint8ArrayMutable(array: Uint8Array): Data {\n    const size = array.length;\n    if (size === 0) {\n      return this;\n    }\n    const n = this.size;\n    const oldArray = this.array;\n    let newArray;\n    if (oldArray === null || n + size > oldArray.length) {\n      newArray = new Uint8Array(Data.expand(n + size));\n      if (oldArray !== null) {\n        newArray.set(oldArray, 0);\n      }\n      (this as Mutable<this>).array = newArray;\n    } else {\n      newArray = oldArray;\n    }\n    newArray.set(array, n);\n    (this as Mutable<this>).size = n + size;\n    return this;\n  }\n\n  clear(): void {\n    if ((this.flags & Data.ImmutableFlag) !== 0) {\n      throw new Error(\"immutable\");\n    }\n    (this as Mutable<this>).array = null;\n    (this as Mutable<this>).size = 0;\n    (this as Mutable<this>).flags = Data.AliasedFlag;\n  }\n\n  toUint8Array(): Uint8Array {\n    const oldArray = this.array;\n    const flags = this.flags;\n    if ((flags & Data.ImmutableFlag) !== 0) {\n      return oldArray !== null ? oldArray.slice(0) : new Uint8Array(0);\n    } else if ((flags & Data.AliasedFlag) !== 0 || this.size !== oldArray!.length) {\n      const newArray = oldArray !== null ? oldArray.slice(0) : new Uint8Array(0);\n      (this as Mutable<this>).array = newArray;\n      (this as Mutable<this>).flags &= ~Data.AliasedFlag;\n      return newArray;\n    }\n    return oldArray!;\n  }\n\n  asUint8Array(): Uint8Array | undefined {\n    const array = this.array;\n    if (array === null || this.size === 0) {\n      return void 0;\n    } else if (array.length !== this.size) {\n      return new Uint8Array(array.buffer, array.byteOffset, this.size);\n    }\n    return array;\n  }\n\n  override toLike(): DataLike {\n    return this.toUint8Array();\n  }\n\n  override isAliased(): boolean {\n    return (this.flags & Data.AliasedFlag) !== 0;\n  }\n\n  override isMutable(): boolean {\n    return (this.flags & Data.ImmutableFlag) === 0;\n  }\n\n  override branch(): Data {\n    (this as Mutable<this>).flags |= Data.AliasedFlag;\n    return new Data(this.array, this.size, Data.AliasedFlag);\n  }\n\n  override clone(): Data {\n    return this.branch();\n  }\n\n  override commit(): this {\n    (this as Mutable<this>).flags |= Data.ImmutableFlag;\n    return this;\n  }\n\n  writeBase16(output: Output, base16: Base16 = Base16.uppercase): Writer<unknown, unknown> {\n    let array = this.array;\n    const size = this.size;\n    if (array === null || size === 0) {\n      return Writer.end();\n    } else if (array.length !== size) {\n      array = array.slice(0, size);\n    }\n    return base16.writeUint8Array(output, array);\n  }\n\n  toBase16(base16: Base16 = Base16.uppercase): string {\n    const output = Unicode.stringOutput();\n    this.writeBase16(output, base16).bind();\n    return output.bind();\n  }\n\n  writeBase64(output: Output, base64: Base64 = Base64.standard()): Writer<unknown, unknown> {\n    let array = this.array;\n    const size = this.size;\n    if (array === null || size === 0) {\n      return Writer.end();\n    } else if (array.length !== size) {\n      array = array.slice(0, size);\n    }\n    return base64.writeUint8Array(output, array);\n  }\n\n  toBase64(base64: Base64 = Base64.standard()): string {\n    const output = Unicode.stringOutput();\n    this.writeBase64(output, base64);\n    return output.bind();\n  }\n\n  override interpolateTo(that: Data): Interpolator<Data>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    return super.interpolateTo(that);\n  }\n\n  override get typeOrder(): number {\n    return 4;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof Data) {\n      const xs = this.array!;\n      const ys = that.array!;\n      const xn = this.size;\n      const yn = that.size;\n      let order = 0;\n      let i = 0;\n      do {\n        if (i < xn && i < yn) {\n          order = xs[i]! - ys[i]!;\n          i += 1;\n        } else {\n          break;\n        }\n      } while (order === 0);\n      if (order > 0) {\n        return 1;\n      } else if (order < 0) {\n        return -1;\n      } else if (xn > yn) {\n        return 1;\n      } else if (xn < yn) {\n        return -1;\n      } else {\n        return 0;\n      }\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: Item): boolean {\n    return this.equals(that);\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Data) {\n      const xs = this.array!;\n      const ys = that.array!;\n      const xn = this.size;\n      if (xn !== that.size) {\n        return false;\n      }\n      for (let i = 0; i < xn; i += 1) {\n        if (xs[i] !== ys[i]) {\n          return false;\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mixUint8Array(Constructors.hash(Data),\n        this.array !== null ? this.array : new Uint8Array(0)));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Data\").write(46/*'.'*/);\n    if (this.size === 0) {\n      output = output.write(\"empty\").write(40/*'('*/).write(41/*')'*/);\n    } else {\n      output = output.write(\"base16\").write(40/*'('*/).write(34/*'\"'*/);\n      const writer = this.writeBase16(output);\n      if (!writer.isDone()) {\n        return Output.error(writer.trap());\n      }\n      output = output.write(34/*'\"'*/).write(41/*')'*/);\n    }\n    return output;\n  }\n\n  /** @internal */\n  static readonly AliasedFlag: number = 1 << 0;\n  /** @internal */\n  static readonly ImmutableFlag: number = 1 << 1;\n\n  @Lazy\n  static override empty(): Data {\n    return new Data(null, 0, Data.AliasedFlag | Data.ImmutableFlag);\n  }\n\n  static create(initialCapacity?: number): Data {\n    if (initialCapacity === void 0) {\n      return new Data(null, 0, Data.AliasedFlag);\n    }\n    return new Data(new Uint8Array(initialCapacity), 0, 0);\n  }\n\n  static wrap(value: Uint8Array): Data {\n    return new Data(value, value.length, Data.AliasedFlag);\n  }\n\n  static fromBase16(input: Input | string): Data {\n    if (typeof input === \"string\") {\n      input = Unicode.stringInput(input);\n    }\n    return Base16.parse(input, Data.output()).bind();\n  }\n\n  static fromBase64(input: Input | string, base64: Base64 = Base64.standard()): Data {\n    if (typeof input === \"string\") {\n      input = Unicode.stringInput(input);\n    }\n    return base64.parse(input, Data.output()).bind();\n  }\n\n  static override fromLike(value: DataLike): Data {\n    if (value instanceof Data) {\n      return value;\n    } else if (value instanceof Uint8Array) {\n      return Data.wrap(value);\n    }\n    throw new TypeError(\"\" + value);\n  }\n\n  static random(size: number): Data {\n    const array = new Uint8Array(size);\n    Random.fillBytes(array);\n    return Data.wrap(array);\n  }\n\n  static output(): Output<Data>;\n  static output(initialCapacity: number): Output<Data>;\n  static output(data: Data): Output<Data>;\n  static output(data?: number | Data): Output<Data> {\n    if (!(data instanceof Data)) {\n      data = Data.create(data);\n    }\n    return new DataOutput(data, OutputSettings.standard());\n  }\n\n  /** @internal */\n  static expand(n: number): number {\n    n = Math.max(32, n) - 1;\n    n |= n >> 1; n |= n >> 2; n |= n >> 4; n |= n >> 8; n |= n >> 16;\n    return n + 1;\n  }\n}\n\n/** @internal */\nexport class DataOutput extends Output<Data> {\n  constructor(data: Data, settings: OutputSettings) {\n    super();\n    this.data = data;\n    this.settings = settings;\n  }\n\n  /** @internal */\n  readonly data: Data;\n\n  override isCont(): boolean {\n    return true;\n  }\n\n  override isFull(): boolean {\n    return false;\n  }\n\n  override isDone(): boolean {\n    return false;\n  }\n\n  override isError(): boolean {\n    return false;\n  }\n\n  override isPart(): boolean {\n    return false;\n  }\n\n  override asPart(part: boolean): Output<Data> {\n    return this;\n  }\n\n  override write(b: number | string): Output<Data> {\n    if (typeof b !== \"number\") {\n      throw new TypeError(\"\" + b);\n    }\n    this.data.addByte(b);\n    return this;\n  }\n\n  override writeln(string?: string): Output<Data> {\n    throw new TypeError(\"\" + string);\n  }\n\n  override readonly settings: OutputSettings;\n\n  override withSettings(settings: OutputSettingsLike): Output<Data> {\n    settings = OutputSettings.fromLike(settings);\n    (this as Mutable<this>).settings = settings;\n    return this;\n  }\n\n  override bind(): Data {\n    return this.data;\n  }\n\n  override clone(): Output<Data> {\n    return new DataOutput(this.data.branch(), this.settings);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Lazy} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Strings} from \"@swim/util\";\nimport type {Interpolator} from \"@swim/util\";\nimport type {OutputSettingsLike} from \"@swim/codec\";\nimport {OutputSettings} from \"@swim/codec\";\nimport {Output} from \"@swim/codec\";\nimport {Format} from \"@swim/codec\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./Value\";\nimport {Num} from \"./\"; // forward import\n\n/** @public */\nexport type TextLike = Text | string;\n\n/** @public */\nexport class Text extends Value {\n  private constructor(value: string) {\n    super();\n    this.value = value;\n    this.hashValue = void 0;\n  }\n\n  override likeType?(like: string): void;\n\n  override isConstant(): boolean {\n    return true;\n  }\n\n  readonly value: string;\n\n  get size(): number {\n    return this.value.length;\n  }\n\n  override stringValue(): string;\n  override stringValue<T>(orElse: T): string;\n  override stringValue<T>(orElse?: T): string {\n    return this.value;\n  }\n\n  override numberValue(): number | undefined;\n  override numberValue<T>(orElse: T): number | T;\n  override numberValue<T>(orElse?: T): number | T | undefined {\n    try {\n      return Num.parse(this.value).numberValue();\n    } catch (error) {\n      return orElse;\n    }\n  }\n\n  override booleanValue(): boolean | undefined;\n  override booleanValue<T>(orElse: T): boolean | T;\n  override booleanValue<T>(orElse?: T): boolean | T | undefined {\n    if (this.value === \"true\") {\n      return true;\n    } else if (this.value === \"false\") {\n      return false;\n    } else {\n      return orElse;\n    }\n  }\n\n  override toLike(): TextLike {\n    return this.value;\n  }\n\n  override valueOf(): string {\n    return this.value;\n  }\n\n  override plus(that: ValueLike): Value;\n  override plus(that: ItemLike): Item;\n  override plus(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Text) {\n      return Text.from(this.value + that.value);\n    }\n    return super.plus(that);\n  }\n\n  override branch(): Text {\n    return this;\n  }\n\n  override clone(): Text {\n    return this;\n  }\n\n  override commit(): this {\n    return this;\n  }\n\n  override interpolateTo(that: Text): Interpolator<Text>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    return super.interpolateTo(that);\n  }\n\n  override get typeOrder(): number {\n    return 5;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof Text) {\n      return this.value.localeCompare(that.value);\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown): boolean {\n    return this.equals(that);\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Text) {\n      return this.value === that.value;\n    }\n    return false;\n  }\n\n  /** @internal */\n  readonly hashValue: number | undefined;\n\n  override hashCode(): number {\n    let hashValue = this.hashValue;\n    if (hashValue === void 0) {\n      hashValue = Strings.hash(this.value);\n      (this as Mutable<this>).hashValue = hashValue;\n    }\n    return hashValue;\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Text\").write(46/*'.'*/);\n    if (this.value.length === 0) {\n      output = output.write(\"empty\").write(40/*'('*/).write(41/*')'*/);\n    } else {\n      output = output.write(\"from\").write(40/*'('*/).debug(this.value).write(41/*')'*/);\n    }\n    return output;\n  }\n\n  override display<T>(output: Output<T>): Output<T> {\n    return Format.debugAny(output, this.value);\n  }\n\n  override toString(): string {\n    return this.value;\n  }\n\n  @Lazy\n  static override empty(): Text {\n    return new Text(\"\");\n  }\n\n  static from(value: string): Text {\n    const n = value.length;\n    if (n === 0) {\n      return Text.empty();\n    }\n    return new Text(value);\n  }\n\n  static override fromLike(value: TextLike): Text {\n    if (value instanceof Text) {\n      return value;\n    } else if (typeof value === \"string\") {\n      return Text.from(value);\n    }\n    throw new TypeError(\"\" + value);\n  }\n\n  static output(settings?: OutputSettings): Output<Text> {\n    if (settings === void 0) {\n      settings = OutputSettings.standard();\n    }\n    return new TextOutput(\"\", settings);\n  }\n}\n\n/** @internal */\nexport class TextOutput extends Output<Text> {\n  constructor(string: string, settings: OutputSettings) {\n    super();\n    this.string = string;\n    this.settings = settings;\n  }\n\n  /** @internal */\n  readonly string: string;\n\n  override isCont(): boolean {\n    return true;\n  }\n\n  override isFull(): boolean {\n    return false;\n  }\n\n  override isDone(): boolean {\n    return false;\n  }\n\n  override isError(): boolean {\n    return false;\n  }\n\n  override isPart(): boolean {\n    return false;\n  }\n\n  override asPart(part: boolean): Output<Text> {\n    return this;\n  }\n\n  override write(token: number | string): Output<Text> {\n    if (typeof token === \"number\") {\n      if ((token >= 0x0000 && token <= 0xd7ff)\n          || (token >= 0xe000 && token <= 0xffff)) { // U+0000..U+D7FF | U+E000..U+FFFF\n        token = String.fromCharCode(token);\n      } else if (token >= 0x10000 && token <= 0x10ffff) { // U+10000..U+10FFFF\n        const u = token - 0x10000;\n        token = String.fromCharCode(0xd800 | (u >>> 10), 0xdc00 | (u & 0x3ff));\n      } else { // invalid code point\n        token = \"\\ufffd\";\n      }\n    }\n    (this as Mutable<this>).string += token;\n    return this;\n  }\n\n  override readonly settings!: OutputSettings;\n\n  override withSettings(settings: OutputSettingsLike): Output<Text> {\n    settings = OutputSettings.fromLike(settings);\n    (this as Mutable<this>).settings = settings;\n    return this;\n  }\n\n  override bind(): Text {\n    return Text.from(this.string);\n  }\n\n  override clone(): Output<Text> {\n    return new TextOutput(this.string, this.settings);\n  }\n\n  override toString(): string {\n    return this.string;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Lazy} from \"@swim/util\";\nimport {Equivalent} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Format} from \"@swim/codec\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./Value\";\n\n/** @public */\nexport type NumLike = Num | number;\n\n/** @public */\nexport class Num extends Value {\n  private constructor(value: number, flags?: number) {\n    super();\n    this.value = value;\n    this.flags = flags !== void 0 ? flags : 0;\n  }\n\n  override likeType?(like: number): void;\n\n  override isConstant(): boolean {\n    return true;\n  }\n\n  readonly value: number;\n\n  /** @internal */\n  readonly flags: number;\n\n  isNaN(): boolean {\n    return isNaN(this.value);\n  }\n\n  isInfinite(): boolean {\n    return !isNaN(this.value) && !isFinite(this.value);\n  }\n\n  isUint32(): boolean {\n    return (this.flags & Num.Uint32Flag) !== 0;\n  }\n\n  isUint64(): boolean {\n    return (this.flags & Num.Uint64Flag) !== 0;\n  }\n\n  override stringValue(): string;\n  override stringValue<T>(orElse: T): string;\n  override stringValue<T>(orElse?: T): string {\n    return \"\" + this.value;\n  }\n\n  override numberValue(): number;\n  override numberValue<T>(orElse: T): number;\n  override numberValue<T>(orElse?: T): number {\n    return this.value;\n  }\n\n  override booleanValue(): boolean;\n  override booleanValue<T>(orElse: T): boolean;\n  override booleanValue<T>(orElse?: T): boolean {\n    return !!this.value;\n  }\n\n  override toLike(): NumLike {\n    return this.value;\n  }\n\n  override valueOf(): number {\n    return this.value;\n  }\n\n  override bitwiseOr(that: ValueLike): Value;\n  override bitwiseOr(that: ItemLike): Item;\n  override bitwiseOr(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Num) {\n      return Num.from((this.value | that.value) >>> 0);\n    }\n    return super.bitwiseOr(that);\n  }\n\n  override bitwiseXor(that: ValueLike): Value;\n  override bitwiseXor(that: ItemLike): Item;\n  override bitwiseXor(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Num) {\n      return Num.from((this.value ^ that.value) >>> 0);\n    }\n    return super.bitwiseXor(that);\n  }\n\n  override bitwiseAnd(that: ValueLike): Value;\n  override bitwiseAnd(that: ItemLike): Item;\n  override bitwiseAnd(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Num) {\n      return Num.from((this.value & that.value) >>> 0);\n    }\n    return super.bitwiseAnd(that);\n  }\n\n  override plus(that: ValueLike): Value;\n  override plus(that: ItemLike): Item;\n  override plus(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Num) {\n      return Num.from(this.value + that.value);\n    }\n    return super.plus(that);\n  }\n\n  override minus(that: ValueLike): Value;\n  override minus(that: ItemLike): Item;\n  override minus(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Num) {\n      return Num.from(this.value - that.value);\n    }\n    return super.minus(that);\n  }\n\n  override times(that: ValueLike): Value;\n  override times(that: ItemLike): Item;\n  override times(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Num) {\n      return Num.from(this.value * that.value);\n    }\n    return super.times(that);\n  }\n\n  override divide(that: ValueLike): Value;\n  override divide(that: ItemLike): Item;\n  override divide(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Num) {\n      return Num.from(this.value / that.value);\n    }\n    return super.divide(that);\n  }\n\n  override modulo(that: ValueLike): Value;\n  override modulo(that: ItemLike): Item;\n  override modulo(that: ItemLike): Item {\n    that = Item.fromLike(that);\n    if (that instanceof Num) {\n      return Num.from(this.value % that.value);\n    }\n    return super.modulo(that);\n  }\n\n  override bitwiseNot(): Value {\n    return Num.from(~this.value >>> 0);\n  }\n\n  override negative(): Value {\n    return Num.from(-this.value);\n  }\n\n  override positive(): Value {\n    return this;\n  }\n\n  override inverse(): Value {\n    return Num.from(1 / this.value);\n  }\n\n  abs(): Num {\n    return Num.from(Math.abs(this.value));\n  }\n\n  ceil(): Num {\n    return Num.from(Math.ceil(this.value));\n  }\n\n  floor(): Num {\n    return Num.from(Math.floor(this.value));\n  }\n\n  round(): Num {\n    return Num.from(Math.round(this.value));\n  }\n\n  sqrt(): Num {\n    return Num.from(Math.sqrt(this.value));\n  }\n\n  pow(that: NumLike): Num {\n    that = Num.fromLike(that);\n    return Num.from(Math.pow(this.value, that.value));\n  }\n\n  override max(that: Num): Num;\n  override max(that: Item): Item;\n  override max(that: Item): Item {\n    return this.compareTo(that) >= 0 ? this : that;\n  }\n\n  override min(that: Num): Num;\n  override min(that: Item): Item;\n  override min(that: Item): Item {\n    return this.compareTo(that) <= 0 ? this : that;\n  }\n\n  override interpolateTo(that: Num): Interpolator<Num>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof Num) {\n      return NumInterpolator(this, that);\n    }\n    return super.interpolateTo(that);\n  }\n\n  override get typeOrder(): number {\n    return 6;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof Num) {\n      const x = this.value;\n      const y = that.value;\n      return x < y ? -1 : x > y ? 1 : isNaN(y) ? (isNaN(x) ? 0 : -1) : isNaN(x) ? 1 : 0;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Num) {\n      const x = this.value;\n      const y = that.value;\n      return x === y || isNaN(x) && isNaN(y) || Math.abs(y - x) < (epsilon !== void 0 ? epsilon : Equivalent.Epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Num) {\n      const x = this.value;\n      const y = that.value;\n      return x === y || isNaN(x) && isNaN(y);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Numbers.hash(this.value);\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Num\").write(46/*'.'*/).write(\"from\")\n                   .write(40/*'('*/).display(this).write(41/*')'*/);\n    return output;\n  }\n\n  override display<T>(output: Output<T>): Output<T> {\n    return Format.displayNumber(output, this.value);\n  }\n\n  /** @internal */\n  static readonly Uint32Flag: number = 1;\n  /** @internal */\n  static readonly Uint64Flag: number = 2;\n  /** @internal */\n  static readonly TypeMask = 0x3;\n\n  @Lazy\n  static zero(): Num {\n    return new Num(0);\n  }\n\n  @Lazy\n  static negativeZero(): Num {\n    return new Num(-0);\n  }\n\n  @Lazy\n  static one(): Num {\n    return new Num(1);\n  }\n\n  @Lazy\n  static negativeOne(): Num {\n    return new Num(-1);\n  }\n\n  @Lazy\n  static nan(): Num {\n    return new Num(NaN);\n  }\n\n  static uint32(value: number): Num {\n    return new Num(value, Num.Uint32Flag);\n  }\n\n  static uint64(value: number): Num {\n    return new Num(value, Num.Uint64Flag);\n  }\n\n  static from(value: number): Num {\n    if (value === 0) {\n      if (1 / value === -Infinity) {\n        return Num.negativeZero();\n      } else {\n        return Num.zero();\n      }\n    } else if (value === 1) {\n      return Num.one();\n    } else if (value === -1) {\n      return Num.negativeOne();\n    } else if (isNaN(value)) {\n      return Num.nan();\n    }\n    return new Num(value);\n  }\n\n  static override fromLike(value: NumLike): Num {\n    if (value instanceof Num) {\n      return value;\n    } else if (typeof value === \"number\") {\n      return Num.from(value);\n    }\n    throw new TypeError(\"\" + value);\n  }\n\n  static parse(value: string): Num {\n    if (value === \"NaN\") {\n      return Num.nan();\n    }\n    const num = +value;\n    if (!isFinite(num)) {\n      throw new Error(value);\n    }\n    return Num.from(num);\n  }\n}\n\n/** @internal */\nexport const NumInterpolator = (function (_super: typeof Interpolator) {\n  const NumInterpolator = function (y0: Num, y1: Num): Interpolator<Num> {\n    const interpolator = function (u: number): Num {\n      const y0 = interpolator[0].value;\n      const y1 = interpolator[1].value;\n      return Num.from(y0 + u * (y1 - y0));\n    } as Interpolator<Num>;\n    Object.setPrototypeOf(interpolator, NumInterpolator.prototype);\n    (interpolator as Mutable<typeof interpolator>)[0] = y0;\n    (interpolator as Mutable<typeof interpolator>)[1] = y1;\n    return interpolator;\n  } as {\n    (y0: Num, y1: Num): Interpolator<Num>;\n\n    /** @internal */\n    prototype: Interpolator<Num>;\n  };\n\n  NumInterpolator.prototype = Object.create(_super.prototype);\n  NumInterpolator.prototype.constructor = NumInterpolator;\n\n  return NumInterpolator;\n})(Interpolator);\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Lazy} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Strings} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./Value\";\n\n/** @public */\nexport type BoolLike = Bool | boolean;\n\n/** @public */\nexport class Bool extends Value {\n  private constructor(value: boolean) {\n    super();\n    Object.defineProperty(this, \"value\", {\n      value: value,\n      enumerable: true,\n    });\n    Object.defineProperty(this, \"hashValue\", {\n      value: Strings.hash(value ? \"true\" : \"false\"),\n    });\n  }\n\n  override likeType?(like: boolean): void;\n\n  override isDefinite(): boolean {\n    return this.value;\n  }\n\n  override isConstant(): boolean {\n    return true;\n  }\n\n  readonly value!: boolean;\n\n  override stringValue(): string;\n  override stringValue<T>(orElse: T): string;\n  override stringValue<T>(orElse?: T): string {\n    return this.value ? \"true\" : \"false\";\n  }\n\n  override booleanValue(): boolean;\n  override booleanValue<T>(orElse: T): boolean;\n  override booleanValue<T>(orElse?: T): boolean {\n    return this.value;\n  }\n\n  override toLike(): BoolLike {\n    return this.value;\n  }\n\n  override valueOf(): boolean {\n    return this.value;\n  }\n\n  override conditional(thenTerm: ValueLike, elseTerm: ValueLike): Value;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item {\n    return this.value ? Item.fromLike(thenTerm) : Item.fromLike(elseTerm);\n  }\n\n  override or(that: ValueLike): Value;\n  override or(that: ItemLike): Item;\n  override or(that: ItemLike): Item {\n    return this.value ? this : Item.fromLike(that);\n  }\n\n  override and(that: ValueLike): Value;\n  override and(that: ItemLike): Item;\n  override and(that: ItemLike): Item {\n    return this.value ? Item.fromLike(that) : this;\n  }\n\n  override not(): Value {\n    return Bool.from(!this.value);\n  }\n\n  override get typeOrder(): number {\n    return 7;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof Bool) {\n      if (this.value && !that.value) {\n        return -1;\n      } else if (!this.value && that.value) {\n        return 1;\n      } else {\n        return 0;\n      }\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown): boolean {\n    return this.equals(that);\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof Bool) {\n      return this.value === that.value;\n    }\n    return false;\n  }\n\n  /** @internal */\n  readonly hashValue!: number;\n\n  override hashCode(): number {\n    return this.hashValue;\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Bool\").write(46/*'.'*/).write(\"from\").write(40/*'('*/)\n                   .write(this.value ? \"true\" : \"false\").write(41/*')'*/);\n    return output;\n  }\n\n  override display<T>(output: Output<T>): Output<T> {\n    output = output.write(this.value ? \"true\" : \"false\");\n    return output;\n  }\n\n  @Lazy\n  static true(): Bool {\n    return new Bool(true);\n  }\n\n  @Lazy\n  static false(): Bool {\n    return new Bool(false);\n  }\n\n  static from(value: boolean): Bool {\n    return value ? Bool.true() : Bool.false();\n  }\n\n  static override fromLike(value: BoolLike): Bool {\n    if (value instanceof Bool) {\n      return value;\n    } else if (typeof value === \"boolean\") {\n      return Bool.from(value);\n    }\n    throw new TypeError(\"\" + value);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Lazy} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Interpolator} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"./Item\";\nimport {Value} from \"./Value\";\nimport {Record} from \"./Record\";\n\n/** @public */\nexport type ExtantLike = Extant | null;\n\n/** @public */\nexport class Extant extends Value {\n  /** @internal */\n  private constructor() {\n    super();\n  }\n\n  override likeType?(like: null): void;\n\n  /**\n   * Always returns `true` because `Extant` is a defined value.\n   */\n  override isDefined(): boolean {\n    return true;\n  }\n\n  /**\n   * Always returns `false` because `Extant` is not a distinct value.\n   */\n  override isDistinct(): boolean {\n    return false;\n  }\n\n  /**\n   * Always returns `false` because `Extant` is not a definite value.\n   */\n  override isDefinite(): boolean {\n    return false;\n  }\n\n  override isConstant(): boolean {\n    return true;\n  }\n\n  /**\n   * Always returns an empty `Record` because `Extant` is not a distinct value.\n   */\n  override unflattened(): Record {\n    return Record.empty();\n  }\n\n  override not(): Value {\n    return Value.absent();\n  }\n\n  /**\n   * Always returns the empty `string` because `Extant` behaves like an empty\n   * `Record`, which converts to a `string` by concatenating the string values\n   * of all its members, if all its members convert to string values.\n   */\n  override stringValue(): string;\n  /**\n   * Always returns the empty `string` because `Extant` behaves like an empty\n   * `Record`, which converts to a `string` by concatenating the string values\n   * of all its members, if all its members convert to string values.\n   */\n  override stringValue<T>(orElse: T): string;\n  override stringValue<T>(orElse?: T): string {\n    return \"\";\n  }\n\n  /**\n   * Always returns `true` because `Extant` behaves like a truthy value.\n   */\n  override booleanValue(): boolean;\n  /**\n   * Always returns `true` because `Extant` behaves like a truthy value.\n   */\n  override booleanValue<T>(orElse: T): boolean;\n  override booleanValue<T>(orElse?: T): boolean {\n    return true;\n  }\n\n  override toLike(): ExtantLike {\n    return null;\n  }\n\n  override interpolateTo(that: Extant): Interpolator<Extant>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    return super.interpolateTo(that);\n  }\n\n  override get typeOrder(): number {\n    return 98;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown): boolean {\n    return this === that;\n  }\n\n  override equals(that: unknown): boolean {\n    return this === that;\n  }\n\n  override hashCode(): number {\n    return Constructors.hash(Extant);\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Value\").write(46/*'.'*/).write(\"extant\").write(40/*'('*/).write(41/*')'*/);\n    return output;\n  }\n\n  override display<T>(output: Output<T>): Output<T> {\n    output = output.write(\"null\");\n    return output;\n  }\n\n  @Lazy\n  static override extant(): Extant {\n    return new Extant();\n  }\n\n  static override fromLike(value: ExtantLike): Extant {\n    if (value instanceof Extant) {\n      return value;\n    } else if (value === null) {\n      return Extant.extant();\n    }\n    throw new TypeError(\"\" + value);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Lazy} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport {Cursor} from \"@swim/util\";\nimport type {Interpolator} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport {Attr} from \"./Attr\";\nimport {Slot} from \"./Slot\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./Value\";\nimport {Record} from \"./Record\";\nimport type {TextLike} from \"./Text\";\n\n/** @public */\nexport type AbsentLike = Absent | undefined;\n\n/** @public */\nexport class Absent extends Value {\n  /** @internal */\n  private constructor() {\n    super();\n  }\n\n  override likeType?(like: undefined): void;\n\n  /**\n   * Always returns `false` because `Absent` represents an undefined value.\n   */\n  override isDefined(): boolean {\n    return false;\n  }\n\n  /**\n   * Always returns `false` because `Absent` is not a distinct value.\n   */\n  override isDistinct(): boolean {\n    return false;\n  }\n\n  /**\n   * Always returns `false` because `Absent` is not a definite value.\n   */\n  override isDefinite(): boolean {\n    return false;\n  }\n\n  override isConstant(): boolean {\n    return true;\n  }\n\n  /**\n   * Always returns an empty `Record` because `Absent` is not a distinct value.\n   */\n  override unflattened(): Record {\n    return Record.empty();\n  }\n\n  override updated(key: ValueLike, value: ValueLike): Record {\n    return Record.of(Slot.of(key, value));\n  }\n\n  override updatedAttr(key: TextLike, value: ValueLike): Record {\n    return Record.of(Attr.of(key, value));\n  }\n\n  override updatedSlot(key: ValueLike, value: ValueLike): Record {\n    return Record.of(Slot.of(key, value));\n  }\n\n  override appended(...items: ItemLike[]): Record {\n    return Record.of(items);\n  }\n\n  override prepended(...items: ItemLike[]): Record {\n    return Record.of(items);\n  }\n\n  override concat(...items: ItemLike[]): Record {\n    const record = Record.create();\n    for (let i = 0; i < items.length; i += 1) {\n      Item.fromLike(items[i]).forEach(function (item: Item): void {\n        record.push(item);\n      });\n    }\n    return record;\n  }\n\n  override conditional(thenTerm: ValueLike, elseTerm: ValueLike): Value;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item {\n    return Item.fromLike(elseTerm);\n  }\n\n  override or(that: ValueLike): Value;\n  override or(that: ItemLike): Item;\n  override or(that: ItemLike): Item {\n    return Item.fromLike(that);\n  }\n\n  override and(that: ValueLike): Value;\n  override and(that: ItemLike): Item;\n  override and(that: ItemLike): Item {\n    return this;\n  }\n\n  override not(): Value {\n    return Value.extant();\n  }\n\n  /**\n   * Always returns `false` because `Absent` behaves like a falsey value.\n   */\n  override booleanValue(): boolean;\n  /**\n   * Always returns `false` because `Absent` behaves like a falsey value.\n   */\n  override booleanValue<T>(orElse: T): boolean;\n  override booleanValue<T>(orElse?: T): boolean {\n    return false;\n  }\n\n  override toLike(): AbsentLike {\n    return void 0;\n  }\n\n  override forEach<T>(callback: (item: Item, index: number) => T | void): T | undefined;\n  override forEach<T, S>(callback: (this: S, item: Item, index: number) => T | void, thisArg: S): T | undefined;\n  override forEach<T, S>(callback: (this: S | undefined, item: Item, index: number) => T | void, thisArg?: S): T | undefined {\n    return void 0;\n  }\n\n  override iterator(): Cursor<Item> {\n    return Cursor.empty();\n  }\n\n  override interpolateTo(that: Absent): Interpolator<Absent>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    return super.interpolateTo(that);\n  }\n\n  override get typeOrder(): number {\n    return 99;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown): boolean {\n    return this === that;\n  }\n\n  override equals(that: unknown): boolean {\n    return this === that;\n  }\n\n  override hashCode(): number {\n    return Constructors.hash(Absent);\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Value\").write(46/*'.'*/).write(\"absent\").write(40/*'('*/).write(41/*')'*/);\n    return output;\n  }\n\n  override display<T>(output: Output<T>): Output<T> {\n    output = output.write(\"undefined\");\n    return output;\n  }\n\n  @Lazy\n  static override absent(): Absent {\n    return new Absent();\n  }\n\n  static override fromLike(value: AbsentLike): Absent {\n    if (value instanceof Absent) {\n      return value;\n    } else if (value === void 0) {\n      return Absent.absent();\n    }\n    throw new TypeError(\"\" + value);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {ItemLike} from \"./Item\";\nimport {Item} from \"./Item\";\nimport type {ValueLike} from \"./Value\";\nimport {Value} from \"./Value\";\nimport {Num} from \"./Num\";\nimport type {Operator} from \"./operator/Operator\";\nimport {ConditionalOperator} from \"./\"; // forward import\nimport {OrOperator} from \"./\"; // forward import\nimport {AndOperator} from \"./\"; // forward import\nimport {BitwiseOrOperator} from \"./\"; // forward import\nimport {BitwiseXorOperator} from \"./\"; // forward import\nimport {BitwiseAndOperator} from \"./\"; // forward import\nimport {LtOperator} from \"./\"; // forward import\nimport {LeOperator} from \"./\"; // forward import\nimport {EqOperator} from \"./\"; // forward import\nimport {NeOperator} from \"./\"; // forward import\nimport {GeOperator} from \"./\"; // forward import\nimport {GtOperator} from \"./\"; // forward import\nimport {PlusOperator} from \"./\"; // forward import\nimport {MinusOperator} from \"./\"; // forward import\nimport {TimesOperator} from \"./\"; // forward import\nimport {DivideOperator} from \"./\"; // forward import\nimport {ModuloOperator} from \"./\"; // forward import\nimport {NotOperator} from \"./\"; // forward import\nimport {BitwiseNotOperator} from \"./\"; // forward import\nimport {NegativeOperator} from \"./\"; // forward import\nimport {PositiveOperator} from \"./\"; // forward import\n\n/** @public */\nexport abstract class Expression extends Value {\n  /** @internal */\n  constructor() {\n    super();\n  }\n\n  override conditional(thenTerm: Value, elseTerm: Value): Value;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item;\n  override conditional(thenTerm: ItemLike, elseTerm: ItemLike): Item {\n    thenTerm = Item.fromLike(thenTerm);\n    elseTerm = Item.fromLike(elseTerm);\n    return new ConditionalOperator(this, thenTerm, elseTerm);\n  }\n\n  override or(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new OrOperator(this, that);\n  }\n\n  override and(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new AndOperator(this, that);\n  }\n\n  override bitwiseOr(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new BitwiseOrOperator(this, that);\n  }\n\n  override bitwiseXor(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new BitwiseXorOperator(this, that);\n  }\n\n  override bitwiseAnd(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new BitwiseAndOperator(this, that);\n  }\n\n  override lt(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new LtOperator(this, that);\n  }\n\n  override le(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new LeOperator(this, that);\n  }\n\n  override eq(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new EqOperator(this, that);\n  }\n\n  override ne(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new NeOperator(this, that);\n  }\n\n  override ge(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new GeOperator(this, that);\n  }\n\n  override gt(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new GtOperator(this, that);\n  }\n\n  override plus(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new PlusOperator(this, that);\n  }\n\n  override minus(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new MinusOperator(this, that);\n  }\n\n  override times(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new TimesOperator(this, that);\n  }\n\n  override divide(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new DivideOperator(this, that);\n  }\n\n  override modulo(that: ItemLike): Operator {\n    that = Item.fromLike(that);\n    return new ModuloOperator(this, that);\n  }\n\n  override not(): Operator {\n    return new NotOperator(this);\n  }\n\n  override bitwiseNot(): Operator {\n    return new BitwiseNotOperator(this);\n  }\n\n  override negative(): Operator {\n    return new NegativeOperator(this);\n  }\n\n  override positive(): Operator {\n    return new PositiveOperator(this);\n  }\n\n  override inverse(): Operator {\n    return new DivideOperator(Num.one(), this);\n  }\n\n  override toLike(): ValueLike {\n    return this;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Item} from \"../Item\";\nimport {Expression} from \"../Expression\";\nimport type {BinaryOperator} from \"./BinaryOperator\";\nimport type {UnaryOperator} from \"./UnaryOperator\";\nimport {OrOperator} from \"../\"; // forward import\nimport {AndOperator} from \"../\"; // forward import\nimport {BitwiseOrOperator} from \"../\"; // forward import\nimport {BitwiseXorOperator} from \"../\"; // forward import\nimport {BitwiseAndOperator} from \"../\"; // forward import\nimport {LtOperator} from \"../\"; // forward import\nimport {LeOperator} from \"../\"; // forward import\nimport {EqOperator} from \"../\"; // forward import\nimport {NeOperator} from \"../\"; // forward import\nimport {GeOperator} from \"../\"; // forward import\nimport {GtOperator} from \"../\"; // forward import\nimport {PlusOperator} from \"../\"; // forward import\nimport {MinusOperator} from \"../\"; // forward import\nimport {TimesOperator} from \"../\"; // forward import\nimport {DivideOperator} from \"../\"; // forward import\nimport {ModuloOperator} from \"../\"; // forward import\nimport {NotOperator} from \"../\"; // forward import\nimport {BitwiseNotOperator} from \"../\"; // forward import\nimport {NegativeOperator} from \"../\"; // forward import\nimport {PositiveOperator} from \"../\"; // forward import\n\n/** @public */\nexport abstract class Operator extends Expression {\n  /** @internal */\n  constructor() {\n    super();\n  }\n\n  static binary(operand1: Item, operator: string, operand2: Item): BinaryOperator {\n    switch (operator) {\n      case \"||\": return new OrOperator(operand1, operand2);\n      case \"&&\": return new AndOperator(operand1, operand2);\n      case \"|\": return new BitwiseOrOperator(operand1, operand2);\n      case \"^\": return new BitwiseXorOperator(operand1, operand2);\n      case \"&\": return new BitwiseAndOperator(operand1, operand2);\n      case \"<\": return new LtOperator(operand1, operand2);\n      case \"<=\": return new LeOperator(operand1, operand2);\n      case \"==\": return new EqOperator(operand1, operand2);\n      case \"!=\": return new NeOperator(operand1, operand2);\n      case \">=\": return new GeOperator(operand1, operand2);\n      case \">\": return new GtOperator(operand1, operand2);\n      case \"+\": return new PlusOperator(operand1, operand2);\n      case \"-\": return new MinusOperator(operand1, operand2);\n      case \"*\": return new TimesOperator(operand1, operand2);\n      case \"/\": return new DivideOperator(operand1, operand2);\n      case \"%\": return new ModuloOperator(operand1, operand2);\n      default: throw new Error(operator);\n    }\n  }\n\n  static unary(operator: string, operand: Item): UnaryOperator {\n    switch (operator) {\n      case \"!\": return new NotOperator(operand);\n      case \"~\": return new BitwiseNotOperator(operand);\n      case \"-\": return new NegativeOperator(operand);\n      case \"+\": return new PositiveOperator(operand);\n      default: throw new Error(operator);\n    }\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Interpolator} from \"@swim/util\";\nimport type {Item} from \"../Item\";\nimport {Operator} from \"./Operator\";\nimport {BinaryOperatorInterpolator} from \"../\"; // forward import\n\n/** @public */\nexport abstract class BinaryOperator extends Operator {\n  constructor(operand1: Item, operand2: Item) {\n    super();\n    this.operand1 = operand1;\n    this.operand2 = operand2;\n  }\n\n  readonly operand1: Item;\n\n  abstract readonly operator: string;\n\n  readonly operand2: Item;\n\n  override isConstant(): boolean {\n    return this.operand1.isConstant() && this.operand2.isConstant();\n  }\n\n  override interpolateTo(that: BinaryOperator): Interpolator<BinaryOperator>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof BinaryOperator && this.operator === that.operator) {\n      return BinaryOperatorInterpolator(this, that);\n    } else {\n      return super.interpolateTo(that);\n    }\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport type {Item} from \"../Item\";\nimport {Operator} from \"./Operator\";\nimport type {BinaryOperator} from \"./BinaryOperator\";\n\n/** @internal */\nexport interface BinaryOperatorInterpolator extends Interpolator<BinaryOperator> {\n  /** @internal */\n  readonly operand1Interpolator: Interpolator<Item>;\n  /** @internal */\n  readonly operator: string;\n  /** @internal */\n  readonly operand2Interpolator: Interpolator<Item>;\n\n  readonly 0: BinaryOperator;\n\n  readonly 1: BinaryOperator;\n\n  equals(that: unknown): boolean;\n}\n\n/** @internal */\nexport const BinaryOperatorInterpolator = (function (_super: typeof Interpolator) {\n  const BinaryOperatorInterpolator = function (y0: BinaryOperator, y1: BinaryOperator): BinaryOperatorInterpolator {\n    const operator = y0.operator;\n    if (operator !== y1.operator) {\n      throw new Error();\n    }\n    const interpolator = function (u: number): BinaryOperator {\n      const operand1 = interpolator.operand1Interpolator(u);\n      const operand2 = interpolator.operand2Interpolator(u);\n      return Operator.binary(operand1, interpolator.operator, operand2);\n    } as BinaryOperatorInterpolator;\n    Object.setPrototypeOf(interpolator, BinaryOperatorInterpolator.prototype);\n    (interpolator as Mutable<typeof interpolator>).operand1Interpolator = y0.operand1.interpolateTo(y1.operand1);\n    (interpolator as Mutable<typeof interpolator>).operator = operator;\n    (interpolator as Mutable<typeof interpolator>).operand2Interpolator = y0.operand2.interpolateTo(y1.operand2);\n    return interpolator;\n  } as {\n    (y0: BinaryOperator, y1: BinaryOperator): BinaryOperatorInterpolator;\n\n    /** @internal */\n    prototype: BinaryOperatorInterpolator;\n  };\n\n  BinaryOperatorInterpolator.prototype = Object.create(_super.prototype);\n  BinaryOperatorInterpolator.prototype.constructor = BinaryOperatorInterpolator;\n\n  Object.defineProperty(BinaryOperatorInterpolator.prototype, 0, {\n    get(this: BinaryOperatorInterpolator): BinaryOperator {\n      const operand1 = this.operand1Interpolator[0];\n      const operand2 = this.operand2Interpolator[0];\n      return Operator.binary(operand1, this.operator, operand2);\n    },\n    configurable: true,\n  });\n\n  Object.defineProperty(BinaryOperatorInterpolator.prototype, 1, {\n    get(this: BinaryOperatorInterpolator): BinaryOperator {\n      const operand1 = this.operand1Interpolator[1];\n      const operand2 = this.operand2Interpolator[1];\n      return Operator.binary(operand1, this.operator, operand2);\n    },\n    configurable: true,\n  });\n\n  BinaryOperatorInterpolator.prototype.equals = function (that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof BinaryOperatorInterpolator) {\n      return this.operator === that.operator\n          && this.operand1Interpolator.equals(that.operand1Interpolator)\n          && this.operand2Interpolator.equals(that.operand2Interpolator);\n    }\n    return false;\n  };\n\n  return BinaryOperatorInterpolator;\n})(Interpolator);\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Interpolator} from \"@swim/util\";\nimport type {Item} from \"../Item\";\nimport {Operator} from \"./Operator\";\nimport {UnaryOperatorInterpolator} from \"../\"; // forward import\n\n/** @public */\nexport abstract class UnaryOperator extends Operator {\n  constructor(operand: Item) {\n    super();\n    this.operand = operand;\n  }\n\n  readonly operand: Item;\n\n  abstract readonly operator: string;\n\n  override isConstant(): boolean {\n    return this.operand.isConstant();\n  }\n\n  override interpolateTo(that: UnaryOperator): Interpolator<UnaryOperator>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof UnaryOperator && this.operator === that.operator) {\n      return UnaryOperatorInterpolator(this, that);\n    } else {\n      return super.interpolateTo(that);\n    }\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport type {Item} from \"../Item\";\nimport {Operator} from \"./Operator\";\nimport type {UnaryOperator} from \"./UnaryOperator\";\n\n/** @internal */\nexport interface UnaryOperatorInterpolator extends Interpolator<UnaryOperator> {\n  /** @internal */\n  readonly operator: string;\n  /** @internal */\n  readonly operandInterpolator: Interpolator<Item>;\n\n  readonly 0: UnaryOperator;\n\n  readonly 1: UnaryOperator;\n\n  equals(that: unknown): boolean;\n}\n\n/** @internal */\nexport const UnaryOperatorInterpolator = (function (_super: typeof Interpolator) {\n  const UnaryOperatorInterpolator = function (y0: UnaryOperator, y1: UnaryOperator): UnaryOperatorInterpolator {\n    const operator = y0.operator;\n    if (operator !== y1.operator) {\n      throw new Error();\n    }\n    const interpolator = function (u: number): UnaryOperator {\n      const operand = interpolator.operandInterpolator(u);\n      return Operator.unary(interpolator.operator, operand);\n    } as UnaryOperatorInterpolator;\n    Object.setPrototypeOf(interpolator, UnaryOperatorInterpolator.prototype);\n    (interpolator as Mutable<typeof interpolator>).operator = operator;\n    (interpolator as Mutable<typeof interpolator>).operandInterpolator = y0.operand.interpolateTo(y1.operand);\n    return interpolator;\n  } as {\n    (y0: UnaryOperator, y1: UnaryOperator): UnaryOperatorInterpolator;\n\n    /** @internal */\n    prototype: UnaryOperatorInterpolator;\n  };\n\n  UnaryOperatorInterpolator.prototype = Object.create(_super.prototype);\n  UnaryOperatorInterpolator.prototype.constructor = UnaryOperatorInterpolator;\n\n  Object.defineProperty(UnaryOperatorInterpolator.prototype, 0, {\n    get(this: UnaryOperatorInterpolator): UnaryOperator {\n      const operand = this.operandInterpolator[0];\n      return Operator.unary(this.operator, operand);\n    },\n    configurable: true,\n  });\n\n  Object.defineProperty(UnaryOperatorInterpolator.prototype, 1, {\n    get(this: UnaryOperatorInterpolator): UnaryOperator {\n      const operand = this.operandInterpolator[1];\n      return Operator.unary(this.operator, operand);\n    },\n    configurable: true,\n  });\n\n  UnaryOperatorInterpolator.prototype.equals = function (that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof UnaryOperatorInterpolator) {\n      return this.operator === that.operator\n          && this.operandInterpolator.equals(that.operandInterpolator);\n    }\n    return false;\n  };\n\n  return UnaryOperatorInterpolator;\n})(Interpolator);\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Interpolator} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Operator} from \"./Operator\";\nimport {ConditionalOperatorInterpolator} from \"../\"; // forward import\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class ConditionalOperator extends Operator {\n  constructor(ifTerm: Item, thenTerm: Item, elseTerm: Item) {\n    super();\n    this.ifTerm = ifTerm.commit();\n    this.thenTerm = thenTerm.commit();\n    this.elseTerm = elseTerm.commit();\n  }\n\n  readonly ifTerm: Item;\n\n  readonly thenTerm: Item;\n\n  readonly elseTerm: Item;\n\n  override isConstant(): boolean {\n    return this.ifTerm.isConstant() && this.thenTerm.isConstant()\n        && this.elseTerm.isConstant();\n  }\n\n  override get precedence(): number {\n    return 2;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    let result;\n    const ifTerm = this.ifTerm.evaluate(interpreter);\n    if (ifTerm.isDefinite()) {\n      const theTerm = this.thenTerm.evaluate(interpreter);\n      result = theTerm;\n    } else {\n      const elseTerm = this.elseTerm.evaluate(interpreter);\n      result = elseTerm;\n    }\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const ifTerm = this.ifTerm.substitute(interpreter);\n    const thenTerm = this.thenTerm.substitute(interpreter);\n    const elseTerm = this.elseTerm.substitute(interpreter);\n    return new ConditionalOperator(ifTerm, thenTerm, elseTerm);\n  }\n\n  override interpolateTo(that: ConditionalOperator): Interpolator<ConditionalOperator>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof ConditionalOperator) {\n      return ConditionalOperatorInterpolator(this, that);\n    } else {\n      return super.interpolateTo(that);\n    }\n  }\n\n  override get typeOrder(): number {\n    return 20;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof ConditionalOperator) {\n      let order = this.ifTerm.compareTo(that.ifTerm);\n      if (order === 0) {\n        order = this.thenTerm.compareTo(that.thenTerm);\n        if (order === 0) {\n          order = this.elseTerm.compareTo(that.elseTerm);\n        }\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof ConditionalOperator) {\n      return this.ifTerm.equivalentTo(that.ifTerm, epsilon)\n          && this.thenTerm.equivalentTo(that.thenTerm, epsilon)\n          && this.elseTerm.equivalentTo(that.elseTerm, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof ConditionalOperator) {\n      return this.ifTerm.equals(that.ifTerm) && this.thenTerm.equals(that.thenTerm)\n          && this.elseTerm.equals(that.elseTerm);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Murmur3.mix(Constructors.hash(ConditionalOperator),\n        this.ifTerm.hashCode()), this.thenTerm.hashCode()), this.elseTerm.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.ifTerm).write(46/*'.'*/).write(\"conditional\").write(40/*'('*/)\n                   .debug(this.thenTerm).write(44/*','*/).write(32/*' '*/)\n                   .debug(this.elseTerm).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): ConditionalOperator {\n    return new ConditionalOperator(this.ifTerm.clone(), this.thenTerm.clone(), this.elseTerm.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport type {Item} from \"../Item\";\nimport {ConditionalOperator} from \"./ConditionalOperator\";\n\n/** @internal */\nexport interface ConditionalOperatorInterpolator extends Interpolator<ConditionalOperator> {\n  /** @internal */\n  readonly ifTermInterpolator: Interpolator<Item>;\n  /** @internal */\n  readonly thenTermInterpolator: Interpolator<Item>;\n  /** @internal */\n  readonly elseTermInterpolator: Interpolator<Item>;\n\n  readonly 0: ConditionalOperator;\n\n  readonly 1: ConditionalOperator;\n\n  equals(that: unknown): boolean;\n}\n\n/** @internal */\nexport const ConditionalOperatorInterpolator = (function (_super: typeof Interpolator) {\n  const ConditionalOperatorInterpolator = function (y0: ConditionalOperator, y1: ConditionalOperator): ConditionalOperatorInterpolator {\n    const interpolator = function (u: number): ConditionalOperator {\n      const ifTerm = interpolator.ifTermInterpolator(u);\n      const thenTerm = interpolator.thenTermInterpolator(u);\n      const elseTerm = interpolator.elseTermInterpolator(u);\n      return new ConditionalOperator(ifTerm, thenTerm, elseTerm);\n    } as ConditionalOperatorInterpolator;\n    Object.setPrototypeOf(interpolator, ConditionalOperatorInterpolator.prototype);\n    (interpolator as Mutable<typeof interpolator>).ifTermInterpolator = y0.ifTerm.interpolateTo(y1.ifTerm);\n    (interpolator as Mutable<typeof interpolator>).thenTermInterpolator = y0.thenTerm.interpolateTo(y1.thenTerm);\n    (interpolator as Mutable<typeof interpolator>).elseTermInterpolator = y0.elseTerm.interpolateTo(y1.elseTerm);\n    return interpolator;\n  } as {\n    (y0: ConditionalOperator, y1: ConditionalOperator): ConditionalOperatorInterpolator;\n\n    /** @internal */\n    prototype: ConditionalOperatorInterpolator;\n  };\n\n  ConditionalOperatorInterpolator.prototype = Object.create(_super.prototype);\n  ConditionalOperatorInterpolator.prototype.constructor = ConditionalOperatorInterpolator;\n\n  Object.defineProperty(ConditionalOperatorInterpolator.prototype, 0, {\n    get(this: ConditionalOperatorInterpolator): ConditionalOperator {\n      const ifTerm = this.ifTermInterpolator[0];\n      const thenTerm = this.thenTermInterpolator[0];\n      const elseTerm = this.elseTermInterpolator[0];\n      return new ConditionalOperator(ifTerm, thenTerm, elseTerm);\n    },\n    configurable: true,\n  });\n\n  Object.defineProperty(ConditionalOperatorInterpolator.prototype, 1, {\n    get(this: ConditionalOperatorInterpolator): ConditionalOperator {\n      const ifTerm = this.ifTermInterpolator[1];\n      const thenTerm = this.thenTermInterpolator[1];\n      const elseTerm = this.elseTermInterpolator[1];\n      return new ConditionalOperator(ifTerm, thenTerm, elseTerm);\n    },\n    configurable: true,\n  });\n\n  ConditionalOperatorInterpolator.prototype.equals = function (that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof ConditionalOperatorInterpolator) {\n      return this.ifTermInterpolator.equals(that.ifTermInterpolator)\n          && this.thenTermInterpolator.equals(that.thenTermInterpolator)\n          && this.elseTermInterpolator.equals(that.elseTermInterpolator);\n    }\n    return false;\n  };\n\n  return ConditionalOperatorInterpolator;\n})(Interpolator);\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/** @public */\nexport class InterpreterException extends Error {\n  constructor(message?: string) {\n    super(message);\n    Object.setPrototypeOf(this, InterpreterException.prototype);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Lazy} from \"@swim/util\";\nimport {Murmur3} from \"@swim/util\";\nimport type {HashCode} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {Debug} from \"@swim/codec\";\nimport {Format} from \"@swim/codec\";\n\n/** @public */\nexport class InterpreterSettings implements Debug, HashCode {\n  constructor(maxScopeDepth: number) {\n    this.maxScopeDepth = maxScopeDepth;\n  }\n\n  readonly maxScopeDepth: number;\n\n  withMaxScopeDepth(maxScopeDepth: number): InterpreterSettings {\n    return this.copy(maxScopeDepth);\n  }\n\n  protected copy(maxScopeDepth: number): InterpreterSettings {\n    return new InterpreterSettings(maxScopeDepth);\n  }\n\n  protected canEqual(that: unknown): boolean {\n    return that instanceof InterpreterSettings;\n  }\n\n  equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof InterpreterSettings) {\n      return that.canEqual(this) && this.maxScopeDepth === that.maxScopeDepth;\n    }\n    return false;\n  }\n\n  hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Constructors.hash(InterpreterSettings),\n        Numbers.hash(this.maxScopeDepth)));\n  }\n\n  debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"new\").write(32/*' '*/).write(\"InterpreterSettings\")\n                   .write(40/*'('*/).debug(this.maxScopeDepth).write(41/*')'*/);\n    return output;\n  }\n\n  toString(): string {\n    return Format.debug(this);\n  }\n\n  @Lazy\n  static standard(): InterpreterSettings {\n    const maxScopeDepth = 1024;\n    return new InterpreterSettings(maxScopeDepth);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {InterpreterException} from \"./InterpreterException\";\nimport {InterpreterSettings} from \"./InterpreterSettings\";\nimport type {ItemLike} from \"../Item\";\nimport {Item} from \"../Item\";\nimport type {Operator} from \"../operator/Operator\";\nimport type {Selector} from \"../selector/Selector\";\n\n/** @public */\nexport type InterpreterLike = Interpreter | ItemLike;\n\n/** @public */\nexport class Interpreter {\n  constructor(settings?: InterpreterSettings, scopeStack?: Item[] | null, scopeDepth?: number) {\n    this.settings = settings !== void 0 ? settings : InterpreterSettings.standard();\n    this.scopeStack = scopeStack !== void 0 ? scopeStack : null;\n    this.scopeDepth = scopeDepth !== void 0 ? scopeDepth : 0;\n  }\n\n  likeType?(like: ItemLike): void;\n\n  readonly settings: InterpreterSettings;\n\n  withSettings(settings: InterpreterSettings): this {\n    (this as Mutable<this>).settings = settings;\n    return this;\n  }\n\n  /** @internal */\n  readonly scopeStack: Item[] | null;\n\n  readonly scopeDepth: number;\n\n  peekScope(): Item {\n    const scopeDepth = this.scopeDepth;\n    if (scopeDepth <= 0) {\n      throw new InterpreterException(\"scope stack empty\");\n    }\n    return this.scopeStack![scopeDepth - 1]!;\n  }\n\n  getScope(index: number): Item {\n    if (index < 0 || index >= this.scopeDepth) {\n      throw new RangeError(\"\" + index);\n    }\n    return this.scopeStack![index]!;\n  }\n\n  pushScope(scope: Item): void {\n    const scopeDepth = this.scopeDepth;\n    if (scopeDepth >= this.settings.maxScopeDepth) {\n      throw new InterpreterException(\"scope stack overflow\");\n    }\n    const oldScopeStack = this.scopeStack;\n    let newScopeStack;\n    if (oldScopeStack === null || scopeDepth + 1 > oldScopeStack.length) {\n      newScopeStack = new Array<Item>(Interpreter.expand(scopeDepth + 1));\n      if (oldScopeStack !== null) {\n        for (let i = 0; i < scopeDepth; i += 1) {\n          newScopeStack[i] = oldScopeStack[i]!;\n        }\n      }\n      (this as Mutable<this>).scopeStack = newScopeStack;\n    } else {\n      newScopeStack = oldScopeStack;\n    }\n    newScopeStack[scopeDepth] = scope;\n    (this as Mutable<this>).scopeDepth += 1;\n  }\n\n  popScope(): Item {\n    const scopeDepth = this.scopeDepth;\n    if (scopeDepth <= 0) {\n      throw new InterpreterException(\"scope stack empty\");\n    }\n    const scopeStack = this.scopeStack!;\n    const scope = scopeStack[scopeDepth - 1]!;\n    scopeStack[scopeDepth - 1] = void 0 as any;\n    (this as Mutable<this>).scopeDepth -= 1;\n    return scope;\n  }\n\n  swapScope(newScope: Item): Item {\n    const scopeDepth = this.scopeDepth;\n    if (scopeDepth <= 0) {\n      throw new InterpreterException(\"scope stack empty\");\n    }\n    const scopeStack = this.scopeStack!;\n    const oldScope = scopeStack[scopeDepth - 1]!;\n    scopeStack[scopeDepth - 1] = newScope;\n    return oldScope;\n  }\n\n  willOperate(operator: Operator): void {\n    // hook\n  }\n\n  didOperate(operator: Operator, result: Item): void {\n    // hook\n  }\n\n  willSelect(selector: Selector): void {\n    // hook\n  }\n\n  didSelect(selector: Selector, result: unknown): void {\n    // hook\n  }\n\n  willTransform(selector: Selector): void {\n    // hook\n  }\n\n  didTransform(selector: Selector, result: Item): void {\n    // hook\n  }\n\n  static of(...objects: ItemLike[]): Interpreter {\n    const n = objects.length;\n    const scopes = new Array(Interpreter.expand(n));\n    for (let i = 0; i < n; i += 1) {\n      const scope = Item.fromLike(objects[i]);\n      scopes[i] = scope;\n    }\n    return new Interpreter(InterpreterSettings.standard(), scopes, n);\n  }\n\n  static fromLike(interpreter: InterpreterLike, globalScope: Item = Item.globalScope()): Interpreter {\n    if (!(interpreter instanceof Interpreter)) {\n      const scope = interpreter;\n      interpreter = new Interpreter();\n      if (globalScope !== void 0) {\n        interpreter.pushScope(globalScope);\n      }\n      if (scope !== void 0) {\n        interpreter.pushScope(Item.fromLike(scope));\n      }\n    }\n    return interpreter;\n  }\n\n  private static expand(n: number): number {\n    n = Math.max(32, n) - 1;\n    n |= n >> 1; n |= n >> 2; n |= n >> 4; n |= n >> 8; n |= n >> 16;\n    return n + 1;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class OrOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"||\";\n  }\n\n  override get precedence(): number {\n    return 3;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    let result: Item;\n    const argument1 = this.operand1.evaluate(interpreter);\n    if (argument1.isDefinite()) {\n      result = argument1;\n    } else {\n      const argument2 = this.operand2.evaluate(interpreter);\n      result = argument2;\n    }\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.or(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 21;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof OrOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof OrOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof OrOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(OrOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"or\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): OrOperator {\n    return new OrOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class AndOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"&&\";\n  }\n\n  override get precedence(): number {\n    return 4;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    let result: Item;\n    const argument1 = this.operand1.evaluate(interpreter);\n    if (argument1.isDefinite()) {\n      const argument2 = this.operand2.evaluate(interpreter);\n      result = argument2;\n    } else {\n      result = argument1;\n    }\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.and(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 22;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof AndOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof AndOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof AndOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(AndOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"and\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): AndOperator {\n    return new AndOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class BitwiseOrOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"|\";\n  }\n\n  override get precedence(): number {\n    return 5;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.bitwiseOr(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.bitwiseOr(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 23;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof BitwiseOrOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof BitwiseOrOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof BitwiseOrOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(BitwiseOrOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"bitwiseOr\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): BitwiseOrOperator {\n    return new BitwiseOrOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class BitwiseXorOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"^\";\n  }\n\n  override get precedence(): number {\n    return 6;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.bitwiseXor(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.bitwiseXor(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 24;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof BitwiseXorOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof BitwiseXorOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof BitwiseXorOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(BitwiseXorOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"bitwiseXor\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): BitwiseXorOperator {\n    return new BitwiseXorOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class BitwiseAndOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"&\";\n  }\n\n  override get precedence(): number {\n    return 7;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.bitwiseAnd(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.bitwiseAnd(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 25;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof BitwiseAndOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof BitwiseAndOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof BitwiseAndOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(BitwiseAndOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"bitwiseAnd\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): BitwiseAndOperator {\n    return new BitwiseAndOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class LtOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"<\";\n  }\n\n  override get precedence(): number {\n    return 0;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.lt(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.lt(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 26;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof LtOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof LtOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof LtOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(LtOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    return output.debug(this.operand1).write(46/*'.'*/).write(\"lt\").write(40/*'('*/)\n                 .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): LtOperator {\n    return new LtOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class LeOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"<=\";\n  }\n\n  override get precedence(): number {\n    return 0;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.le(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.le(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 27;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof LeOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof LeOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof LeOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(LeOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    return output.debug(this.operand1).write(46/*'.'*/).write(\"le\").write(40/*'('*/)\n                 .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): LeOperator {\n    return new LeOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class EqOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"==\";\n  }\n\n  override get precedence(): number {\n    return 0;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.eq(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.eq(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 28;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof EqOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof EqOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof EqOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(EqOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"eq\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): EqOperator {\n    return new EqOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class NeOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"!=\";\n  }\n\n  override get precedence(): number {\n    return 0;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.ne(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.ne(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 29;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof NeOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof NeOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof NeOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(NeOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"ne\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): NeOperator {\n    return new NeOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class GeOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \">=\";\n  }\n\n  override get precedence(): number {\n    return 0;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.ge(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.ge(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 30;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof GeOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GeOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GeOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(GeOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"ge\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): GeOperator {\n    return new GeOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class GtOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \">\";\n  }\n\n  override get precedence(): number {\n    return 0;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.gt(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.gt(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 31;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof GtOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GtOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GtOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(GtOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"gt\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): GtOperator {\n    return new GtOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class PlusOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"+\";\n  }\n\n  override get precedence(): number {\n    return 8;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.plus(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.plus(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 32;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof PlusOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof PlusOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof PlusOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(PlusOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"plus\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): PlusOperator {\n    return new PlusOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class MinusOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"-\";\n  }\n\n  override get precedence(): number {\n    return 8;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.minus(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.minus(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 33;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof MinusOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof MinusOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof MinusOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(MinusOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"minus\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): MinusOperator {\n    return new MinusOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class TimesOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"*\";\n  }\n\n  override get precedence(): number {\n    return 9;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.times(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.times(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 34;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof TimesOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof TimesOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof TimesOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(TimesOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"times\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): TimesOperator {\n    return new TimesOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class DivideOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"/\";\n  }\n\n  override get precedence(): number {\n    return 9;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.divide(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.divide(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 35;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof DivideOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof DivideOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof DivideOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(DivideOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"divide\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): DivideOperator {\n    return new DivideOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {BinaryOperator} from \"./BinaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class ModuloOperator extends BinaryOperator {\n  constructor(operand1: Item, operand2: Item) {\n    super(operand1, operand2);\n  }\n\n  override get operator(): string {\n    return \"%\";\n  }\n\n  override get precedence(): number {\n    return 9;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    interpreter.willOperate(this);\n    const argument1 = this.operand1.evaluate(interpreter);\n    const argument2 = this.operand2.evaluate(interpreter);\n    const result = argument1.modulo(argument2);\n    interpreter.didOperate(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument1 = this.operand1.substitute(interpreter);\n    const argument2 = this.operand2.substitute(interpreter);\n    return argument1.modulo(argument2);\n  }\n\n  override get typeOrder(): number {\n    return 36;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof ModuloOperator) {\n      let order = this.operand1.compareTo(that.operand1);\n      if (order === 0) {\n        order = this.operand2.compareTo(that.operand2);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof ModuloOperator) {\n      return this.operand1.equivalentTo(that.operand1, epsilon)\n          && this.operand2.equivalentTo(that.operand2, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof ModuloOperator) {\n      return this.operand1.equals(that.operand1) && this.operand2.equals(that.operand2);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(ModuloOperator),\n        this.operand1.hashCode()), this.operand2.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand1).write(46/*'.'*/).write(\"modulo\").write(40/*'('*/)\n                   .debug(this.operand2).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): ModuloOperator {\n    return new ModuloOperator(this.operand1.clone(), this.operand2.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {Item} from \"../Item\";\nimport {UnaryOperator} from \"./UnaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class NotOperator extends UnaryOperator {\n  constructor(operand: Item) {\n    super(operand);\n  }\n\n  override get operator(): string {\n    return \"!\";\n  }\n\n  override get precedence(): number {\n    return 10;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument = this.operand.evaluate(interpreter);\n    return argument.not();\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument = this.operand.substitute(interpreter);\n    return argument.not();\n  }\n\n  override get typeOrder(): number {\n    return 37;\n  }\n\n  override compareTo(that: Item): number {\n    return Numbers.compare(this.typeOrder, that.typeOrder);\n  }\n\n  override equivalentTo(that: Item, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof NotOperator) {\n      return this.operand.equivalentTo(that.operand, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof NotOperator) {\n      return this.operand.equals(that.operand);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Constructors.hash(NotOperator), this.operand.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand).write(46/*'.'*/).write(\"not\").write(40/*'('*/).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): NotOperator {\n    return new NotOperator(this.operand.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {UnaryOperator} from \"./UnaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class BitwiseNotOperator extends UnaryOperator {\n  constructor(operand: Item) {\n    super(operand);\n  }\n\n  override get operator(): string {\n    return \"~\";\n  }\n\n  override get precedence(): number {\n    return 10;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument = this.operand.evaluate(interpreter);\n    return argument.bitwiseNot();\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument = this.operand.substitute(interpreter);\n    return argument.bitwiseNot();\n  }\n\n  override get typeOrder(): number {\n    return 38;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof BitwiseNotOperator) {\n      return this.operand.compareTo(that.operand);\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof BitwiseNotOperator) {\n      return this.operand.equivalentTo(that.operand, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof BitwiseNotOperator) {\n      return this.operand.equals(that.operand);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Constructors.hash(BitwiseNotOperator), this.operand.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand).write(46/*'.'*/).write(\"bitwiseNot\").write(40/*'('*/).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): BitwiseNotOperator {\n    return new BitwiseNotOperator(this.operand.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {UnaryOperator} from \"./UnaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class NegativeOperator extends UnaryOperator {\n  constructor(operand: Item) {\n    super(operand);\n  }\n\n  override get operator(): string {\n    return \"-\";\n  }\n\n  override get precedence(): number {\n    return 10;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument = this.operand.evaluate(interpreter);\n    return argument.negative();\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument = this.operand.substitute(interpreter);\n    return argument.negative();\n  }\n\n  override get typeOrder(): number {\n    return 39;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof NegativeOperator) {\n      return this.operand.compareTo(that.operand);\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof NegativeOperator) {\n      return this.operand.equivalentTo(that.operand, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof NegativeOperator) {\n      return this.operand.equals(that.operand);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Constructors.hash(NegativeOperator), this.operand.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand).write(46/*'.'*/).write(\"negative\").write(40/*'('*/).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): NegativeOperator {\n    return new NegativeOperator(this.operand.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {UnaryOperator} from \"./UnaryOperator\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport class PositiveOperator extends UnaryOperator {\n  constructor(operand: Item) {\n    super(operand);\n  }\n\n  override get operator(): string {\n    return \"+\";\n  }\n\n  override get precedence(): number {\n    return 10;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument = this.operand.evaluate(interpreter);\n    return argument.positive();\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const argument = this.operand.substitute(interpreter);\n    return argument.positive();\n  }\n\n  override get typeOrder(): number {\n    return 40;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof PositiveOperator) {\n      return this.operand.compareTo(that.operand);\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof PositiveOperator) {\n      return this.operand.equivalentTo(that.operand, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof PositiveOperator) {\n      return this.operand.equals(that.operand);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Constructors.hash(PositiveOperator), this.operand.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.operand).write(46/*'.'*/).write(\"positive\").write(40/*'('*/).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): PositiveOperator {\n    return new PositiveOperator(this.operand.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Interpolator} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport type {Value} from \"../Value\";\nimport {Operator} from \"./Operator\";\nimport {InvokeOperatorInterpolator} from \"../\"; // forward import\nimport {Func} from \"../\"; // forward import\nimport type {InterpreterLike} from \"../interpreter/Interpreter\"; // forward import\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class InvokeOperator extends Operator {\n  constructor(func: Value, args: Value) {\n    super();\n    this.func = func;\n    this.args = args.commit();\n    this.state = void 0;\n  }\n\n  readonly func: Value;\n\n  readonly args: Value;\n\n  readonly state: unknown;\n\n  setState(state: unknown): void {\n    (this as Mutable<this>).state = state;\n  }\n\n  override isConstant(): boolean {\n    return this.func.isConstant() && this.args.isConstant();\n  }\n\n  override get precedence(): number {\n    return 11;\n  }\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const func = this.func.evaluate(interpreter);\n    if (func instanceof Func) {\n      return func.invoke(this.args, interpreter, this);\n    }\n    return Item.absent();\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const func = this.func.evaluate(interpreter);\n    if (func instanceof Func) {\n      const result = func.expand(this.args, interpreter, this);\n      if (result !== void 0) {\n        return result;\n      }\n    }\n    const args = this.args.substitute(interpreter).toValue();\n    return new InvokeOperator(this.func, args);\n  }\n\n  override interpolateTo(that: InvokeOperator): Interpolator<InvokeOperator>;\n  override interpolateTo(that: Item): Interpolator<Item>;\n  override interpolateTo(that: unknown): Interpolator<Item> | null;\n  override interpolateTo(that: unknown): Interpolator<Item> | null {\n    if (that instanceof InvokeOperator) {\n      return InvokeOperatorInterpolator(this, that);\n    } else {\n      return super.interpolateTo(that);\n    }\n  }\n\n  override get typeOrder(): number {\n    return 41;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof InvokeOperator) {\n      let order = this.func.compareTo(that.func);\n      if (order === 0) {\n        order = this.args.compareTo(that.args);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof InvokeOperator) {\n      return this.func.equals(that.func)\n          && this.args.equivalentTo(that.args, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof InvokeOperator) {\n      return this.func.equals(that.func) && this.args.equals(that.args);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(InvokeOperator),\n        this.func.hashCode()), this.args.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.func).write(46/*'.'*/).write(\"invoke\").write(40/*'('*/)\n                   .debug(this.args).write(41/*')'*/);\n    return output;\n  }\n\n  override clone(): InvokeOperator {\n    return new InvokeOperator(this.func.clone(), this.args.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Mutable} from \"@swim/util\";\nimport {Interpolator} from \"@swim/util\";\nimport type {Item} from \"../Item\";\nimport {InvokeOperator} from \"./InvokeOperator\";\n\n/** @internal */\nexport interface InvokeOperatorInterpolator extends Interpolator<InvokeOperator> {\n  /** @internal */\n  readonly funcInterpolator: Interpolator<Item>;\n  /** @internal */\n  readonly argsInterpolator: Interpolator<Item>;\n\n  readonly 0: InvokeOperator;\n\n  readonly 1: InvokeOperator;\n\n  equals(that: unknown): boolean;\n}\n\n/** @internal */\nexport const InvokeOperatorInterpolator = (function (_super: typeof Interpolator) {\n  const InvokeOperatorInterpolator = function (y0: InvokeOperator, y1: InvokeOperator): InvokeOperatorInterpolator {\n    const interpolator = function (u: number): InvokeOperator {\n      const func = interpolator.funcInterpolator(u);\n      const args = interpolator.argsInterpolator(u);\n      return new InvokeOperator(func, args);\n    } as InvokeOperatorInterpolator;\n    Object.setPrototypeOf(interpolator, InvokeOperatorInterpolator.prototype);\n    (interpolator as Mutable<typeof interpolator>).funcInterpolator = y0.func.interpolateTo(y1.func);\n    (interpolator as Mutable<typeof interpolator>).argsInterpolator = y0.args.interpolateTo(y1.args);\n    return interpolator;\n  } as {\n    (y0: InvokeOperator, y1: InvokeOperator): InvokeOperatorInterpolator;\n\n    /** @internal */\n    prototype: InvokeOperatorInterpolator;\n  };\n\n  InvokeOperatorInterpolator.prototype = Object.create(_super.prototype);\n  InvokeOperatorInterpolator.prototype.constructor = InvokeOperatorInterpolator;\n\n  Object.defineProperty(InvokeOperatorInterpolator.prototype, 0, {\n    get(this: InvokeOperatorInterpolator): InvokeOperator {\n      const func = this.funcInterpolator[0];\n      const args = this.argsInterpolator[0];\n      return new InvokeOperator(func, args);\n    },\n    configurable: true,\n  });\n\n  Object.defineProperty(InvokeOperatorInterpolator.prototype, 1, {\n    get(this: InvokeOperatorInterpolator): InvokeOperator {\n      const func = this.funcInterpolator[1];\n      const args = this.argsInterpolator[1];\n      return new InvokeOperator(func, args);\n    },\n    configurable: true,\n  });\n\n  InvokeOperatorInterpolator.prototype.equals = function (that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof InvokeOperatorInterpolator) {\n      return this.funcInterpolator.equals(that.funcInterpolator)\n          && this.argsInterpolator.equals(that.argsInterpolator);\n    }\n    return false;\n  };\n\n  return InvokeOperatorInterpolator;\n})(Interpolator);\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Lazy} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {ItemLike} from \"../Item\";\nimport {Item} from \"../Item\";\nimport type {ValueLike} from \"../Value\";\nimport {Value} from \"../Value\";\nimport {Record} from \"../Record\";\nimport type {TextLike} from \"../Text\";\nimport {Text} from \"../Text\";\nimport type {NumLike} from \"../Num\";\nimport {Num} from \"../Num\";\nimport {Expression} from \"../Expression\";\nimport type {Operator} from \"../operator/Operator\";\nimport {InvokeOperator} from \"../operator/InvokeOperator\";\nimport {IdentitySelector} from \"../\"; // forward import\nimport {GetSelector} from \"../\"; // forward import\nimport {GetAttrSelector} from \"../\"; // forward import\nimport {GetItemSelector} from \"../\"; // forward import\nimport {KeysSelector} from \"../\"; // forward import\nimport {ValuesSelector} from \"../\"; // forward import\nimport {ChildrenSelector} from \"../\"; // forward import\nimport {DescendantsSelector} from \"../\"; // forward import\nimport {FilterSelector} from \"../\"; // forward import\nimport {LiteralSelector} from \"../\"; // forward import\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport abstract class Selector extends Expression {\n  /** @internal */\n  constructor() {\n    super();\n  }\n\n  override isConstant(): boolean {\n    return false;\n  }\n\n  /**\n   * The `Selector` that this `Selector` uses to match sub-selections.\n   */\n  abstract readonly then: Selector;\n\n  abstract forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  abstract forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n\n  abstract mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  abstract mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n\n  override evaluate(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    let selected = Item.absent();\n    let count = 0;\n    this.forSelected(interpreter, function (interpreter: Interpreter): void {\n      const scope = interpreter.peekScope();\n      if (scope !== void 0) {\n        if (count === 0) {\n          selected = scope;\n        } else {\n          if (count === 1) {\n            const record = Record.create();\n            record.push(selected);\n            selected = record;\n          }\n          (selected as Record).push(scope);\n        }\n        count += 1;\n      }\n    }, this);\n    return selected;\n  }\n\n  abstract override substitute(interpreter: InterpreterLike): Item;\n\n  abstract andThen(then: Selector): Selector;\n\n  override get(key: ValueLike): Selector {\n    key = Value.fromLike(key);\n    return this.andThen(new GetSelector(key, Selector.identity()));\n  }\n\n  override getAttr(key: TextLike): Selector {\n    key = Text.fromLike(key);\n    return this.andThen(new GetAttrSelector(key, Selector.identity()));\n  }\n\n  override getItem(index: NumLike): Selector {\n    index = Num.fromLike(index);\n    return this.andThen(new GetItemSelector(index, Selector.identity()));\n  }\n\n  keys(): Selector {\n    return this.andThen(Selector.keys());\n  }\n\n  values(): Selector {\n    return this.andThen(Selector.values());\n  }\n\n  children(): Selector {\n    return this.andThen(Selector.children());\n  }\n\n  descendants(): Selector {\n    return this.andThen(Selector.descendants());\n  }\n\n  override filter(predicate?: ItemLike): Selector {\n    if (arguments.length === 0) {\n      return new FilterSelector(this, Selector.identity());\n    } else {\n      predicate = Item.fromLike(predicate);\n      return this.andThen(predicate.filter());\n    }\n  }\n\n  override invoke(args: Value): Operator {\n    return new InvokeOperator(this, args);\n  }\n\n  override get precedence(): number {\n    return 11;\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Selector\").write(46/*'.'*/).write(\"identity\").write(40/*'('*/).write(41/*')'*/);\n    output = this.debugThen(output);\n    return output;\n  }\n\n  abstract debugThen<T>(output: Output<T>): Output<T>;\n\n  abstract override clone(): Selector;\n\n  @Lazy\n  static identity(): Selector {\n    return new IdentitySelector();\n  }\n\n  static get(key: ValueLike): Selector {\n    key = Value.fromLike(key);\n    return new GetSelector(key, Selector.identity());\n  }\n\n  static getAttr(key: TextLike): Selector {\n    key = Text.fromLike(key);\n    return new GetAttrSelector(key, Selector.identity());\n  }\n\n  static getItem(index: NumLike): Selector {\n    index = Num.fromLike(index);\n    return new GetItemSelector(index, Selector.identity());\n  }\n\n  @Lazy\n  static keys(): Selector {\n    return new KeysSelector(Selector.identity());\n  }\n\n  @Lazy\n  static values(): Selector {\n    return new ValuesSelector(Selector.identity());\n  }\n\n  @Lazy\n  static children(): Selector {\n    return new ChildrenSelector(Selector.identity());\n  }\n\n  @Lazy\n  static descendants(): Selector {\n    return new DescendantsSelector(Selector.identity());\n  }\n\n  static literal(item: ItemLike): Selector {\n    item = Item.fromLike(item);\n    if (!(item instanceof Selector)) {\n      item = new LiteralSelector(item, Selector.identity());\n    }\n    return item as Selector;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {ItemLike} from \"../Item\";\nimport {Item} from \"../Item\";\nimport type {ValueLike} from \"../Value\";\nimport {Value} from \"../Value\";\nimport type {TextLike} from \"../Text\";\nimport {Text} from \"../Text\";\nimport type {NumLike} from \"../Num\";\nimport {Num} from \"../Num\";\nimport {Selector} from \"./Selector\";\nimport {GetSelector} from \"../\"; // forward import\nimport {GetAttrSelector} from \"../\"; // forward import\nimport {GetItemSelector} from \"../\"; // forward import\nimport {FilterSelector} from \"../\"; // forward import\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class IdentitySelector extends Selector {\n  override get then(): Selector {\n    return this;\n  }\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    interpreter.willSelect(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const oldScope = interpreter.popScope();\n      // Evaluate the current selection.\n      const newScope = oldScope.evaluate(interpreter);\n      // Push the evaluated selection onto the scope stack.\n      interpreter.pushScope(newScope);\n      // Visit the evaluated selection.\n      selected = callback.call(thisArg, interpreter);\n      // Restore the original selection to the top of the scope stack.\n      interpreter.swapScope(oldScope);\n    }\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    return transform.call(thisArg, interpreter);\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    return interpreter.peekScope().substitute(interpreter);\n  }\n\n  override get(key: ValueLike): Selector {\n    key = Value.fromLike(key);\n    return new GetSelector(key, this);\n  }\n\n  override getAttr(key: TextLike): Selector {\n    key = Text.fromLike(key);\n    return new GetAttrSelector(key, this);\n  }\n\n  override getItem(index: NumLike): Selector {\n    index = Num.fromLike(index);\n    return new GetItemSelector(index, this);\n  }\n\n  override andThen(then: Selector): Selector {\n    return then;\n  }\n\n  override keys(): Selector {\n    return Selector.keys();\n  }\n\n  override values(): Selector {\n    return Selector.values();\n  }\n\n  override children(): Selector {\n    return Selector.children();\n  }\n\n  override descendants(): Selector {\n    return Selector.descendants();\n  }\n\n  override filter(predicate?: ItemLike): Selector {\n    if (arguments.length === 0) {\n      return new FilterSelector(this, this);\n    } else {\n      predicate = Item.fromLike(predicate);\n      return predicate.filter();\n    }\n  }\n\n  override get typeOrder(): number {\n    return 10;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown): boolean {\n    return this === that;\n  }\n\n  override equals(that: unknown): boolean {\n    return this === that;\n  }\n\n  override hashCode(): number {\n    return Constructors.hash(IdentitySelector);\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    return output; // blank\n  }\n\n  override clone(): Selector {\n    return this;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Field} from \"../Field\";\nimport type {Value} from \"../Value\";\nimport {Record} from \"../Record\";\nimport {Selector} from \"./Selector\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class GetSelector extends Selector {\n  constructor(key: Value, then: Selector) {\n    super();\n    this.item = key.commit();\n    this.then = then;\n  }\n\n  readonly item: Value;\n\n  override readonly then: Selector;\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    interpreter.willSelect(this);\n    // Evaluate the key, in case it's dynamic.\n    const key = this.item.evaluate(interpreter).toValue();\n    const selected = GetSelector.forSelected(key, this.then, interpreter, callback, thisArg);\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  /** @internal */\n  static forSelected<T, S>(key: Value, then: Selector, interpreter: Interpreter,\n                           callback: (this: S | undefined, interpreter: Interpreter) => T,\n                           thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the next selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      let field: Field | undefined;\n      // Only records can have members.\n      if (scope instanceof Record) {\n        field = scope.getField(key);\n        if (field !== void 0) {\n          // Push the field value onto the scope stack.\n          interpreter.pushScope(field.toValue());\n          // Subselect the field value.\n          selected = then.forSelected(interpreter, callback, thisArg);\n          // Pop the field value off of the scope stack.\n          interpreter.popScope();\n        }\n      }\n      if (field === void 0 && selected === void 0) {\n        selected = GetSelector.forSelected(key, then, interpreter, callback, thisArg);\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n    }\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    let result: Item;\n    interpreter.willTransform(this);\n    // Evaluate the key, if it's dynamic.\n    const key = this.item.evaluate(interpreter).toValue();\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      // Only records can have members.\n      if (scope instanceof Record) {\n        const oldField = scope.getField(key);\n        if (oldField !== void 0) {\n          // Push the field value onto the scope stack.\n          interpreter.pushScope(oldField.toValue());\n          // Transform the field value.\n          const newItem = this.then.mapSelected(interpreter, transform, thisArg);\n          // Pop the field value off the scope stack.\n          interpreter.popScope();\n          if (newItem instanceof Field) {\n            // Replace the original field with the transformed field.\n            if (key.equals(newItem.key)) {\n              scope.set(key, newItem.toValue());\n            } else {\n              scope.delete(key);\n              scope.push(newItem);\n            }\n          } else if (newItem.isDefined()) {\n            // Update the field with the transformed value.\n            scope.set(key, newItem.toValue());\n          } else {\n            // Remove the field.\n            scope.delete(key);\n          }\n        }\n      }\n      // Push the transformed selection back onto the stack.\n      interpreter.pushScope(scope);\n      result = scope;\n    } else {\n      result = Item.absent();\n    }\n    interpreter.didTransform(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    // Evaluate the key, in case it's dynamic.\n    const key = this.item.evaluate(interpreter).toValue();\n    const value = GetSelector.substitute(key, this.then, interpreter);\n    if (value !== void 0) {\n      return value;\n    }\n    let then = this.then.substitute(interpreter);\n    if (!(then instanceof Selector)) {\n      then = this.then;\n    }\n    return new GetSelector(this.item, then as Selector);\n  }\n\n  /** @internal */\n  static substitute(key: Value, then: Selector, interpreter: Interpreter): Item | undefined {\n    let selected: Item | undefined;\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the next selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      let field: Field | undefined;\n      // Only records can have members.\n      if (scope instanceof Record) {\n        field = scope.getField(key);\n        if (field !== void 0) {\n          // Substitute the field value.\n          selected = field.toValue().substitute(interpreter);\n        }\n      }\n      if (field === void 0 && selected === void 0) {\n        selected = GetSelector.substitute(key, then, interpreter);\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n    }\n    return selected;\n  }\n\n  override andThen(then: Selector): Selector {\n    return new GetSelector(this.item, this.then.andThen(then));\n  }\n\n  override get typeOrder(): number {\n    return 12;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof GetSelector) {\n      let order = this.item.compareTo(that.item);\n      if (order === 0) {\n        order = this.then.compareTo(that.then);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GetSelector) {\n      return this.item.equals(that.item) && this.then.equivalentTo(that.then, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GetSelector) {\n      return this.item.equals(that.item) && this.then.equals(that.then);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(GetSelector),\n        this.item.hashCode()), this.then.hashCode()));\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    output = output.write(46/*'.'*/).write(\"get\").write(40/*'('*/).debug(this.item).write(41/*')'*/);\n    output = this.then.debugThen(output);\n    return output;\n  }\n\n  override clone(): Selector {\n    return new GetSelector(this.item.clone(), this.then.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Field} from \"../Field\";\nimport {Attr} from \"../Attr\";\nimport {Record} from \"../Record\";\nimport type {Text} from \"../Text\";\nimport {Selector} from \"./Selector\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class GetAttrSelector extends Selector {\n  constructor(key: Text, then: Selector) {\n    super();\n    this.item = key;\n    this.then = then;\n  }\n\n  readonly item: Text;\n\n  override readonly then: Selector;\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    interpreter.willSelect(this);\n    const key = this.item;\n    const selected = GetAttrSelector.forSelected(key, this.then, interpreter, callback);\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  /** @internal */\n  static forSelected<T, S>(key: Text, then: Selector, interpreter: Interpreter,\n                           callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                           thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the next selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      let field: Field | undefined;\n      // Only records can have members.\n      if (scope instanceof Record) {\n        field = scope.getField(key);\n        if (field instanceof Attr) {\n          // Push the field value onto the scope stack.\n          interpreter.pushScope(field.toValue());\n          // Subselect the field value.\n          selected = then.forSelected(interpreter, callback, thisArg);\n          // Pop the field value off of the scope stack.\n          interpreter.popScope();\n        }\n      }\n      if (field === void 0 && selected === void 0) {\n        selected = GetAttrSelector.forSelected(key, then, interpreter, callback, thisArg);\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n    }\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    let result: Item;\n    interpreter.willTransform(this);\n    const key = this.item;\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      // Only records can have members.\n      if (scope instanceof Record) {\n        const oldField = scope.getField(key);\n        if (oldField instanceof Attr) {\n          // Push the field value onto the scope stack.\n          interpreter.pushScope(oldField.toValue());\n          // Transform the field value.\n          const newItem = this.then.mapSelected(interpreter, transform, thisArg);\n          // Pop the field value off the scope stack.\n          interpreter.popScope();\n          if (newItem instanceof Field) {\n            // Replace the original field with the transformed field.\n            if (key.equals(newItem.key)) {\n              scope.setAttr(key, newItem.toValue());\n            } else {\n              scope.delete(key);\n              scope.push(newItem);\n            }\n          } else if (newItem.isDefined()) {\n            // Update the field with the transformed value.\n            scope.setAttr(key, newItem.toValue());\n          } else {\n            // Remove the field.\n            scope.delete(key);\n          }\n        }\n      }\n      // Push the transformed selection back onto the stack.\n      interpreter.pushScope(scope);\n      result = scope;\n    } else {\n      result = Item.absent();\n    }\n    interpreter.didTransform(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const key = this.item;\n    const value = GetAttrSelector.substitute(key, this.then, interpreter);\n    if (value !== void 0) {\n      return value;\n    }\n    let then = this.then.substitute(interpreter);\n    if (!(then instanceof Selector)) {\n      then = this.then;\n    }\n    return new GetAttrSelector(this.item, then as Selector);\n  }\n\n  /** @internal */\n  static substitute(key: Text, then: Selector, interpreter: Interpreter): Item | undefined {\n    let selected: Item | undefined;\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the next selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      let field: Field | undefined;\n      // Only records can have members.\n      if (scope instanceof Record) {\n        field = scope.getField(key);\n        if (field instanceof Attr) {\n          // Substitute the field value.\n          selected = field.toValue().substitute(interpreter);\n        }\n      }\n      if (field === void 0 && selected === void 0) {\n        selected = GetAttrSelector.substitute(key, then, interpreter);\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n    }\n    return selected;\n  }\n\n  override andThen(then: Selector): Selector {\n    return new GetAttrSelector(this.item, this.then.andThen(then));\n  }\n\n  override get typeOrder(): number {\n    return 13;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof GetAttrSelector) {\n      let order = this.item.compareTo(that.item);\n      if (order === 0) {\n        order = this.then.compareTo(that.then);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GetAttrSelector) {\n      return this.item.equals(that.item) && this.then.equivalentTo(that.then, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GetAttrSelector) {\n      return this.item.equals(that.item) && this.then.equals(that.then);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(GetAttrSelector),\n        this.item.hashCode()), this.then.hashCode()));\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    output = output.write(46/*'.'*/).write(\"getAttr\").write(40/*'('*/)\n                   .debug(this.item).write(41/*')'*/);\n    output = this.then.debugThen(output);\n    return output;\n  }\n\n  override clone(): Selector {\n    return new GetAttrSelector(this.item.clone(), this.then.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Record} from \"../Record\";\nimport type {Num} from \"../Num\";\nimport {Selector} from \"./Selector\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class GetItemSelector extends Selector {\n  constructor(index: Num, then: Selector) {\n    super();\n    this.item = index;\n    this.then = then;\n  }\n\n  readonly item: Num;\n\n  override readonly then: Selector;\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    interpreter.willSelect(this);\n    const index = this.item.numberValue();\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      if (scope instanceof Record && index < scope.length) {\n        const item = scope.getItem(index);\n        // Push the item onto the scope stack.\n        interpreter.pushScope(item);\n        // Subselect the item.\n        selected = this.then.forSelected(interpreter, callback, thisArg);\n        // Pop the item off of the scope stack.\n        interpreter.popScope();\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n    }\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    let result: Item;\n    interpreter.willTransform(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      const index = this.item.numberValue();\n      if (scope instanceof Record && index < scope.length) {\n        const oldItem = scope.getItem(index);\n        // Push the item onto the scope stack.\n        interpreter.pushScope(oldItem);\n        // Transform the item.\n        const newItem = this.then.mapSelected(interpreter, transform, thisArg);\n        // Pop the item off the scope stack.\n        interpreter.popScope();\n        if (newItem.isDefined()) {\n          scope.setItem(index, newItem);\n        } else {\n          scope.splice(index, 1);\n        }\n      }\n      // Push the transformed selection back onto the stack.\n      interpreter.pushScope(scope);\n      result = scope;\n    } else {\n      result = Item.absent();\n    }\n    interpreter.didTransform(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const index = this.item.numberValue();\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      let selected: Item | undefined;\n      if (scope instanceof Record && index < scope.length) {\n        const item = scope.getItem(index);\n        // Substitute the item.\n        selected = item.substitute(interpreter);\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n      if (selected !== void 0) {\n        return selected;\n      }\n    }\n    let then = this.then.substitute(interpreter);\n    if (!(then instanceof Selector)) {\n      then = this.then;\n    }\n    return new GetItemSelector(this.item, then as Selector);\n  }\n\n  override andThen(then: Selector): Selector {\n    return new GetItemSelector(this.item, this.then.andThen(then));\n  }\n\n  override get typeOrder(): number {\n    return 14;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof GetItemSelector) {\n      let order = this.item.compareTo(that.item);\n      if (order === 0) {\n        order = this.then.compareTo(that.then);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GetItemSelector) {\n      return this.item.equals(that.item) && this.then.equivalentTo(that.then, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof GetItemSelector) {\n      return this.item.equals(that.item) && this.then.equals(that.then);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(GetItemSelector),\n        this.item.hashCode()), this.then.hashCode()));\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    output = output.write(46/*'.'*/).write(\"getItem\").write(40/*'('*/)\n                   .debug(this.item).write(41/*')'*/);\n    output = this.then.debugThen(output);\n    return output;\n  }\n\n  override clone(): Selector {\n    return new GetItemSelector(this.item, this.then.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Field} from \"../Field\";\nimport {Attr} from \"../Attr\";\nimport {Slot} from \"../Slot\";\nimport {Record} from \"../Record\";\nimport {Text} from \"../Text\";\nimport {Selector} from \"./Selector\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class KeysSelector extends Selector {\n  constructor(then: Selector) {\n    super();\n    this.then = then;\n  }\n\n  override readonly then: Selector;\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    interpreter.willSelect(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope();\n      if (scope instanceof Record) {\n        const children = scope.iterator();\n        // For each child, while none have been selected:\n        while (selected === void 0 && children.hasNext()) {\n          const child = children.next().value!;\n          // Only fields can have keys.\n          if (child instanceof Field) {\n            // Push the child key onto the scope stack.\n            interpreter.pushScope(child.key);\n            // Subselect the child key.\n            selected = this.then.forSelected(interpreter, callback, thisArg);\n            // Pop the child key off of the scope stack.\n            interpreter.popScope();\n          }\n        }\n      } else if (scope instanceof Field) {\n        // Push the key onto the scope stack.\n        interpreter.pushScope(scope.key);\n        // Subselect the key.\n        selected = this.then.forSelected(interpreter, callback, thisArg);\n        // Pop the key off of the scope stack.\n        interpreter.popScope();\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n    }\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    let result: Item;\n    interpreter.willTransform(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      let scope = interpreter.popScope();\n      if (scope instanceof Record) {\n        const children = scope.iterator();\n        while (children.hasNext()) {\n          const child = children.next().value!;\n          if (child instanceof Field) {\n            const oldKey = child.key;\n            // Push the key onto the scope stack.\n            interpreter.pushScope(oldKey);\n            // Subselect the key.\n            const newKey = this.then.mapSelected(interpreter, transform, thisArg).toValue();\n            // Pop the key off of the scope stack.\n            interpreter.popScope();\n            if (newKey.isDefined()) {\n              if (oldKey !== newKey) {\n                if (scope instanceof Attr && newKey instanceof Text) {\n                  children.set(Attr.of(newKey, scope.toValue()));\n                } else {\n                  children.set(Slot.of(newKey, scope.toValue()));\n                }\n              }\n            } else {\n              children.delete();\n            }\n          }\n        }\n      } else if (scope instanceof Field) {\n        const oldKey = scope.key;\n        // Push the key onto the scope stack.\n        interpreter.pushScope(oldKey);\n        // Subselect the key.\n        const newKey = this.then.mapSelected(interpreter, transform, thisArg).toValue();\n        // Pop the key off of the scope stack.\n        interpreter.popScope();\n        if (newKey.isDefined()) {\n          if (oldKey !== newKey) {\n            if (scope instanceof Attr && newKey instanceof Text) {\n              scope = Attr.of(newKey, scope.toValue());\n            } else {\n              scope = Slot.of(newKey, scope.toValue());\n            }\n          }\n        } else {\n          scope = Item.absent();\n        }\n      }\n      // Push the transformed selection back onto the stack.\n      interpreter.pushScope(scope);\n      result = scope;\n    } else {\n      result = Item.absent();\n    }\n    interpreter.didTransform(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    let then = this.then.substitute(interpreter);\n    if (!(then instanceof Selector)) {\n      then = this.then;\n    }\n    return new KeysSelector(then as Selector);\n  }\n\n  override andThen(then: Selector): Selector {\n    return new KeysSelector(this.then.andThen(then));\n  }\n\n  override get typeOrder(): number {\n    return 15;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof KeysSelector) {\n      return this.then.compareTo(that.then);\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof KeysSelector) {\n      return this.then.equivalentTo(that.then, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof KeysSelector) {\n      return this.then.equals(that.then);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Constructors.hash(KeysSelector), this.then.hashCode()));\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    output = output.write(46/*'.'*/).write(\"keys\").write(40/*'('*/).write(41/*')'*/);\n    output = this.then.debugThen(output);\n    return output;\n  }\n\n  override clone(): Selector {\n    return new KeysSelector(this.then.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Field} from \"../Field\";\nimport {Record} from \"../Record\";\nimport {Selector} from \"./Selector\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class ValuesSelector extends Selector {\n  constructor(then: Selector) {\n    super();\n    this.then = then;\n  }\n\n  override readonly then: Selector;\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    interpreter.willSelect(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope();\n      if (scope instanceof Record) {\n        const children = scope.iterator();\n        // For each child, while none have been selected:\n        while (selected === void 0 && children.hasNext()) {\n          const child = children.next().value!;\n          // Push the child value onto the scope stack.\n          interpreter.pushScope(child.toValue());\n          // Subselect the child value.\n          selected = this.then.forSelected(interpreter, callback, thisArg);\n          // Pop the child value off of the scope stack.\n          interpreter.popScope();\n        }\n      } else {\n        // Push the value onto the scope stack.\n        interpreter.pushScope(scope.toValue());\n        // Subselect the value.\n        selected = this.then.forSelected(interpreter, callback, thisArg);\n        // Pop the value off of the scope stack.\n        interpreter.popScope();\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n    }\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    let result: Item;\n    interpreter.willTransform(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      let scope = interpreter.popScope();\n      if (scope instanceof Record) {\n        const children = scope.iterator();\n        while (children.hasNext()) {\n          const child = children.next().value!;\n          if (child instanceof Field) {\n            const oldValue = child.toValue();\n            // Push the child value onto the scope stack.\n            interpreter.pushScope(oldValue);\n            // Transform the child value.\n            const newItem = this.then.mapSelected(interpreter, transform, thisArg);\n            // Pop the child value off of the scope stack.\n            interpreter.popScope();\n            if (newItem.isDefined()) {\n              if (newItem instanceof Field) {\n                children.set(newItem);\n              } else if (newItem !== oldValue) {\n                children.set(child.updatedValue(newItem.toValue()));\n              }\n            } else {\n              children.delete();\n            }\n          } else {\n            // Push the child onto the scope stack.\n            interpreter.pushScope(child.toValue());\n            // Transform the child.\n            const newItem = this.then.mapSelected(interpreter, transform, thisArg);\n            // Pop the child off of the scope stack.\n            interpreter.popScope();\n            if (newItem.isDefined()) {\n              if (child !== newItem) {\n                children.set(newItem);\n              }\n            } else {\n              children.delete();\n            }\n          }\n        }\n      } else if (scope instanceof Field) {\n        const oldValue = scope.toValue();\n        // Push the field value onto the scope stack.\n        interpreter.pushScope(oldValue);\n        // Transform the field value.\n        const newItem = this.then.mapSelected(interpreter, transform, thisArg);\n        // Pop the field value off of the scope stack.\n        interpreter.popScope();\n        if (newItem.isDefined()) {\n          if (newItem instanceof Field) {\n            scope = newItem;\n          } else if (newItem !== oldValue) {\n            scope = scope.updatedValue(newItem.toValue());\n          }\n        } else {\n          scope = Item.absent();\n        }\n      } else {\n        // Push the value onto the scope stack.\n        interpreter.pushScope(scope);\n        // Transform the value.\n        scope = this.then.mapSelected(interpreter, transform, thisArg);\n        // Pop the value off of the scope stack.\n        interpreter.popScope();\n      }\n      // Push the transformed selection back onto the stack.\n      interpreter.pushScope(scope);\n      result = scope;\n    } else {\n      result = Item.absent();\n    }\n    interpreter.didTransform(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    let then = this.then.substitute(interpreter);\n    if (!(then instanceof Selector)) {\n      then = this.then;\n    }\n    return new ValuesSelector(then as Selector);\n  }\n\n  override andThen(then: Selector): Selector {\n    return new ValuesSelector(this.then.andThen(then));\n  }\n\n  override get typeOrder(): number {\n    return 16;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof ValuesSelector) {\n      return this.then.compareTo(that.then);\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof ValuesSelector) {\n      return this.then.equivalentTo(that.then, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof ValuesSelector) {\n      return this.then.equals(that.then);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Constructors.hash(ValuesSelector), this.then.hashCode()));\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    output = output.write(46/*'.'*/).write(\"values\").write(40/*'('*/).write(41/*')'*/);\n    output = this.then.debugThen(output);\n    return output;\n  }\n\n  override clone(): Selector {\n    return new ValuesSelector(this.then.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Record} from \"../Record\";\nimport {Selector} from \"./Selector\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class ChildrenSelector extends Selector {\n  constructor(then: Selector) {\n    super();\n    this.then = then;\n  }\n\n  override readonly then: Selector;\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    interpreter.willSelect(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      // Only records can have children.\n      if (scope instanceof Record) {\n        const children = scope.iterator();\n        // For each child, while none have been selected:\n        while (selected === void 0 && children.hasNext()) {\n          const child = children.next().value!;\n          // Push the child onto the scope stack.\n          interpreter.pushScope(child);\n          // Subselect the child.\n          selected = this.then.forSelected(interpreter, callback, thisArg);\n          // Pop the child off of the scope stack.\n          interpreter.popScope();\n        }\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n    }\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    let result: Item;\n    interpreter.willTransform(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      // Only records can have children.\n      if (scope instanceof Record) {\n        const children = scope.iterator();\n        // For each child:\n        while (children.hasNext()) {\n          const oldChild = children.next().value!;\n          // Push the child onto the scope stack.\n          interpreter.pushScope(oldChild);\n          // Transform the child.\n          const newChild = this.then.mapSelected(interpreter, transform);\n          // Pop the child off the scope stack.\n          interpreter.popScope();\n          if (newChild.isDefined()) {\n            // Update the child, if its identity changed.\n            if (newChild !== oldChild) {\n              children.set(newChild);\n            }\n          } else {\n            // Remove the child, if it transformed to Absent.\n            children.delete();\n          }\n        }\n      }\n      // Push the transformed selection back onto the stack.\n      interpreter.pushScope(scope);\n      result = scope;\n    } else {\n      result = Item.absent();\n    }\n    interpreter.didTransform(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    let then = this.then.substitute(interpreter);\n    if (!(then instanceof Selector)) {\n      then = this.then;\n    }\n    return new ChildrenSelector(then as Selector);\n  }\n\n  override andThen(then: Selector): Selector {\n    return new ChildrenSelector(this.then.andThen(then));\n  }\n\n  override get typeOrder(): number {\n    return 17;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof ChildrenSelector) {\n      return this.then.compareTo(that.then);\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof ChildrenSelector) {\n      return this.then.equivalentTo(that.then, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof ChildrenSelector) {\n      return this.then.equals(that.then);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Constructors.hash(ChildrenSelector), this.then.hashCode()));\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    output = output.write(46/*'.'*/).write(\"children\").write(40/*'('*/).write(41/*')'*/);\n    output = this.then.debugThen(output);\n    return output;\n  }\n\n  override clone(): Selector {\n    return new ChildrenSelector(this.then.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Record} from \"../Record\";\nimport {Selector} from \"./Selector\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class DescendantsSelector extends Selector {\n  constructor(then: Selector) {\n    super();\n    this.then = then;\n  }\n\n  override readonly then: Selector;\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    interpreter.willSelect(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      // Only records can have descendants.\n      if (scope instanceof Record) {\n        const children = scope.iterator();\n        // For each child, while none have selected a result:\n        while (selected === void 0 && children.hasNext()) {\n          const child = children.next().value!;\n          // Push the child onto the scope stack.\n          interpreter.pushScope(child);\n          // Subselect the child.\n          selected = this.then.forSelected(interpreter, callback, thisArg);\n          // If the child was not selected:\n          if (selected === void 0) {\n            // Recursively select the child's children.\n            this.forSelected(interpreter, callback, thisArg);\n          }\n          // Pop the child off of the scope stack.\n          interpreter.popScope();\n        }\n      }\n      // Push the current selection back onto the stack.\n      interpreter.pushScope(scope);\n    }\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    let result: Item;\n    interpreter.willTransform(this);\n    if (interpreter.scopeDepth !== 0) {\n      // Pop the current selection off of the stack to take it out of scope.\n      const scope = interpreter.popScope().toValue();\n      // Only records can have descendants.\n      if (scope instanceof Record) {\n        const children = scope.iterator();\n        // For each child:\n        while (children.hasNext()) {\n          const oldChild = children.next().value!;\n          // Push the child onto the scope stack.\n          interpreter.pushScope(oldChild);\n          // Transform the child.\n          let newChild = this.then.mapSelected(interpreter, transform, thisArg);\n          // If the child was not removed:\n          if (newChild.isDefined()) {\n            // Recursively transform the child's children.\n            newChild = this.mapSelected(interpreter, transform, thisArg);\n          }\n          // Pop the child off the scope stack.\n          interpreter.popScope();\n          if (newChild.isDefined()) {\n            // Update the child, if its identity changed.\n            if (newChild !== oldChild) {\n              children.set(newChild);\n            }\n          } else {\n            // Remove the child, if it transformed to Absent.\n            children.delete();\n          }\n        }\n      }\n      // Push the transformed selection back onto the stack.\n      interpreter.pushScope(scope);\n      result = scope;\n    } else {\n      result = Item.absent();\n    }\n    interpreter.didTransform(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    let then = this.then.substitute(interpreter);\n    if (!(then instanceof Selector)) {\n      then = this.then;\n    }\n    return new DescendantsSelector(then as Selector);\n  }\n\n  override andThen(then: Selector): Selector {\n    return new DescendantsSelector(this.then.andThen(then));\n  }\n\n  override get typeOrder(): number {\n    return 18;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof DescendantsSelector) {\n      return this.then.compareTo(that.then);\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof DescendantsSelector) {\n      return this.then.equivalentTo(that.then, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof DescendantsSelector) {\n      return this.then.equals(that.then);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Constructors.hash(DescendantsSelector), this.then.hashCode()));\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    output = output.write(46/*'.'*/).write(\"descendants\").write(40/*'('*/).write(41/*')'*/);\n    output = this.then.debugThen(output);\n    return output;\n  }\n\n  override clone(): Selector {\n    return new DescendantsSelector(this.then.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport type {ItemLike} from \"../Item\";\nimport {Item} from \"../Item\";\nimport {Selector} from \"./Selector\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class FilterSelector extends Selector {\n  constructor(predicate: Selector, then: Selector) {\n    super();\n    this.predicate = predicate;\n    this.then = then;\n  }\n\n  readonly predicate: Selector;\n\n  override readonly then: Selector;\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    interpreter.willSelect(this);\n    if (interpreter.scopeDepth !== 0) {\n      // If the filter matches the selection scope:\n      if (this.filterSelected(interpreter)) {\n        // Then subselect the selection scope.\n        selected = this.then.forSelected(interpreter, callback, thisArg);\n      }\n    }\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    let result: Item;\n    interpreter.willTransform(this);\n    if (interpreter.scopeDepth !== 0) {\n      // If the filter matches the selection scope:\n      if (this.filterSelected(interpreter)) {\n        // Then transform the selection scope.\n        result = this.then.mapSelected(interpreter, transform, thisArg);\n      } else {\n        result = interpreter.peekScope().toValue();\n      }\n    } else {\n      result = Item.absent();\n    }\n    interpreter.didTransform(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    let predicate = this.predicate.substitute(interpreter);\n    if (!(predicate instanceof Selector)) {\n      predicate = this.predicate;\n    }\n    let then = this.then.substitute(interpreter);\n    if (!(then instanceof Selector)) {\n      then = this.then;\n    }\n    return new FilterSelector(predicate as Selector, then as Selector);\n  }\n\n  protected filterSelected(interpreter: Interpreter): boolean {\n    return this.predicate.forSelected(interpreter, this.selected, this) !== void 0;\n  }\n\n  protected selected(interpreter: Interpreter): null {\n    return null;\n  }\n\n  override andThen(then: Selector): Selector {\n    return new FilterSelector(this.predicate, this.then.andThen(then));\n  }\n\n  override filter(predicate?: ItemLike): Selector {\n    if (arguments.length === 0) {\n      return this;\n    } else {\n      predicate = Item.fromLike(predicate);\n      return this.andThen(predicate.filter());\n    }\n  }\n\n  override get typeOrder(): number {\n    return 19;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof FilterSelector) {\n      let order = this.predicate.compareTo(that.predicate);\n      if (order === 0) {\n        order = this.then.compareTo(that.then);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof FilterSelector) {\n      return this.predicate.equivalentTo(that.predicate, epsilon)\n          && this.then.equivalentTo(that.then, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof FilterSelector) {\n      return this.predicate.equals(that.predicate) && this.then.equals(that.then);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(FilterSelector),\n        this.predicate.hashCode()), this.then.hashCode()));\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    output = output.write(46/*'.'*/).write(\"filter\").write(40/*'('*/)\n                   .debug(this.predicate).write(41/*')'*/);\n    output = this.then.debugThen(output);\n    return output;\n  }\n\n  override clone(): Selector {\n    return new FilterSelector(this.predicate.clone(), this.then.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Selector} from \"./Selector\";\nimport type {InterpreterLike} from \"../interpreter/Interpreter\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class LiteralSelector extends Selector {\n  constructor(item: Item, then: Selector) {\n    super();\n    this.item = item.commit();\n    this.then = then;\n  }\n\n  readonly item: Item;\n\n  override readonly then: Selector;\n\n  override forSelected<T>(interpreter: Interpreter,\n                          callback: (interpreter: Interpreter) => T | undefined): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S, interpreter: Interpreter) => T | undefined,\n                             thisArg: S): T | undefined;\n  override forSelected<T, S>(interpreter: Interpreter,\n                             callback: (this: S | undefined, interpreter: Interpreter) => T | undefined,\n                             thisArg?: S): T | undefined {\n    let selected: T | undefined;\n    interpreter.willSelect(this);\n    if (interpreter.scopeDepth !== 0) {\n      const literal = this.item.evaluate(interpreter);\n      if (literal.isDefined()) {\n        // Push the literal onto the scope stack.\n        interpreter.pushScope(literal);\n        // Subselect the literal.\n        selected = this.then.forSelected(interpreter, callback, thisArg);\n        // Pop the literal off of the scope stack.\n        interpreter.popScope();\n      }\n    }\n    interpreter.didSelect(this, selected);\n    return selected;\n  }\n\n  override mapSelected(interpreter: Interpreter,\n                       transform: (interpreter: Interpreter) => Item): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S, interpreter: Interpreter) => Item,\n                          thisArg: S): Item;\n  override mapSelected<S>(interpreter: Interpreter,\n                          transform: (this: S | undefined, interpreter: Interpreter) => Item,\n                          thisArg?: S): Item {\n    let result: Item;\n    interpreter.willTransform(this);\n    if (interpreter.scopeDepth !== 0) {\n      let literal = this.item.evaluate(interpreter);\n      if (literal.isDefined()) {\n        // Push the literal onto the scope stack.\n        interpreter.pushScope(literal);\n        // Transform the literal.\n        literal = this.then.mapSelected(interpreter, transform, thisArg);\n        // Pop the literal off of the scope stack.\n        interpreter.popScope();\n      }\n      result = literal;\n    } else {\n      result = Item.absent();\n    }\n    interpreter.didTransform(this, result);\n    return result;\n  }\n\n  override substitute(interpreter: InterpreterLike): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const item = this.item.substitute(interpreter);\n    let then = this.then.substitute(interpreter);\n    if (!(then instanceof Selector)) {\n      then = this.then;\n    }\n    return new LiteralSelector(item, then as Selector);\n  }\n\n  override andThen(then: Selector): Selector {\n    return new LiteralSelector(this.item, this.then.andThen(then));\n  }\n\n  override get precedence(): number {\n    return this.item.precedence;\n  }\n\n  override get typeOrder(): number {\n    return 11;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof LiteralSelector) {\n      let order = this.item.compareTo(that.item);\n      if (order === 0) {\n        order = this.then.compareTo(that.then);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof LiteralSelector) {\n      return this.item.equivalentTo(that.item, epsilon)\n          && this.then.equivalentTo(that.then, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof LiteralSelector) {\n      return this.item.equals(that.item) && this.then.equals(that.then);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(LiteralSelector),\n        this.item.hashCode()), this.then.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(\"Selector\").write(46/*'.'*/).write(\"literal\").write(40/*'('*/)\n                   .debug(this.item).write(41/*')'*/);\n    output = this.then.debugThen(output);\n    return output;\n  }\n\n  override debugThen<T>(output: Output<T>): Output<T> {\n    return output; // blank\n  }\n\n  override clone(): Selector {\n    return new LiteralSelector(this.item.clone(), this.then.clone());\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Item} from \"../Item\";\nimport type {Value} from \"../Value\";\nimport {Expression} from \"../Expression\";\nimport type {InvokeOperator} from \"../operator/InvokeOperator\";\nimport type {Interpreter} from \"../interpreter/Interpreter\";\n\n/** @public */\nexport abstract class Func extends Expression {\n  /** @internal */\n  constructor() {\n    super();\n  }\n\n  override isConstant(): boolean {\n    return false;\n  }\n\n  abstract override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item;\n\n  expand(args: Value, interpreter: Interpreter, operator: InvokeOperator): Item | undefined {\n    return void 0;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Murmur3} from \"@swim/util\";\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Slot} from \"../Slot\";\nimport {Value} from \"../Value\";\nimport {Record} from \"../Record\";\nimport {Text} from \"../Text\";\nimport type {InvokeOperator} from \"../operator/InvokeOperator\";\nimport {Func} from \"./Func\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport class LambdaFunc extends Func {\n  constructor(bindings: Value, template: Value) {\n    super();\n    this.bindings = bindings;\n    this.template = template;\n  }\n\n  readonly bindings: Value;\n\n  readonly template: Value;\n\n  override get precedence(): number {\n    return 1;\n  }\n\n  override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n    interpreter = Interpreter.fromLike(interpreter);\n    const bindings = this.bindings;\n    const arity = Math.max(1, bindings.length);\n    const params = Record.create(arity);\n    let i = 0;\n    let j = 0;\n    while (i < arity) {\n      const binding = bindings instanceof Record ? bindings.getItem(i) : i === 0 ? bindings : Item.absent();\n      const arg = args instanceof Record ? args.getItem(j).toValue() : j === 0 ? args : Value.absent();\n      if (binding instanceof Text && arg.isDistinct()) {\n        params.push(Slot.of(binding, arg));\n        j += 1;\n      } else if (binding instanceof Slot) {\n        if (arg.isDistinct()) {\n          params.push(binding.updatedValue(arg));\n        } else {\n          params.push(binding);\n        }\n        j += 1;\n      }\n      i += 1;\n    }\n    interpreter.pushScope(params);\n    const result = this.template.evaluate(interpreter);\n    interpreter.popScope();\n    return result;\n  }\n\n  override get typeOrder(): number {\n    return 50;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof LambdaFunc) {\n      let order = this.bindings.compareTo(that.bindings);\n      if (order === 0) {\n        order = this.template.compareTo(that.template);\n      }\n      return order;\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown, epsilon?: number): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof LambdaFunc) {\n      return this.bindings.equivalentTo(that.bindings, epsilon)\n          && this.template.equivalentTo(that.template, epsilon);\n    }\n    return false;\n  }\n\n  override equals(that: unknown): boolean {\n    if (this === that) {\n      return true;\n    } else if (that instanceof LambdaFunc) {\n      return this.bindings.equals(that.bindings) && this.template.equals(that.template);\n    }\n    return false;\n  }\n\n  override hashCode(): number {\n    return Murmur3.mash(Murmur3.mix(Murmur3.mix(Constructors.hash(LambdaFunc),\n        this.bindings.hashCode()), this.template.hashCode()));\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.debug(this.bindings).write(46/*'.'*/).write(\"lambda\").write(40/*'('*/)\n                   .debug(this.template).write(41/*')'*/);\n    return output;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Numbers} from \"@swim/util\";\nimport {Constructors} from \"@swim/util\";\nimport type {Output} from \"@swim/codec\";\nimport {Item} from \"../Item\";\nimport {Func} from \"./Func\";\n\n/** @public */\nexport abstract class BridgeFunc extends Func {\n  override get typeOrder(): number {\n    return 51;\n  }\n\n  override compareTo(that: unknown): number {\n    if (that instanceof BridgeFunc) {\n      return Constructors.compare(this.constructor, that.constructor);\n    } else if (that instanceof Item) {\n      return Numbers.compare(this.typeOrder, that.typeOrder);\n    }\n    return NaN;\n  }\n\n  override equivalentTo(that: unknown): boolean {\n    return this === that;\n  }\n\n  override equals(that: unknown): boolean {\n    return this === that;\n  }\n\n  override hashCode(): number {\n    return Constructors.hash(this.constructor);\n  }\n\n  override debug<T>(output: Output<T>): Output<T> {\n    output = output.write(this.constructor.name);\n    return output;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Item} from \"../Item\";\nimport type {Value} from \"../Value\";\nimport {Record} from \"../Record\";\nimport {Num} from \"../Num\";\nimport type {InvokeOperator} from \"../operator/InvokeOperator\";\nimport type {Func} from \"./Func\";\nimport {BridgeFunc} from \"./BridgeFunc\";\nimport {Interpreter} from \"../\"; // forward import\n\n/** @public */\nexport const MathModule = (function () {\n  const MathModule = {} as {\n    readonly max: Func;\n\n    readonly min: Func;\n\n    readonly abs: Func;\n\n    readonly ceil: Func;\n\n    readonly floor: Func;\n\n    readonly round: Func;\n\n    readonly sqrt: Func;\n\n    readonly pow: Func;\n\n    readonly rate: Func;\n\n    readonly random: Func;\n\n    readonly scope: Record;\n  };\n\n  Object.defineProperty(MathModule, \"max\", {\n    get(): Func {\n      const func = new MaxFunc();\n      Object.defineProperty(MathModule, \"max\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"min\", {\n    get(): Func {\n      const func = new MinFunc();\n      Object.defineProperty(MathModule, \"min\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"abs\", {\n    get(): Func {\n      const func = new AbsFunc();\n      Object.defineProperty(MathModule, \"abs\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"ceil\", {\n    get(): Func {\n      const func = new CeilFunc();\n      Object.defineProperty(MathModule, \"ceil\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"floor\", {\n    get(): Func {\n      const func = new FloorFunc();\n      Object.defineProperty(MathModule, \"floor\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"round\", {\n    get(): Func {\n      const func = new RoundFunc();\n      Object.defineProperty(MathModule, \"round\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"sqrt\", {\n    get(): Func {\n      const func = new SqrtFunc();\n      Object.defineProperty(MathModule, \"sqrt\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"pow\", {\n    get(): Func {\n      const func = new PowFunc();\n      Object.defineProperty(MathModule, \"pow\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"rate\", {\n    get(): Func {\n      const func = new RateFunc();\n      Object.defineProperty(MathModule, \"rate\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"random\", {\n    get(): Func {\n      const func = new RandomFunc();\n      Object.defineProperty(MathModule, \"random\", {\n        value: func,\n        enumerable: true,\n        configurable: true,\n      });\n      return func;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  Object.defineProperty(MathModule, \"scope\", {\n    get(): Record {\n      const scope = Record.create(10)\n          .slot(\"max\", MathModule.max)\n          .slot(\"min\", MathModule.min)\n          .slot(\"abs\", MathModule.abs)\n          .slot(\"ceil\", MathModule.ceil)\n          .slot(\"floor\", MathModule.floor)\n          .slot(\"round\", MathModule.round)\n          .slot(\"pow\", MathModule.pow)\n          .slot(\"sqrt\", MathModule.sqrt)\n          .slot(\"rate\", MathModule.rate)\n          .slot(\"random\", MathModule.random)\n          .commit();\n      Object.defineProperty(MathModule, \"scope\", {\n        value: scope,\n        configurable: true,\n        enumerable: true,\n      });\n      return scope;\n    },\n    enumerable: true,\n    configurable: true,\n  });\n\n  class MaxFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      interpreter = Interpreter.fromLike(interpreter);\n      let x: Item;\n      let y: Item | undefined;\n      if (args.length >= 2) {\n        x = args.getItem(0).evaluate(interpreter);\n        y = args.getItem(1).evaluate(interpreter);\n      } else {\n        x = args.evaluate(interpreter);\n      }\n      if (y !== void 0) {\n        return x.max(y);\n      } else if (operator !== void 0) {\n        y = operator.state as Item;\n        const max = y !== void 0 ? x.max(y) : x;\n        operator.setState(max);\n        return max;\n      }\n      return Item.absent();\n    }\n\n    override expand(args: Value, interpreter: Interpreter, operator: InvokeOperator): Item | undefined {\n      if (args.length === 1) {\n        args = args.evaluate(interpreter).toValue();\n        return this.invoke(args, interpreter, operator);\n      }\n      return void 0;\n    }\n  }\n\n  class MinFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      interpreter = Interpreter.fromLike(interpreter);\n      let x: Item;\n      let y: Item | undefined;\n      if (args.length >= 2) {\n        x = args.getItem(0).evaluate(interpreter);\n        y = args.getItem(1).evaluate(interpreter);\n      } else {\n        x = args.evaluate(interpreter);\n      }\n      if (y !== void 0) {\n        return x.min(y);\n      } else if (operator !== void 0) {\n        y = operator.state as Item;\n        const min = y !== void 0 ? x.min(y) : x;\n        operator.setState(min);\n        return min;\n      }\n      return Item.absent();\n    }\n\n    override expand(args: Value, interpreter: Interpreter, operator: InvokeOperator): Item | undefined {\n      if (args.length === 1) {\n        args = args.evaluate(interpreter).toValue();\n        return this.invoke(args, interpreter, operator);\n      }\n      return void 0;\n    }\n  }\n\n  class AbsFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      args = args.evaluate(interpreter).toValue();\n      if (args instanceof Num) {\n        return args.abs();\n      }\n      return Item.absent();\n    }\n  }\n\n  class CeilFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      args = args.evaluate(interpreter).toValue();\n      if (args instanceof Num) {\n        return args.ceil();\n      }\n      return Item.absent();\n    }\n  }\n\n  class FloorFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      args = args.evaluate(interpreter).toValue();\n      if (args instanceof Num) {\n        return args.floor();\n      }\n      return Item.absent();\n    }\n  }\n\n  class RoundFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      args = args.evaluate(interpreter).toValue();\n      if (args instanceof Num) {\n        return args.round();\n      }\n      return Item.absent();\n    }\n  }\n\n  class SqrtFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      args = args.evaluate(interpreter).toValue();\n      if (args instanceof Num) {\n        return args.sqrt();\n      }\n      return Item.absent();\n    }\n  }\n\n  class PowFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      interpreter = Interpreter.fromLike(interpreter);\n      const x = args.getItem(0).evaluate(interpreter);\n      const y = args.getItem(1).evaluate(interpreter);\n      if (x instanceof Num && y instanceof Num) {\n        return x.pow(y);\n      }\n      return Item.absent();\n    }\n  }\n\n  class RateFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      interpreter = Interpreter.fromLike(interpreter);\n      let value: number;\n      let period: number;\n      if (args.length >= 2) {\n        value = args.getItem(0).evaluate(interpreter).numberValue(NaN);\n        period = args.getItem(1).evaluate(interpreter).numberValue(1000);\n      } else {\n        value = args.evaluate(interpreter).numberValue(NaN);\n        period = 1000;\n      }\n      if (isFinite(value) && operator !== void 0) {\n        let state = operator.state as {v0: number, t0: number, dv: number, dt: number} | undefined;\n        if (state === void 0) {\n          state = {v0: value, t0: Date.now(), dv: 0, dt: 0};\n          operator.setState(state);\n        } else {\n          const t1 = Date.now();\n          const dt = t1 - state.t0;\n          if (dt > period && t1 > state.t0 || dt > 2 * period) {\n            const dv = value - state.v0;\n            state.v0 = value;\n            state.t0 = t1;\n            state.dv = dv;\n            state.dt = dt;\n          }\n          operator.setState(state);\n          if (state.dt !== 0) {\n            const rate = period * state.dv / state.dt;\n            return Num.from(rate);\n          }\n        }\n      }\n      return Item.absent();\n    }\n\n    override expand(args: Value, interpreter: Interpreter, operator: InvokeOperator): Item | undefined {\n      args = args.evaluate(interpreter).toValue();\n      return this.invoke(args, interpreter, operator);\n    }\n  }\n\n  class RandomFunc extends BridgeFunc {\n    override invoke(args: Value, interpreter?: Interpreter, operator?: InvokeOperator): Item {\n      args = args.evaluate(interpreter).toValue();\n      const lower = args.length >= 1 ? args.getItem(0).numberValue(0.0) : 0.0;\n      const upper = args.length >= 2 ? args.getItem(1).numberValue(lower + 1.0) : lower + 1.0;\n      const value = lower + Math.random() * (upper - lower);\n      return Num.from(value);\n    }\n  }\n\n  return MathModule;\n})();\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\n/** @public */\nexport class FormException extends Error {\n  constructor(message?: string) {\n    super(message);\n    Object.setPrototypeOf(this, FormException.prototype);\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Lazy} from \"@swim/util\";\nimport type {ItemLike} from \"../Item\";\nimport {Item} from \"../Item\";\nimport type {ValueLike} from \"../Value\";\nimport {Value} from \"../Value\";\nimport {TagForm} from \"../\"; // forward import\nimport {UnitForm} from \"../\"; // forward import\nimport {StringForm} from \"../\"; // forward import\nimport {NumberForm} from \"../\"; // forward import\nimport {BooleanForm} from \"../\"; // forward import\nimport {AnyForm} from \"../\"; // forward import\nimport {ItemForm} from \"../\"; // forward import\nimport {ValueForm} from \"../\"; // forward import\n\n/**\n * Transformation between a structurally typed [Item] and a nominally typed\n * JavaScript object.\n * @public\n */\nexport abstract class Form<T, U = T> {\n  /**\n   * Returns the key of the tag attribute that distinguishes structures of this\n   * `Form`; returns `undefined` if this `Form` has no distinguishing tag\n   * attribute. Used to accelerate discrimination of polymorphic structural\n   * types with nominal type hints.\n   */\n  declare readonly tag: string | undefined; // getter defined below to work around useDefineForClassFields lunacy\n\n  /**\n   * Returns a version of this `Form` that requires a head [Attr] with the\n   * given `tag` name.\n   */\n  withTag(tag: string | undefined): Form<T, U> {\n    if (tag === void 0 || tag === this.tag) {\n      return this;\n    }\n    return new TagForm(this, tag);\n  }\n\n  /**\n   * Returns a default–possibly `undefined`–value of type `T`. Used as the\n   * fallback return value when [Item.coerce coercing] an invalid structural\n   * value.\n   */\n  declare readonly unit: T | undefined; // getter defined below to work around useDefineForClassFields lunacy\n\n  /**\n   * Returns a version of this `Form` with the given `unit` value.\n   */\n  withUnit(unit: T | undefined): Form<T, U> {\n    if (unit === this.unit) {\n      return this;\n    }\n    return new UnitForm(this, unit);\n  }\n\n  /**\n   * Converts a nominally typed JavaScript `object` into its structurally typed\n   * equivalent, optionally based on the provided prototype `item`.\n   */\n  abstract mold(object: T | U, item?: Item): Item;\n\n  /**\n   * Converts a structurally typed `item` into a nominally typed JavaScript\n   * object, optionally based on the provided prototype `object`.\n   */\n  abstract cast(item: Item, object?: T): T | undefined;\n\n  @Lazy\n  static forString(): Form<string> {\n    return new StringForm(\"\");\n  }\n\n  @Lazy\n  static forNumber(): Form<number> {\n    return new NumberForm(0);\n  }\n\n  @Lazy\n  static forBoolean(): Form<boolean> {\n    return new BooleanForm(false);\n  }\n\n  @Lazy\n  static forAny(): Form<ItemLike> {\n    return new AnyForm(void 0);\n  }\n\n  @Lazy\n  static forItem(): Form<Item, ItemLike> {\n    return new ItemForm(Item.absent());\n  }\n\n  @Lazy\n  static forValue(): Form<Value, ValueLike> {\n    return new ValueForm(Value.absent());\n  }\n}\nObject.defineProperty(Form.prototype, \"tag\", {\n  get<T, U>(this: Form<T, U>): string | undefined {\n    return void 0;\n  },\n  configurable: true,\n});\nObject.defineProperty(Form.prototype, \"unit\", {\n  get<T, U>(this: Form<T, U>): T | undefined {\n    return void 0;\n  },\n  configurable: true,\n});\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Item} from \"../Item\";\nimport {Attr} from \"../Attr\";\nimport {Form} from \"./Form\";\n\n/** @internal */\nexport class TagForm<T, U = T> extends Form<T, U> {\n  constructor(form: Form<T, U>, tag: string) {\n    super();\n    this.form = form;\n    this.tag = tag;\n  }\n\n  /** @internal */\n  readonly form: Form<T, U>;\n\n  override readonly tag: string;\n\n  override withTag(tag: string | undefined): Form<T, U> {\n     if (tag !== void 0 && tag !== this.tag) {\n      return new TagForm(this.form, tag);\n    } else if (tag === void 0) {\n      return this.form;\n    } else {\n      return this;\n    }\n  }\n\n  override readonly unit!: T | undefined; // // getter defined below to work around useDefineForClassFields lunacy\n\n  override withUnit(unit: T | undefined): Form<T, U> {\n    if (unit === this.unit) {\n      return this;\n    }\n    return new TagForm(this.form.withUnit(unit), this.tag);\n  }\n\n  override mold(object: T | U, item?: Item): Item {\n    item = this.form.mold(object, item);\n    if (!item.header(this.tag).isDefined()) {\n      item = item.prepended(Attr.of(this.tag));\n    }\n    return item;\n  }\n\n  override cast(item: Item, object?: T): T | undefined {\n    if (item.header(this.tag).isDefined()) {\n      return this.form.cast(item, object);\n    } else if (item.keyEquals(this.tag)) {\n      return this.form.cast(item.toValue(), object);\n    }\n    return void 0;\n  }\n}\nObject.defineProperty(TagForm.prototype, \"unit\", {\n  get<T, U>(this: TagForm<T, U>): T | undefined {\n    return this.form.unit;\n  },\n  configurable: true,\n});\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Item} from \"../Item\";\nimport {Form} from \"./Form\";\n\n/** @internal */\nexport class UnitForm<T, U = T> extends Form<T, U> {\n  constructor(form: Form<T, U>, unit: T | undefined) {\n    super();\n    this.form = form;\n    Object.defineProperty(this, \"unit\", {\n      value: unit,\n      enumerable: true,\n      configurable: true,\n    });\n  }\n\n  /** @internal */\n  readonly form: Form<T, U>;\n\n  override readonly tag: string | undefined; // // getter defined below to work around useDefineForClassFields lunacy\n\n  override withTag(tag: string | undefined): Form<T, U> {\n    if (tag === this.tag) {\n      return this;\n    }\n    return new UnitForm(this.form.withTag(tag), this.unit);\n  }\n\n  override readonly unit: T | undefined;\n\n  override withUnit(unit: T | undefined): Form<T, U> {\n    if (unit !== this.unit) {\n      return new UnitForm(this.form, unit);\n    } else if (unit === this.form.unit) {\n      return this.form;\n    }\n    return this;\n  }\n\n  override mold(object: T | U, item?: Item): Item {\n    if (arguments.length === 1) {\n      return this.form.mold(object);\n    }\n    return this.form.mold(object, item);\n  }\n\n  override cast(item: Item, object?: T): T | undefined {\n    if (arguments.length === 1) {\n      return this.form.cast(item);\n    }\n    return this.form.cast(item, object);\n  }\n}\nObject.defineProperty(UnitForm.prototype, \"tag\", {\n  get<T, U>(this: UnitForm<T, U>): string | undefined {\n    return this.form.tag;\n  },\n  configurable: true,\n});\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Item} from \"../Item\";\nimport {Text} from \"../Text\";\nimport {Form} from \"./Form\";\n\n/** @internal */\nexport class StringForm extends Form<string> {\n  constructor(unit?: string) {\n    super();\n    Object.defineProperty(this, \"unit\", {\n      value: unit,\n      enumerable: true,\n      configurable: true,\n    });\n  }\n\n  override readonly unit: string | undefined;\n\n  override withUnit(unit: string | undefined): Form<string> {\n    if (unit === this.unit) {\n      return this;\n    }\n    return new StringForm(unit);\n  }\n\n  override mold(object: string, item?: Item): Item {\n    if (item === void 0) {\n      return Text.from(object);\n    } else {\n      return item.concat(Text.from(object));\n    }\n  }\n\n  override cast(item: Item, object?: string): string | undefined {\n    const value = item.target;\n    try {\n      return value.stringValue();\n    } catch (error) {\n      return void 0;\n    }\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Item} from \"../Item\";\nimport {Num} from \"../Num\";\nimport {Form} from \"./Form\";\n\n/** @internal */\nexport class NumberForm extends Form<number> {\n  constructor(unit?: number) {\n    super();\n    Object.defineProperty(this, \"unit\", {\n      value: unit,\n      enumerable: true,\n      configurable: true,\n    });\n  }\n\n  override readonly unit: number | undefined;\n\n  override withUnit(unit: number | undefined): Form<number> {\n    if (unit === this.unit) {\n      return this;\n    }\n    return new NumberForm(unit);\n  }\n\n  override mold(object: number, item?: Item): Item {\n    if (item === void 0) {\n      return Num.from(object);\n    } else {\n      return item.concat(Num.from(object));\n    }\n  }\n\n  override cast(item: Item, object?: number): number | undefined {\n    const value = item.target;\n    try {\n      return value.numberValue();\n    } catch (error) {\n      return void 0;\n    }\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Item} from \"../Item\";\nimport {Bool} from \"../Bool\";\nimport {Form} from \"./Form\";\n\n/** @internal */\nexport class BooleanForm extends Form<boolean> {\n  constructor(unit?: boolean) {\n    super();\n    Object.defineProperty(this, \"unit\", {\n      value: unit,\n      enumerable: true,\n      configurable: true,\n    });\n  }\n\n  override readonly unit: boolean | undefined;\n\n  override withUnit(unit: boolean | undefined): Form<boolean> {\n    if (unit === this.unit) {\n      return this;\n    }\n    return new BooleanForm(unit);\n  }\n\n  override mold(object: boolean, item?: Item): Item {\n    if (item === void 0) {\n      return Bool.from(object);\n    } else {\n      return item.concat(Bool.from(object));\n    }\n  }\n\n  override cast(item: Item, object?: boolean): boolean | undefined {\n    const value = item.target;\n    try {\n      return value.booleanValue();\n    } catch (error) {\n      return void 0;\n    }\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {ItemLike} from \"../Item\";\nimport {Item} from \"../Item\";\nimport {Form} from \"./Form\";\n\n/** @internal */\nexport class AnyForm extends Form<ItemLike> {\n  constructor(unit?: ItemLike) {\n    super();\n    Object.defineProperty(this, \"unit\", {\n      value: unit,\n      enumerable: true,\n      configurable: true,\n    });\n  }\n\n  override readonly unit: ItemLike | undefined;\n\n  override withUnit(unit: ItemLike | undefined): Form<ItemLike> {\n    if (unit === this.unit) {\n      return this;\n    }\n    return new AnyForm(unit);\n  }\n\n  override mold(object: ItemLike, item?: Item): Item {\n    object = Item.fromLike(object);\n    if (item !== void 0) {\n      object = item.concat(object);\n    }\n    return object;\n  }\n\n  override cast(item: Item, object?: ItemLike): ItemLike | undefined {\n    return item.toLike();\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {ItemLike} from \"../Item\";\nimport {Item} from \"../Item\";\nimport {Form} from \"./Form\";\n\n/** @internal */\nexport class ItemForm extends Form<Item, ItemLike> {\n  constructor(unit?: Item) {\n    super();\n    Object.defineProperty(this, \"unit\", {\n      value: unit,\n      enumerable: true,\n      configurable: true,\n    });\n  }\n\n  override readonly unit: Item | undefined;\n\n  override withUnit(unit: Item | undefined): Form<Item> {\n    if (unit === this.unit) {\n      return this;\n    }\n    return new ItemForm(unit);\n  }\n\n  override mold(object: ItemLike, item?: Item): Item {\n    object = Item.fromLike(object);\n    if (item !== void 0) {\n      object = item.concat(object);\n    }\n    return object;\n  }\n\n  override cast(item: Item, object?: Item): Item | undefined {\n    return item;\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport type {Item} from \"../Item\";\nimport type {ValueLike} from \"../Value\";\nimport {Value} from \"../Value\";\nimport {Form} from \"./Form\";\n\n/** @internal */\nexport class ValueForm extends Form<Value, ValueLike> {\n  constructor(unit?: Value) {\n    super();\n    Object.defineProperty(this, \"unit\", {\n      value: unit,\n      enumerable: true,\n      configurable: true,\n    });\n  }\n\n  override readonly unit: Value | undefined;\n\n  override withUnit(unit: Value | undefined): Form<Value> {\n    if (unit === this.unit) {\n      return this;\n    }\n    return new ValueForm(unit);\n  }\n\n  override mold(object: ValueLike, item?: Item): Item {\n    object = Value.fromLike(object);\n    if (item !== void 0) {\n      object = item.concat(object);\n    }\n    return object;\n  }\n\n  override cast(item: Item, object?: Value): Value | undefined {\n    return item.toValue();\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Cursor} from \"@swim/util\";\nimport type {Value} from \"../Value\";\nimport type {Form} from \"../form/Form\";\n\n/** @internal */\nexport class ValueCursor<V> extends Cursor<V> {\n  constructor(cursor: Cursor<Value>, form: Form<V, unknown>) {\n    super();\n    this.cursor = cursor;\n    this.form = form;\n  }\n\n  /** @internal */\n  readonly cursor: Cursor<Value>;\n\n  /** @internal */\n  readonly form: Form<V, unknown>;\n\n  override isEmpty(): boolean {\n    return this.cursor.isEmpty();\n  }\n\n  override head(): V {\n    const value = this.cursor.head();\n    return value.coerce(this.form);\n  }\n\n  override step(): void {\n    this.cursor.step();\n  }\n\n  override skip(count: number): void {\n    this.cursor.skip(count);\n  }\n\n  override hasNext(): boolean {\n    return this.cursor.hasNext();\n  }\n\n  override nextIndex(): number {\n    return this.cursor.nextIndex();\n  }\n\n  override next(): IteratorResult<V> {\n    const next = this.cursor.next();\n    if (next.done === true) {\n      return next;\n    }\n    return {done: false, value: next.value.coerce(this.form)};\n  }\n\n  override hasPrevious(): boolean {\n    return this.cursor.hasPrevious();\n  }\n\n  override previousIndex(): number {\n    return this.cursor.previousIndex();\n  }\n\n  override previous(): IteratorResult<V> {\n    const previous = this.cursor.previous();\n    if (previous.done === true) {\n      return previous;\n    }\n    return {done: false, value: previous.value.coerce(this.form)};\n  }\n\n  override delete(): void {\n    this.cursor.delete();\n  }\n}\n","// Copyright 2015-2024 Nstream, inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//     http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nimport {Cursor} from \"@swim/util\";\nimport type {Value} from \"../Value\";\nimport type {Form} from \"../form/Form\";\n\n/** @internal */\nexport class ValueEntryCursor<K, V> extends Cursor<[K, V]> {\n  constructor(cursor: Cursor<[Value, Value]>, keyForm: Form<K, unknown>, valueForm: Form<V, unknown>) {\n    super();\n    this.cursor = cursor;\n    this.keyForm = keyForm;\n    this.valueForm = valueForm;\n  }\n\n  /** @internal */\n  readonly cursor: Cursor<[Value, Value]>;\n\n  /** @internal */\n  readonly keyForm: Form<K, unknown>;\n\n  /** @internal */\n  readonly valueForm: Form<V, unknown>;\n\n  override isEmpty(): boolean {\n    return this.cursor.isEmpty();\n  }\n\n  override head(): [K, V] {\n    const pair = this.cursor.head();\n    return [pair[0].coerce(this.keyForm), pair[1].coerce(this.valueForm)];\n  }\n\n  override step(): void {\n    this.cursor.step();\n  }\n\n  override skip(count: number): void {\n    this.cursor.skip(count);\n  }\n\n  override hasNext(): boolean {\n    return this.cursor.hasNext();\n  }\n\n  override nextIndex(): number {\n    return this.cursor.nextIndex();\n  }\n\n  override next(): IteratorResult<[K, V]> {\n    const next = this.cursor.next();\n    if (next.done === true) {\n      return next;\n    }\n    return {done: false, value: [next.value[0].coerce(this.keyForm), next.value[1].coerce(this.valueForm)]};\n  }\n\n  override hasPrevious(): boolean {\n    return this.cursor.hasPrevious();\n  }\n\n  override previousIndex(): number {\n    return this.cursor.previousIndex();\n  }\n\n  override previous(): IteratorResult<[K, V]> {\n    const previous = this.cursor.previous();\n    if (previous.done === true) {\n      return previous;\n    }\n    return {done: false, value: [previous.value[0].coerce(this.keyForm), previous.value[1].coerce(this.valueForm)]};\n  }\n\n  override delete(): void {\n    this.cursor.delete();\n  }\n}\n"],"names":["Item","constructor","updated","key","value","record","Record","create","push","this","set","updatedAttr","setAttr","updatedSlot","setSlot","appended","items","arguments","length","prepended","concat","i","_a","fromLike","forEach","item","lt","that","compareTo","Bool","from","absent","le","eq","equals","ne","ge","gt","invoke","args","filter","predicate","selector","Selector","literal","max","min","evaluate","interpreter","substitute","cast","form","orElse","object","coerce","unit","precedence","callback","thisArg","call","iterator","Cursor","unary","Symbol","interpolateTo","ItemInterpolator","display","output","debug","toString","Format","empty","extant","Extant","Absent","Value","globalScope","slot","MathModule","scope","commit","Lazy","__esDecorate","_static_globalScope_decorators","kind","name","static","private","access","has","obj","get","metadata","_metadata","_staticExtraInitializers","__runInitializers","_super","y0","y1","interpolator","u","Object","setPrototypeOf","prototype","Interpolator","Field","super","isDefined","isDistinct","isDefinite","toValue","tag","target","flattened","unflattened","of","header","headers","head","tail","body","getAttr","getSlot","getField","getItem","index","deleted","conditional","thenTerm","elseTerm","or","and","lambda","template","stringValue","numberValue","booleanValue","FieldInterpolator","Text","charCodeAt","slice","Attr","Slot","field","$key","$value","TypeError","ImmutableFlag","keyInterpolator","valueInterpolator","defineProperty","configurable","flags","isConstant","setValue","newValue","Error","oldValue","updatedValue","bitwiseOr","Expression","BitwiseOrOperator","bitwiseXor","BitwiseXorOperator","bitwiseAnd","BitwiseAndOperator","plus","PlusOperator","minus","MinusOperator","times","TimesOperator","divide","DivideOperator","modulo","ModuloOperator","not","bitwiseNot","negative","positive","inverse","Interpreter","toLike","isAliased","isMutable","alias","branch","clone","AttrInterpolator","typeOrder","order","Numbers","compare","NaN","equivalentTo","epsilon","keyEquals","hashCode","Murmur3","mash","mix","Constructors","hash","write","SlotInterpolator","LtOperator","LeOperator","EqOperator","NeOperator","GeOperator","GtOperator","LambdaFunc","builder","ValueBuilder","Num","Uint8Array","Data","wrap","Array","isArray","fromArray","fromObject","pushField","pushValue","build","isEmpty","fieldCount","isObject","valueCount","count","member","modified","step","indexOf","Math","lastIndexOf","n","splice","delete","lower","upper","subRecord","attr","pushScope","changed","oldItem","newItem","popScope","recordString","defined","itemString","toArray","toObject","array","RecordCursor","RecordInterpolator","xs","ys","hashValue","RecordMap","initialCapacity","hasOwnProperty","expand","AliasedFlag","interpolators","interpolatorCount","direction","skip","hasNext","nextIndex","next","done","hasPrevious","previousIndex","previous","setItem","_classSuper","table","writable","enumerable","RecordMapView","hashTable","x","abs","setAliased","pushAliased","setMutable","updateMutable","pushMutable","oldArray","newArray","put","setAttrAliased","setAttrMutable","updateAttrMutable","setSlotAliased","setSlotMutable","updateSlotMutable","RangeError","setItemAliased","setItemMutable","newItems","k","m","start","deleteCount","spliceAliased","spliceMutable","oldItems","deleteAliased","deleteMutable","j","clear","itemCount","result","_static_empty_decorators","clearAliased","clearMutable","l","size","getByte","setByte","setByteAliased","setByteMutable","addByte","addByteAliased","addByteMutable","addData","data","addUint8Array","addUint8ArrayAliased","addUint8ArrayMutable","toUint8Array","asUint8Array","buffer","byteOffset","writeBase16","base16","Base16","uppercase","Writer","end","writeUint8Array","toBase16","Unicode","stringOutput","bind","writeBase64","base64","Base64","standard","toBase64","xn","yn","mixUint8Array","writer","isDone","Output","error","trap","fromBase16","input","stringInput","parse","fromBase64","random","Random","fillBytes","DataOutput","OutputSettings","settings","isCont","isFull","isError","isPart","asPart","part","b","writeln","string","withSettings","valueOf","localeCompare","Strings","debugAny","TextOutput","token","String","fromCharCode","isNaN","isInfinite","isFinite","isUint32","Uint32Flag","isUint64","Uint64Flag","ceil","floor","round","sqrt","pow","NumInterpolator","y","Equivalent","Epsilon","displayNumber","zero","negativeZero","one","negativeOne","nan","uint32","uint64","Infinity","num","_static_zero_decorators","_static_negativeZero_decorators","_static_one_decorators","_static_negativeOne_decorators","_static_nan_decorators","TypeMask","true","false","_static_true_decorators","_static_false_decorators","_static_extant_decorators","_static_absent_decorators","ConditionalOperator","OrOperator","AndOperator","NotOperator","BitwiseNotOperator","NegativeOperator","PositiveOperator","Operator","binary","operand1","operator","operand2","operand","BinaryOperator","BinaryOperatorInterpolator","operand1Interpolator","operand2Interpolator","UnaryOperator","UnaryOperatorInterpolator","operandInterpolator","ifTerm","willOperate","theTerm","didOperate","ConditionalOperatorInterpolator","ifTermInterpolator","thenTermInterpolator","elseTermInterpolator","InterpreterException","message","InterpreterSettings","maxScopeDepth","withMaxScopeDepth","copy","canEqual","_static_standard_decorators","scopeStack","scopeDepth","peekScope","getScope","oldScopeStack","newScopeStack","swapScope","newScope","oldScope","willSelect","didSelect","willTransform","didTransform","objects","scopes","argument1","argument2","argument","InvokeOperator","func","state","setState","Func","InvokeOperatorInterpolator","funcInterpolator","argsInterpolator","selected","forSelected","andThen","GetSelector","identity","GetAttrSelector","GetItemSelector","keys","values","children","descendants","FilterSelector","debugThen","IdentitySelector","KeysSelector","ValuesSelector","ChildrenSelector","DescendantsSelector","LiteralSelector","_static_identity_decorators","_static_keys_decorators","_static_values_decorators","_static_children_decorators","_static_descendants_decorators","then","mapSelected","transform","oldField","child","oldKey","newKey","oldChild","newChild","filterSelected","bindings","arity","params","binding","arg","BridgeFunc","MaxFunc","MinFunc","AbsFunc","CeilFunc","FloorFunc","RoundFunc","SqrtFunc","PowFunc","RateFunc","RandomFunc","rate","period","v0","t0","Date","now","dv","dt","t1","FormException","Form","withTag","TagForm","withUnit","UnitForm","forString","StringForm","forNumber","NumberForm","forBoolean","BooleanForm","forAny","AnyForm","forItem","ItemForm","forValue","ValueForm","_static_forString_decorators","_static_forNumber_decorators","_static_forBoolean_decorators","_static_forAny_decorators","_static_forItem_decorators","_static_forValue_decorators","mold","ValueCursor","cursor","ValueEntryCursor","keyForm","valueForm","pair"],"mappings":"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"}