if (isGlobal && prototypes.containsKey(key.toLowerCase())) {  predefinedProperties.add(key); continue; }
        public void commitCompilation() {            // loop through properties defined on the prototype object            // and remove thos properties which haven't been renewed during            // this compilation/evaluation pass.            if (objProto instanceof PropertyRecorder) {                PropertyRecorder recorder = (PropertyRecorder) objProto;                recorder.stopRecording();                Set changedProperties = recorder.getChangeSet();                recorder.clearChangeSet();                // ignore all  properties that were defined before we started                // compilation. We won't manage these properties, even                // if they were set during compilation.                changedProperties.removeAll(predefinedProperties);                // remove all renewed properties from the previously compiled                // property names so we can remove those properties that were not                // renewed in this compilation                compiledProperties.removeAll(changedProperties);                Iterator it = compiledProperties.iterator();                while (it.hasNext()) {                    String key = (String) it.next();                    try {                        objProto.setAttributes(key, 0);                        objProto.delete(key);                    } catch (Exception px) {                        System.err.println("Error unsetting property "+key+" on "+                                           frameworkProto.getName());                    }                }                // update compiled properties                compiledProperties = changedProperties;            }            // mark this type as updated            lastUpdate = frameworkProto.lastCodeUpdate();            // If this prototype defines a postCompile() function, call it            Context cx = Context.getCurrentContext();            try {                Object fObj = ScriptableObject.getProperty(objProto,                                                           "onCodeUpdate");                if (fObj instanceof Function) {                    Object[] args = {frameworkProto.getName()};                    ((Function) fObj).call(cx, global, objProto, args);                }            } catch (Exception x) {                app.logError("Exception in "+frameworkProto.getName()+                             ".onCodeUpdate(): " + x, x);            }        }