docs: @Nonnull
    public static <T extends IHCList <T, HCLI>> T createRenderedMenu (@Nonnull final ILayoutExecutionContext aLEC,
                                                                      @Nonnull final ISupplier <T> aFactory,
                                                                      @Nonnull final DefaultTreeItemWithID <String, IMenuObject> aStartTreeItem,
                                                                      @Nonnull final IMenuItemRenderer <T> aRenderer,
                                                                      @Nonnull final ICommonsMap <String, Boolean> aDisplayMenuItemIDs)
    {
      ValueEnforcer.notNull (aFactory, "Factory");
  
      final NonBlockingStack <T> aNodeStack = new NonBlockingStack <> ();
      aNodeStack.push (aFactory.get ());
      TreeVisitor.visitTreeItem (aStartTreeItem,
                                 new MenuRendererCallback <> (aLEC,
                                                              aFactory,
                                                              aNodeStack,
                                                              aRenderer,
                                                              aDisplayMenuItemIDs));
      if (aNodeStack.size () != 1)
        throw new IllegalStateException ("Stack is inconsistent: " + aNodeStack);
  
      // Return the remaining UL
      return aNodeStack.pop ();
    }