function processSetting(parentFieldset, extension)
        {
            var descriptor = extension.descriptor();
            var experimentName = descriptor["experiment"];
            if (experimentName && !Runtime.experiments.isEnabled(experimentName))
                return;

            if (descriptor["settingType"] === "custom") {
                extension.instancePromise().then(appendCustomSetting).done();
                return;
            }

            var uiTitle = WebInspector.UIString(descriptor["title"]);
            var settingName = descriptor["settingName"];
            var setting = WebInspector.settings[settingName];
            var settingControl = createSettingControl.call(this, uiTitle, setting, descriptor);
            if (settingName) {
                var childSettings = childSettingExtensionsByParentName.get(settingName);
                if (childSettings.size) {
                    var fieldSet = WebInspector.SettingsUI.createSettingFieldset(setting);
                    settingControl.appendChild(fieldSet);
                    childSettings.valuesArray().forEach(function(item) { processSetting.call(this, fieldSet, item); }, this);
                }
            }
            appendAsChild(settingControl);

            /**
             * @param {!Object} object
             */
            function appendCustomSetting(object)
            {
                var uiSettingDelegate = /** @type {!WebInspector.UISettingDelegate} */ (object);
                var element = uiSettingDelegate.settingElement();
                if (element)
                    appendAsChild(element);
            }

            /**
             * @param {!Object} settingControl
             */
            function appendAsChild(settingControl)
            {
                (parentFieldset || sectionElement).appendChild(/** @type {!Element} */ (settingControl));
            }
        }
@param {?Element} parentFieldset
@param {!Runtime.Extension} extension
@this {WebInspector.GenericSettingsTab}