=== tests/cases/conformance/types/spread/objectSpreadScenarios.ts ===
interface A1 { a: boolean }
>A1 : Symbol(A1, Decl(objectSpreadScenarios.ts, 0, 0))
>a : Symbol(A1.a, Decl(objectSpreadScenarios.ts, 0, 14))

interface B1 { b: number };
>B1 : Symbol(B1, Decl(objectSpreadScenarios.ts, 0, 27))
>b : Symbol(B1.b, Decl(objectSpreadScenarios.ts, 1, 14))

function override<U>(initial: U, override: U): { ...U, ...U } {
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 1, 27))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
>initial : Symbol(initial, Decl(objectSpreadScenarios.ts, 2, 21))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 2, 32))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 2, 18))

    return { ...initial, ...override };
}
function update<U>(this: { u: { ...U } }, override: U): void {
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 4, 1))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 5, 41))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 5, 16))

    this.u = { ...this.u, ...override };
>this.u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
>this.u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
>this : Symbol(this, Decl(objectSpreadScenarios.ts, 5, 19))
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 5, 26))
}
function mixin<T, U>(one: T, two: U): { ...T, ...U } {
>mixin : Symbol(mixin, Decl(objectSpreadScenarios.ts, 7, 1))
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
>one : Symbol(one, Decl(objectSpreadScenarios.ts, 8, 21))
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
>two : Symbol(two, Decl(objectSpreadScenarios.ts, 8, 28))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))
>T : Symbol(T, Decl(objectSpreadScenarios.ts, 8, 15))
>U : Symbol(U, Decl(objectSpreadScenarios.ts, 8, 17))

    return { ...one, ...two };
}
let a1: A1 = { a: true };
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>A1 : Symbol(A1, Decl(objectSpreadScenarios.ts, 0, 0))
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 11, 14))

let b1: B1 = { b: 101 };
>b1 : Symbol(b1, Decl(objectSpreadScenarios.ts, 12, 3))
>B1 : Symbol(B1, Decl(objectSpreadScenarios.ts, 0, 27))
>b : Symbol(b, Decl(objectSpreadScenarios.ts, 12, 14))

a1 = override(a1, { a: false });
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>override : Symbol(override, Decl(objectSpreadScenarios.ts, 1, 27))
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 13, 19))

let host = { u: a1, update };
>host : Symbol(host, Decl(objectSpreadScenarios.ts, 14, 3))
>u : Symbol(u, Decl(objectSpreadScenarios.ts, 14, 12))
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))

host.update({ a: false });
>host.update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
>host : Symbol(host, Decl(objectSpreadScenarios.ts, 14, 3))
>update : Symbol(update, Decl(objectSpreadScenarios.ts, 14, 19))
>a : Symbol(a, Decl(objectSpreadScenarios.ts, 15, 13))

let mixed = mixin(a1, b1);
>mixed : Symbol(mixed, Decl(objectSpreadScenarios.ts, 16, 3))
>mixin : Symbol(mixin, Decl(objectSpreadScenarios.ts, 7, 1))
>a1 : Symbol(a1, Decl(objectSpreadScenarios.ts, 11, 3))
>b1 : Symbol(b1, Decl(objectSpreadScenarios.ts, 12, 3))

