createResolvedOptions = function (props, hiddenObject, func = null) {
        const resolved = _.create();
        _.forEach(props, function (prop) {
            if (func !== null && func(prop, resolved) === true) {
                // the callback returned true, which means this property was handled and we can go to the next one
                return;
            }

            if (typeof hiddenObject[prop] !== "undefined") {
                resolved[prop] = hiddenObject[prop];
            }
        });

        return _.setPrototypeOf(resolved, platform.Object.prototype);
    }
Creates an object to be returned out of resolvedOptions() methods that avoids being tainted by Object.prototype

@param {String[]} props The list of properties to extract from hiddenObject and add to the final resolved options
@param {Object} hiddenObject The hiddenObject of the calling constructor that contains values for each prop in props
@param {Function} func An optional custom function(prop, resolved) run for each prop; it should return true when
it handles a property itself. If it does not return true, the default logic will be used.