add:   var newObserver = new readOnlyAnnouncer(calendar); calendar.addObserver(newObserver.observer); 
context:     registerCalendar: function(calendar) {        // bail if this calendar (or one that looks identical to it) is already registered        if (this.findCalendarID(calendar) > 0) {            dump ("registerCalendar: calendar already registered\n");            throw Components.results.NS_ERROR_FAILURE;        }        var pp = this.mRegisterCalendar.params;        pp.type = calendar.type;        pp.uri = calendar.uri.spec;        this.mRegisterCalendar.step();        this.mRegisterCalendar.reset();        //dump("adding [" + this.mDB.lastInsertRowID + "]\n");        //this.mCache[this.mDB.lastInsertRowID] = calendar;        this.mCache[this.findCalendarID(calendar)] = calendar;        this.notifyObservers("onCalendarRegistered", [calendar]);    },
meta: 5459	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/5459/8127ab2430d6b0c7879a491f0176f55c41966c25/calCalendarManager.js/buggy/calendar/base/src/calCalendarManager.js