rem: if (this.showFunctions || prop.value.jsType != TYPE_FUNCTION) 
add: if ((this.showFunctions || prop.value.jsType != TYPE_FUNCTION) && (this.showConstants || !(prop.flags & PROP_READONLY))) 
context: function vr_listprops (){    // the ":" prefix for keys in the propMap avoid collisions with "real"    // pseudo-properties, such as __proto__.  If we were to actually assign    // to those we would introduce bad side affects.    //dd ("listProperties {");    var i;    var jsval = this.value.getWrappedValue();    var propMap = new Object();    /* get the enumerable properties */        for (var p in jsval)    {        var value;        try        {            value = console.jsds.wrapValue(jsval[p]);            if (this.showFunctions || value.jsType != TYPE_FUNCTION)            {                propMap[":" + p] = { name: p, value: value,                                     flags: PROP_ENUMERATE | PROP_HINTED };            }            else            {                //dd ("not including function " + name);                propMap[":" + p] = null;            }        }        catch (ex)        {            propMap[":" + p] = { name: p, value: console.jsds.wrapValue(ex),                                 flags: PROP_EXCEPTION };        }        //dd ("jsval props: adding " + p + ", " + propMap[":" + p]);    }        /* get the local properties, may or may not be enumerable */    var localProps = new Object()    this.value.getProperties(localProps, {});    localProps = localProps.value;    var len = localProps.length;    for (i = 0; i < len; ++i)    {        var prop = localProps[i];        var name = prop.name.stringValue;                if (!((":" + name) in propMap))        {            if (this.showFunctions || prop.value.jsType != TYPE_FUNCTION)            {                //dd ("localProps: adding " + name + ", " + prop);                propMap[":" + name] = { name: name, value: prop.value,                                        flags: prop.flags };            }            else            {                //dd ("not including function " + name);                propMap[":" + name] = null;            }        }        else        {            if (propMap[":" + name])                propMap[":" + name].flags = prop.flags;        }    }        /* sort the property list */    var nameList = keys(propMap);    //dd ("nameList is " + nameList);        nameList.sort();    var propertyList = new Array();    for (i = 0; i < nameList.length; ++i)    {        name = nameList[i];        if (propMap[name])            propertyList.push (propMap[name]);    }        //dd ("} " + propertyList.length + " properties");    return propertyList;}
meta: 10234	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/10234/43c507ea67357e037a3c3311d3029b1d176a2d3b/venkman-records.js/clean/extensions/venkman/resources/content/venkman-records.js