code: function PreferencesService(serviceRegistry, options) {
  		options = options || {};
  		this._changeListeners = [];
  		this._userProvider = options.userProvider || new UserPreferencesProvider(serviceRegistry);
  		this._localProvider = options.localProvider || new LocalPreferencesProvider();
  		this._defaultsProvider = options.defaultsProvider || new DefaultPreferencesProvider(options.defaultPreferencesLocation);
  		_EventTarget.attach(this);
  		window.addEventListener("storage", function(evt) {
  			var key = evt.key;
  			var prefix = "/orion/preferences/"; //$NON-NLS-1$
  			if (!key || key.indexOf(prefix) !== 0) return;
  			var index = key.indexOf("/", prefix.length);
  			var namespace = key.substring(index);
  			var scope = {"default": PreferencesService.DEFAULT_SCOPE, local: PreferencesService.LOCAL_SCOPE, user: PreferencesService.USER_SCOPE}[key.substring(prefix.length, index)];
  			this.dispatchEvent(new PreferencesEvent("changed", namespace, scope)); //$NON-NLS-1$
  		}.bind(this), false);
  		this._serviceRegistration = serviceRegistry.registerService("orion.core.preference", this); //$NON-NLS-0$
  	}
docs: Dispatched when a preferences node has been changed. The type of this event is <code>"changed"</code>.
  @name orion.PreferencesService#changed
  @event
   
  Constructs a new preference service. Clients should obtain a preference service
  by requesting the service <tt>orion.core.preference</tt> from the service registry.
  This service constructor is only intended to be used by page service registry
  initialization code.
  @class The preferences service manages a hierarchical set of preference
  nodes. Each node consists of preference key/value pairs.
  @name orion.preferences.PreferencesService
  @see orion.preferences.Preferences
  @borrows orion.serviceregistry.EventTarget#addEventListener as #addEventListener
  @borrows orion.serviceregistry.EventTarget#removeEventListener as #removeEventListener