lib/obj.js
function mcopy() {
  let zargs = _.toArray(arguments)
  zargs.unshift({})
  return _.merge.apply(_, zargs)
}
function mcopy() {
  let zargs = _.toArray(arguments)
  zargs.unshift({})
  return _.merge.apply(_, zargs)
}
same as _.merge but does not alter first arg object merge WILL NOT overwrite undefined values (from right to left)