- * @param {Object} obj
- * @param {String} name
- * @param {() => {*}} initializer
- * @param {Object=} descriptor
- * @param {Boolean} descriptor.configurable
- * @param {Boolean} descriptor.enumerable
- * @param {Boolean} descriptor.writable
+ * If a lazy property is defined on an object which is used as a prototype,
+ * the objectBound flag determines whether the lazy initializer will be
+ * invoked just once and set the property value on the original prototype
+ * object, or for any inherited object and set the property on that object.
+ * The objectBound flag also controls the 'this' object of the initializer
+ * when called.
+ * @param {object} obj object
+ * @param {string} name property name
+ * @param {Function} initializer function which returns value to set on property upon first access
+ * @param {PropertyDescriptor=} descriptor optional descriptor
+ * @param {boolean=} objectBound bind initializer to obj
+ * @returns {object} obj with lazy property