	) {
		this.config = mergeConfigs($ark.config, config)

		this.resolvedConfig = mergeConfigs($ark.resolvedConfig, config)

		this.name =
			this.resolvedConfig.name ??
			`anonymousScope${Object.keys(scopesByName).length}`
		if (this.name in scopesByName)
			throwParseError(`A Scope already named ${this.name} already exists`)
		scopesByName[this.name] = this

		const aliasEntries = Object.entries(def).map(entry =>
			this.preparseOwnAliasEntry(...entry)
		)

		for (const [k, v] of aliasEntries) {
			let name = k
			if (k[0] === "#") {
				name = k.slice(1)
				if (name in this.aliases)
					throwParseError(writeDuplicateAliasError(name))
				this.aliases[name] = v
			} else {
				if (name in this.aliases) throwParseError(writeDuplicateAliasError(k))
				this.aliases[name] = v
				this.exportedNames.push(name)
			}
			if (
				!hasArkKind(v, "module") &&
				!hasArkKind(v, "generic") &&
				!isThunk(v)
			) {
				const preparsed = this.preparseOwnDefinitionFormat(v, { alias: name })
				this.resolutions[name] =
					hasArkKind(preparsed, "root") ?
						this.bindReference(preparsed)
					:	this.createParseContext(preparsed).id
			}
		}

		// reduce union of all possible values reduces to unknown
		rawUnknownUnion ??= this.node(
			"union",
			{
				branches: [
					"string",
					"number",
					"object",
					"bigint",
					"symbol",
					{ unit: true },
					{ unit: false },
					{ unit: undefined },
					{ unit: null }
				]
			},
			{ prereduced: true }
		)

		this.nodesByHash[rawUnknownUnion.hash] = this.node(
