if (Object.prototype.isPrototypeOf.call(y, p) !== Object.prototype.isPrototypeOf.call(x, p)) {
        return false
      } else if (typeof y[p] !== typeof x[p]) {
        return false
      }