code: function CreateSchemedProperty(object, scheme, schema_name, index) {
      if (object[schema_name])
          return;
  
      Object.defineProperty(object, schema_name, {
          configurable: false,
          enumerable: true,
          get: function() {
              return this.getHook(schema_name, this.prop_array[index]);
          },
          set: function(value) {
  
              let result = { valid: false };
  
              let val = scheme.parse(value);
  
              scheme.verify(val, result);
  
              if (result.valid && this.prop_array[index] != val) {
                  this.prop_array[index] = this.setHook(schema_name, val);
                  this.scheduleUpdate(schema_name);
                  this._changed_ = true;
              }
          }
      });
  }
docs: This is used by Model to create custom property getter and setters on non-ModelContainerBase and non-Model properties of the Model constructor.
  @protected
  @memberof module:wick~internals.model