src/vs/workbench/services/configuration/browser/configurationService.ts/RegisterConfigurationSchemasContribution/registerConfigurationSchemas
class RegisterConfigurationSchemasContribution:	private registerConfigurationSchemas(): void {
		const jsonRegistry = Registry.as<IJSONContributionRegistry>(JSONExtensions.JSONContribution);

		const allSettingsSchema: IJSONSchema = {
			properties: allSettings.properties,
			patternProperties: allSettings.patternProperties,
			additionalProperties: true,
			allowTrailingCommas: true,
			allowComments: true
		};

		const userSettingsSchema: IJSONSchema = this.environmentService.remoteAuthority ?
			{
				properties: {
					...applicationSettings.properties,
					...windowSettings.properties,
					...resourceSettings.properties
				},
				patternProperties: allSettings.patternProperties,
				additionalProperties: true,
				allowTrailingCommas: true,
				allowComments: true
			}
			: allSettingsSchema;

		const machineSettingsSchema: IJSONSchema = {
			properties: {
				...machineSettings.properties,
				...machineOverridableSettings.properties,
				...windowSettings.properties,
				...resourceSettings.properties
			},
			patternProperties: allSettings.patternProperties,
			additionalProperties: true,
			allowTrailingCommas: true,
			allowComments: true
		};

		const workspaceSettingsSchema: IJSONSchema = {
			properties: {
				...this.checkAndFilterPropertiesRequiringTrust(machineOverridableSettings.properties),
				...this.checkAndFilterPropertiesRequiringTrust(windowSettings.properties),
				...this.checkAndFilterPropertiesRequiringTrust(resourceSettings.properties)
			},
			patternProperties: allSettings.patternProperties,
			additionalProperties: true,
			allowTrailingCommas: true,
			allowComments: true
		};

		jsonRegistry.registerSchema(defaultSettingsSchemaId, {
			properties: Object.keys(allSettings.properties).reduce<IJSONSchemaMap>((result, key) => {
				result[key] = {
					...allSettings.properties[key],
					deprecationMessage: undefined
				};
				return result;
			}, {}),
			patternProperties: Object.keys(allSettings.patternProperties).reduce<IJSONSchemaMap>((result, key) => {
				result[key] = {
					...allSettings.patternProperties[key],
					deprecationMessage: undefined
				};
				return result;
			}, {}),
			additionalProperties: true,
			allowTrailingCommas: true,
			allowComments: true
		});
		jsonRegistry.registerSchema(userSettingsSchemaId, userSettingsSchema);
		jsonRegistry.registerSchema(machineSettingsSchemaId, machineSettingsSchema);

		if (WorkbenchState.WORKSPACE === this.workspaceContextService.getWorkbenchState()) {
			const folderSettingsSchema: IJSONSchema = {
				properties: {
					...this.checkAndFilterPropertiesRequiringTrust(machineOverridableSettings.properties),
					...this.checkAndFilterPropertiesRequiringTrust(resourceSettings.properties)
				},
				patternProperties: allSettings.patternProperties,
				additionalProperties: true,
				allowTrailingCommas: true,
				allowComments: true
			};
			jsonRegistry.registerSchema(workspaceSettingsSchemaId, workspaceSettingsSchema);
			jsonRegistry.registerSchema(folderSettingsSchemaId, folderSettingsSchema);
		} else {
			jsonRegistry.registerSchema(workspaceSettingsSchemaId, workspaceSettingsSchema);
			jsonRegistry.registerSchema(folderSettingsSchemaId, workspaceSettingsSchema);
		}
	}