void () { if (myChildren != null) { return; } List<Configurable> configurables = new SmartList<>(); configurables.add(new DataViewsConfigurable()); List<DebuggerConfigurableProvider> providers = DebuggerConfigurableProvider.EXTENSION_POINT.getExtensionList(); computeMergedConfigurables(providers, configurables); for (DebuggerConfigurableProvider provider : providers) { configurables.addAll(provider.getConfigurables(DebuggerSettingsCategory.ROOT)); } MergedCompositeConfigurable mergedGeneralConfigurable = computeGeneralConfigurables(providers); if (configurables.isEmpty() && mergedGeneralConfigurable == null) { myRootConfigurable = null; myChildren = EMPTY_CONFIGURABLES; } else if (configurables.size() == 1) { Configurable firstConfigurable = configurables.get(0); if (mergedGeneralConfigurable == null) { myRootConfigurable = firstConfigurable; myChildren = EMPTY_CONFIGURABLES; } else { Configurable[] mergedArray = ArrayUtil.append(mergedGeneralConfigurable.children, firstConfigurable); myRootConfigurable = new MergedCompositeConfigurable(getId(), getDisplayName(), null, mergedArray); myChildren = firstConfigurable instanceof SearchableConfigurable.Parent ? ((Parent)firstConfigurable).getConfigurables() : EMPTY_CONFIGURABLES; } } else { myChildren = configurables.toArray(new Configurable[0]); myRootConfigurable = mergedGeneralConfigurable; } }