rem: dict = WMCreatePLDictionary(NULL, NULL, NULL);
add: dict = WMCreatePLDictionary(NULL, NULL);
context: wDefaultChangeIcon(WScreen *scr, char *instance, char* class, char *file){    WDDomain *db = WDWindowAttributes;    WMPropList *icon_value=NULL, *value, *attr, *key, *def_win, *def_icon=NULL;    WMPropList *dict = db->dictionary;    int same = 0;    if (!dict) {        dict = WMCreatePLDictionary(NULL, NULL, NULL);        if (dict) {            db->dictionary = dict;        } else {            return;        }    }    WMPLSetCaseSensitive(True);    if (instance && class) {    	char *buffer;        buffer = wmalloc(strlen(instance) + strlen(class) + 2);        sprintf(buffer, "%s.%s", instance, class);        key = WMCreatePLString(buffer);        wfree(buffer);    } else if (instance) {        key = WMCreatePLString(instance);    } else if (class) {        key = WMCreatePLString(class);    } else {        key = WMRetainPropList(AnyWindow);    }    if (file) {        value = WMCreatePLString(file);        icon_value = WMCreatePLDictionary(AIcon, value, NULL);        WMReleasePropList(value);        if ((def_win = WMGetFromPLDictionary(dict, AnyWindow)) != NULL) {            def_icon = WMGetFromPLDictionary(def_win, AIcon);        }        if (def_icon && !strcmp(WMGetFromPLString(def_icon), file))            same = 1;    }    if ((attr = WMGetFromPLDictionary(dict, key)) != NULL) {        if (WMIsPLDictionary(attr)) {            if (icon_value!=NULL && !same)                WMMergePLDictionaries(attr, icon_value, False);            else                WMRemoveFromPLDictionary(attr, AIcon);        }    } else if (icon_value!=NULL && !same) {        WMPutInPLDictionary(dict, key, icon_value);    }    if (!wPreferences.flags.noupdates) {        UpdateDomainFile(db);    }    WMReleasePropList(key);    if(icon_value)        WMReleasePropList(icon_value);    WMPLSetCaseSensitive(False);}