code: function define(value, key, src, propHash){
    var inSrc = key in src
      , isDescriptor = descriptors.isDescriptor(value)
      , isRequired = descriptors.isRequired(value)
      , prev;
  
    if (isRequired && inSrc) 
      return
  
    if ( !isRequired ) {
      if ( isDescriptor) {
        prev = (propHash[key] || []).splice(0) //assume this descriptor is resolving all of the conflicts
        return define(value.resolve.call(src, key, prev), key, src, propHash)
      }
      else
        add(propHash, key, value)
    }
  
    Object.defineProperty(src, key, {
      enumerable: true, 
      writable: true, 
      configurable: true,
      value: value
    })
  }
docs: adds a property to the src object or expands the value if it is a decorator
  @param  {*} value
  @param  {string} key
  @param  {object} src