Observer.prototype.changed = function() {
var observers = this.observers;
var clone = this.clone;
var target = this.target;
if (Object.keys(target).length !== Object.keys(clone).length) {
this.rememberState();
return true;
}
for (var key in target) if (target[key] !== clone[key]) {
this.rememberState();
return true;
}
for (key in observers) if (observers[key].changed()) return true;
this.rememberState();
return false;
};