deepFillIn (dest, source) {
    if (source) {
      utils.forOwn(source, function (value, key) {
        if (isPrototypePolluted(key)) return
        const existing = dest[key]
        if (isPlainObject(value) && isPlainObject(existing)) {
          utils.deepFillIn(existing, value)
        } else if (!Object.hasOwnProperty.call(dest, key) || dest[key] === undefined) {
          dest[key] = value
        }
      })
    }
    return dest
  }
Recursively shallow fill in own enumerable properties from `source` to
`dest`.

@example
import { utils } from 'js-data';
const a = { foo: { bar: 'baz' }, beep: 'boop' };
const b = { beep: 'bip' };
utils.deepFillIn(b, a);
console.log(b); // {"foo":{"bar":"baz"},"beep":"bip"}

@method utils.deepFillIn
@param {object} dest The destination object.
@param {object} source The source object.
@see utils.fillIn
@see utils.deepMixIn
@since 3.0.0