docs: function deepExtend(child, parent, options) { 
    
    var options = options || {}
      , child_copy = undefined
      ;
  
    for (var prop in parent) {
    
      //ignore all `undefined` and equal props
      if (typeof parent[prop] !== 'undefined' && parent[prop] !== child[prop] ) {
        
        var dst;
        
        if (options.copyOnWrite) {
          
          child_copy = child_copy || extend({}, child);
          dst = child_copy;
        
        } else {
          dst = child;
        }
      
        //if the current prop is an object, and is not `null` we recurse
        if (typeof parent[prop] === 'object' 
        &&  parent[prop] !== null 
        &&  !Array.isArray(parent[prop])
        &&  typeof parent[prop] === typeof dst[prop]
        )
        {        
          
          dst[prop] = dst[prop] || new parent[prop].constructor();
          dst[prop] = arguments.callee(dst[prop], parent[prop], options);
        
        } else {
          
          //
          // if the prop is *not* an object (or is null)
          // copy it in the child if it doesn't already exists
          //  
          
          if (typeof parent[prop] === 'object' 
          &&  parent[prop] !== null 
          &&  Array.isArray(parent[prop])
          )
          { 
            
            if ( !Array.isArray(dst[prop]) && 
                (   typeof dst[prop] === 'undefined' 
                ||  dst[prop] === null 
                ||  options.overwrite === true
                )
            ){
              
              dst[prop] = [];
            
            }
                
            if (Array.isArray(dst[prop])) {
            
              for (var i = 0, ii = parent[prop].length; i < ii; i++) {
                
                dst[prop].push(arguments.callee({}, parent[prop][i], options));
              
              }
              
            }
            
          } else {
            
            dst[prop] = (!options.overwrite && typeof dst[prop] !== 'undefined' ? dst[prop] : parent[prop]);
          
          }
        
        }
      
      }
    
    }
  
    return child_copy || child;
  
  }