code: function custom (properties, property, key, event) {
    if (property === null) {
      properties[key] = null
    } else if (property.val) {
      property.val = parseProperty(property.val)
      var prototype = property.val.prototype
      if (prototype && prototype instanceof Base) {
        if (property.override) {
          properties._overrides = properties._overrides || {}
          properties._overrides[key] = property.override
          properties[key] = Properties
            .createPropertyConstructor(property.val, property.override, true)
          properties[key].override = property.override
          properties[property.override] = properties[key]
        } else {
          this[key] = properties[key] = prototype
          prototype._parent = this
        }
      } else {
        if (property.override) {
          properties[key] = Properties.createPrimitiveProperty(property.override)
        } else {
          properties[key] = Properties.default
        }
        properties[key].call(this, property.val, void 0, void 0, key)
      }
    } else if (key !== '_overrides') {
      if (property.type) {
        let res = this.getType(property, event, key, void 0)
        if (res instanceof Base) {
          properties[key] = Properties
          .createPropertyConstructor(new res.Constructor(property, false, this, key).Constructor, key)
          return
        }
      }
      properties[key] = Properties
        .createPropertyConstructor(new this.Child(property, false, this, key).Constructor, key)
    }
  }
docs: make an easy option to use childconstrucor for val