add: observerService.addObserver(this._observer, "xpcom-shutdown", false); 
context:     init : function () {        // Cache references to current |this| in utility objects        this._webProgressListener._domEventListener = this._domEventListener;        this._webProgressListener._pwmgr = this;        this._domEventListener._pwmgr    = this;        this._observer._pwmgr            = this;        // Preferences. Add observer so we get notified of changes.        this._prefBranch = Cc["@mozilla.org/preferences-service;1"]            .getService(Ci.nsIPrefService).getBranch("signon.");        this._prefBranch.QueryInterface(Ci.nsIPrefBranch2);        this._prefBranch.addObserver("", this._observer, false);        // Get current preference values.        this._debug = this._prefBranch.getBoolPref("debug");        this._remember = this._prefBranch.getBoolPref("rememberSignons");        // Get constructor for nsILoginInfo        this._nsLoginInfo = new Components.Constructor(            "@mozilla.org/login-manager/loginInfo;1", Ci.nsILoginInfo);        // Form submit observer checks forms for new logins and pw changes.        var observerService = Cc["@mozilla.org/observer-service;1"]                                .getService(Ci.nsIObserverService);        observerService.addObserver(this._observer, "earlyformsubmit", false);        // WebProgressListener for getting notification of new doc loads.        var progress = Cc["@mozilla.org/docloaderservice;1"]                        .getService(Ci.nsIWebProgress);        progress.addProgressListener(this._webProgressListener,                                     Ci.nsIWebProgress.NOTIFY_STATE_DOCUMENT);    },
meta: 10520	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/10520/859057b0aea3d83b223b6059dd517b60699053ce/nsLoginManager.js/clean/toolkit/components/passwordmgr/src/nsLoginManager.js