src/vs/workbench/services/themes/common/iconExtensionPoint.ts/IconExtensionPoint/constructor
class IconExtensionPoint:	constructor() {
		iconConfigurationExtPoint.setHandler((extensions, delta) => {
			for (const extension of delta.added) {
				const extensionValue = <IIconExtensionPoint[]>extension.value;
				const collector = extension.collector;

				if (!extension.description.enableProposedApi) {
					collector.error(nls.localize('invalid.icons.proposedAPI', "'configuration.icons is a proposed contribution point and only available when running out of dev or with the following command line switch: --enable-proposed-api {0}", extension.description.identifier.value));
					return;
				}

				if (!extensionValue || !Array.isArray(extensionValue)) {
					collector.error(nls.localize('invalid.icons.configuration', "'configuration.icons' must be a array"));
					return;
				}

				for (const iconContribution of extensionValue) {
					if (typeof iconContribution.id !== 'string' || iconContribution.id.length === 0) {
						collector.error(nls.localize('invalid.icons.id', "'configuration.icons.id' must be defined and can not be empty"));
						return;
					}
					if (!iconContribution.id.match(iconIdPattern)) {
						collector.error(nls.localize('invalid.icons.id.format', "'configuration.icons.id' can only contain letter, digits and minuses and need to consist of at least two segments in the form `component-iconname`."));
						return;
					}
					if (typeof iconContribution.description !== 'string' || iconContribution.description.length === 0) {
						collector.error(nls.localize('invalid.icons.description', "'configuration.icons.description' must be defined and can not be empty"));
						return;
					}
					let defaultIcon = iconContribution.default;
					if (typeof defaultIcon === 'string') {
						iconRegistry.registerIcon(iconContribution.id, { id: defaultIcon }, iconContribution.description);
					} else if (typeof defaultIcon === 'object' && typeof defaultIcon.fontId === 'string' && typeof defaultIcon.fontCharacter === 'string') {
						iconRegistry.registerIcon(iconContribution.id, {
							fontId: getFontId(extension.description, defaultIcon.fontId),
							fontCharacter: defaultIcon.fontCharacter,
						}, iconContribution.description);
					} else {
						collector.error(nls.localize('invalid.icons.default', "'configuration.icons.default' must be either a reference to the id of an other theme icon (string) or a icon definition (object) with properties `fontId` and `fontCharacter`."));
					}
				}
			}
			for (const extension of delta.removed) {
				const extensionValue = <IIconExtensionPoint[]>extension.value;
				for (const iconContribution of extensionValue) {
					iconRegistry.deregisterIcon(iconContribution.id);
				}
			}
		});
	}