Define multiple non-enumerable properties at once. Use
Object.defineProperty when available; falls back to standard
assignment in older engines. Existing properties are not
overridden. Accepts a map of property names to a predicate
that, when true, force-overrides.