code: function CreateModelProperty(object, model, schema_name, index) {
  
      Object.defineProperty(object, schema_name, {
          configurable: false,
          enumerable: true,
          get: function() {
  
              let m = this.prop_array[index];
  
              if (!m) {
                  let address = this.address.slice();
                  address.push(index);
                  m = new model(null, this.root, address);
                  m.par = this;
                  m.prop_name = schema_name;
                  m.MUTATION_ID = this.MUTATION_ID;
                  this.prop_array[index] = m;
              }
  
              return this.getHook(schema_name, m);
          }
      });
  }
docs: This is used by Model to create custom property getter and setters on Model properties of the Model constructor.
  @protected
  @memberof module:wick~internals.model