code: function props(dest, pds, src, isrc, ndflt, nm, nmsrc) {
      var asrt = nm && src;
      if (asrt) assert.ok(dest, 'no ' + nm);
      var i = pds.length;
      while (i--) {
          if (asrt) prop(dest, pds[i], src, isrc, ndflt, nm, nmsrc);
          else prop(dest, pds[i], src, isrc, ndflt);
      }
      return dest;
  }
docs: Assigns property values on a destination object or asserts that the destination object properties are within the defined boundaries when a source object is passed along with its name
  
  @arg {Object} dest the object to assign properties to or assert properties for
  @arg {Object[]} pds property definition objects that determine which properties will be assigned or asserted
  @arg {String} pds[].n the name of the property that will be assigned or asserted
  @arg {*} [pds[].d] a default value that will be used when there is no property defined on the source object (assignment only)
  @arg {Boolean} [pds[].i] true to inherit value from the passed source object (assignment only)
  @arg {Number} [pds[].l] when the property is a number, the lowest acceptable numeric value for the property (assignment only)
  @arg {Number} [pds[].h] when the property is a number, the highest acceptable numeric value for the property (assignment only)
  @arg {Object[]} [pd.r] a range of valid values that the property value will be restricted to (assignment only)
  @arg {*} [pd.c] a reference object that will be used to constrain the destination property to (uses typeof and Array.isArray- assignment only)
  @arg {Object} [src] source object that will be used for default property values or when assertion will be used for equallity
  @arg {Boolean} [isrc] true to always inherit from the source object properties when the value is not undefined, regardless of property definition (assignment only)
  @arg {String} [nm] a name used for the object (assertion only)
  @arg {String} [nmsrc] a name used for the source object (assertion only)
  @returns {Object} the passed object