1. i don't see `idProperty` in this file but if `idProperty` represents the name of a property then it will be a string (or at least it will be coerced to a string when you use it as something like `obj[idProperty]`)
1.  `required` could be any value - it might be a string, it might be `null` it might be `undefined`, it might be an Array or a Date, it might be *any* value.
  * `res == undefined` - i can no longer query for properties that have a `null` or `undefined` value
  * `res.constructor == Boolean` - i don't think you would typically assign the Boolean constructor to a property on any object so checking for it is probably pointless and more than likely not what you're intention is
  * `res.toString()` == required` - this assumes too much about the values of `res` and `required`