docs: function customizer(destination, source) {
    // If we're not working with a plain object, copy the value as is
    // If source is an array, for instance, it will replace destination
    if (!isPlain(source)) {
      return source;
    }
  
    // If the new value is a plain object but the first object value is not
    // we need to create a new object for the first object to merge with.
    // This makes it consistent with how merge() works by default
    // and also protects from later changes the to first object affecting
    // the second object's values.
    if (!isPlain(destination)) {
      return mergeOptions(source);
    }
  }