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