objectContains = (object, value, compareValues) =>
  ownEnumerableKeys(value).every(k => {
    if (isObject(object[k]) && isObject(value[k]))
      return objectContains(object[k], value[k], compareValues)

    return compareValues(object[k], value[k])
  })
Returns true if the given object contains the value, false
otherwise. The compareValues function must return false to
indicate a non-match.