code: function(datum, isClass, result) {
      for (var property in datum) {
        if ((this.ignoreFields.indexOf(property) === -1) &&
            property !== TYPE_FIELD &&
            datum.hasOwnProperty(property))
        {
          var value = datum[property]
          this._defineProperty(isClass ? result.prototype : result, isClass, property, value)
        }
      }
    }
docs: ***************************************************************************
  @method _defineProperties
  @description Iterates over the properties in "datum" and sets them on the "result".
  It should be noted that the values in datum may be atom instantiation
  operators (e.g., '$merge', '$delete', '$propert', etc...).
  @param {Object} datum -- The instance or child class properties to assign
  @param {boolean} isClass -- Whether or not we are instantiating an object of building
  a class
  @param {Object} result -- An instance or constructor depending on whether we are
  instantiating an object or building a class
  @throws {Error}
  @ignore