docs: function SettingTracker(serviceRegistry, metaTypeRegistry, settingsMap, categoriesMap) {
  		var serviceRegistrations = {};
  
  		function _addSetting(settingJson) {
  			var setting = new SettingImpl(settingJson);
  			var classId = setting.getObjectClassDefinitionId();
  			var serviceProperties = {
  				designates: [{
  					pid: setting.getPid(),
  					classId: classId
  				}]
  			};
  			if (!setting.isRef && !metaTypeRegistry.getObjectClassDefinition(classId)) {
  				// The ObjectClassDefinition doesn't exist yet so we'll define it here
  				serviceProperties.classes = [{
  					id: classId,
  					name: setting.getName(),
  					properties: settingJson.properties
  				}];
  			}
  			serviceRegistrations[setting.getPid()] = serviceRegistry.registerService(METATYPE_SERVICE, {}, serviceProperties);
  			var ocd = metaTypeRegistry.getObjectClassDefinition(classId);
  			setting.properties = ocd.getAttributeDefinitions();
  			settingsMap[setting.getPid()] = setting;
  			var category = setting.getCategory() || DEFAULT_CATEGORY;
  			if (!hasOwnProperty.call(categoriesMap, category)) {
  				categoriesMap[category] = [];
  			}
  			categoriesMap[category].push(setting.getPid());
  		}
  
  		function _deleteSetting(pid, category) {
  			var serviceRegistration = serviceRegistrations[pid];
  			serviceRegistration.unregister();
  			delete serviceRegistrations[pid];
  			delete settingsMap[pid];
  			var pids = categoriesMap[category || DEFAULT_CATEGORY];
  			pids.splice(pids.indexOf(pid), 1);
  			if (!pids.length) {
  				delete categoriesMap[category];
  			}
  		}
  
  		ServiceTracker.call(this, serviceRegistry, SETTING_SERVICE);
  		this.addingService = function(serviceRef) {
  			var settings = serviceRef.getProperty(SETTINGS_PROP);
  			if (!settings || !settings.length) {
  				return null;
  			}
  			for (var i=0; i < settings.length; i++) {
  				_addSetting(settings[i]);
  			}
  			return ServiceTracker.prototype.addingService.call(this, serviceRef);
  		};
  		this.removedService = function(serviceRef, service) {
  			var settings = serviceRef.getProperty(SETTINGS_PROP);
  			for (var i=0; i < settings.length; i++) {
  				_deleteSetting(settings[i].pid, settings[i].category);
  			}
  		};
  	}