add: if (this.readOnly) throw Components.interfaces.calIErrors.CAL_IS_READONLY; 
context:     deleteItem: function (aItem, aListener) {        if (aItem.id == null || this.mItems[aItem.id] == null) {            if (aListener)                aListener.onOperationComplete (this.calendarToReturn,                                               Components.results.NS_ERROR_FAILURE,                                               aListener.DELETE,                                               aItem.id,                                               "ID is null or is from different calendar in deleteItem");            return;        }        var oldItem = this.mItems[aItem.id];        if (oldItem.generation != aItem.generation) {            if (aListener)                aListener.onOperationComplete (this.calendarToReturn,                                               Components.results.NS_ERROR_FAILURE,                                               aListener.DELETE,                                               aItem.id,                                               "generation mismatch in deleteItem");            return;        }        delete this.mItems[aItem.id];        if (aListener)            aListener.onOperationComplete (this.calendarToReturn,                                           Components.results.NS_OK,                                           aListener.DELETE,                                           aItem.id,                                           null);        // notify observers        this.observeDeleteItem(oldItem);    },
meta: 9421	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9421/10aa71fd0bd91b8cabbafaa5c1a8ab2ea0f210dc/calMemoryCalendar.js/clean/calendar/providers/memory/calMemoryCalendar.js