docs: protected boolean processExtensionPopupChildren(PopupMenuUtils.PopupMenuInvokerWrapper invokerWrapper) {
  		if (isOrderChildren()) {
  			PopupMenuUtils.removeAllSeparators(this);
  			List<ExtensionPopupMenuComponent> components = new ArrayList<>();
  			for (int i = 0; i < getMenuComponentCount(); i++) {
  				Component component = getMenuComponent(i);
  				if (PopupMenuUtils.isExtensionPopupMenuComponent(component)) {
  					ExtensionPopupMenuComponent menuComponent = (ExtensionPopupMenuComponent) component;
  					if (menuComponent.getMenuIndex() >= 0) {
  						components.add(menuComponent);
  						remove(i);
  						i--;
  					}
  				}
  			}
  			Collections.sort(components, new Comparator<ExtensionPopupMenuComponent>() {
  
  				@Override
  				public int compare(ExtensionPopupMenuComponent component, ExtensionPopupMenuComponent otherComponent) {
  					if (component.getMenuIndex() > otherComponent.getMenuIndex()) {
  						return 1;
  					} else if (component.getMenuIndex() < otherComponent.getMenuIndex()) {
  						return -1;
  					}
  					return 0;
  				};
  			});
  
  			for (int i = 0; i < components.size(); i++) {
  				ExtensionPopupMenuComponent component = components.get(i);
  				int index = Math.max(component.getMenuIndex(), i);
  				if (index >= getMenuComponentCount()) {
  					add((Component) component);
  				} else {
  					getPopupMenu().insert((Component) component, index);
  				}
  			}
  		}
  
  		boolean childEnable = false;
  		Control.Mode mode = Control.getSingleton().getMode();
  		for (int i = 0; i < getMenuComponentCount(); ++i) {
  			Component menuComponent = getMenuComponent(i);
  			if (PopupMenuUtils.isExtensionPopupMenuComponent(menuComponent)) {
  				ExtensionPopupMenuComponent extensionMenuComponent = (ExtensionPopupMenuComponent) menuComponent;
  				boolean enable = invokerWrapper.isEnable(extensionMenuComponent);
  
  				if (enable && !extensionMenuComponent.isSafe() && mode.equals(Control.Mode.safe)) {
  					menuComponent.setEnabled(false);
  					continue;
  				}
  
  				if (enable) {
  					childEnable = true;
  					if (extensionMenuComponent.precedeWithSeparator()) {
  						if (PopupMenuUtils.insertSeparatorIfNeeded(this, i)) {
  							i++;
  						}
  					}
  				}
  				menuComponent.setVisible(enable);
  				if (enable && extensionMenuComponent.succeedWithSeparator()) {
  					if (PopupMenuUtils.insertSeparatorIfNeeded(this, i + 1)) {
  						i++;
  					}
  				}
  			}
  		}
  
  		PopupMenuUtils.removeTopAndBottomSeparators(this);
  
  		return childEnable;
  	}