Define a data property on an object. Will fall back to assignment in an engine without descriptors.
Define a non-enumerable property on an object. Uses Reflect.defineProperty when available, otherwise Object.defineProperty.
Robustly get an object's own property keys (strings and symbols), including non-enumerables when possible
Returns an array of all enumerable symbol properties found directly upon a given object
Shallow clones an object while respecting the original property descriptors