function get_all_property_descriptors(prototype) {
    // Retrieve initial property descriptors
    const descriptors = Object.getOwnPropertyDescriptors(prototype);

    // Determine if we have a parent prototype with a custom name
    const parent = Object.getPrototypeOf(prototype);
    if (parent && parent.constructor.name !== 'Object') {
        // Merge and return property descriptors along with parent prototype
        return Object.assign(descriptors, get_all_property_descriptors(parent));
    }

    // Return property descriptors
    return descriptors;
}
Returns all property descriptors of an Object including extended prototypes.

@param {Object} prototype