src/vs/platform/configuration/common/configurationModels.ts/ConfigurationModelParser/filter
class ConfigurationModelParser:	private filter(properties: any, configurationProperties: { [qualifiedKey: string]: IConfigurationPropertySchema | undefined }, filterOverriddenProperties: boolean, options?: ConfigurationParseOptions): { raw: {}, restricted: string[] } {
		if (!options?.scopes && !options?.skipRestricted) {
			return { raw: properties, restricted: [] };
		}
		const raw: any = {};
		const restricted: string[] = [];
		for (let key in properties) {
			if (OVERRIDE_PROPERTY_PATTERN.test(key) && filterOverriddenProperties) {
				const result = this.filter(properties[key], configurationProperties, false, options);
				raw[key] = result.raw;
				restricted.push(...result.restricted);
			} else {
				const propertySchema = configurationProperties[key];
				const scope = propertySchema ? typeof propertySchema.scope !== 'undefined' ? propertySchema.scope : ConfigurationScope.WINDOW : undefined;
				if (propertySchema?.restricted) {
					restricted.push(key);
				}
				// Load unregistered configurations always.
				if (scope === undefined || options.scopes === undefined || options.scopes.includes(scope)) {
					if (!(options.skipRestricted && propertySchema?.restricted)) {
						raw[key] = properties[key];
					}
				}
			}
		}
		return { raw, restricted };
	}