whole_func_string: function track(property){
        if(!(property in trackedProperties)){
          trackedProperties[property] = true;
          values[property] = model[property];
          Object.defineProperty(model, property, {
            get: function () { return values[property]; },
            set: function(value) {
              values[property] = value;
              getListeners(property).forEach(function(callback){
                callback(value);
              });
            }
          });
        }
      }
func_code_string: function track(property){
        if(!(property in trackedProperties)){
          trackedProperties[property] = true;
          values[property] = model[property];
          Object.defineProperty(model, property, {
            get: function () { return values[property]; },
            set: function(value) {
              values[property] = value;
              getListeners(property).forEach(function(callback){
                callback(value);
              });
            }
          });
        }
      }
func_documentation_string: Tracks a property if it is not already tracked.