_section: Property Utilities This is a collection of utility functions used for handling properties in a platform-safe way. The next major version of ethers will no longer be compatible with ES3, so many of these will be removed in favor of the built-in options available in ES2015 and above. _property: ethers.utils.checkProperties(object, check) => void Checks that //object// only contains properties included in //check//, and throws [INVALID_ARGUMENT](errors--invalid-argument) if not. _property: ethers.utils.deepCopy(anObject) => any Creates a recursive copy of //anObject//. Frozen (i.e. and other known immutable) objects are copied by reference. _property: ethers.utils.defineReadOnly(anObject, name, value) => void Uses the ``Object.defineProperty`` method to set a read-only property on an object. _property: ethers.utils.getStatic(aConstructor, key) => any Recursively check for a static method //key// on an inheritance chain from //aConstructor// to all ancestors. This is used to mimic behaviour in other languages where ``this`` in a static method will also search ancestors. _property: ethers.utils.resolveProperties(anObject) => Promise @ @SRC Retruns a Promise which resolves all child values on //anObject//. _property: ethers.utils.shallowCopy(anObject) => any Returns a shallow copy of //anObject//. This is the same as using ``Object.assign({ }, anObject)``.