Need PopupMenu, ShowMenuAsync, ModalComponentManager example or explanation or tutorial

Xenakios on Discord made suggestions and I came up with this example:

class PresetNameAndList : public Component
{
public:
    class  ModalManager : public ModalComponentManager::Callback
    {
    public:
        ModalManager(std::function<void(int)> doStuff_) : doStuff(doStuff_) {}

        void modalStateFinished(int returnValue)
        {
            doStuff(returnValue);
        }

        std::function<void(int)> doStuff;
    };

    PresetNameAndList()
    {
        ScopedPointer<PopupMenu> bassSubMenu = new PopupMenu();
        bassSubMenu->addItem(1, "preset1", true, true);
        bassSubMenu->addItem(2, "preset2", true, false);
        bassSubMenu->addItem(3, "preset3", true, false);
        popupMenu.addSubMenu("BASS", *bassSubMenu, true);

        popupMenu.addSeparator();
        popupMenu.addSectionHeader("Section Header");
        
        ScopedPointer<PopupMenu> leadSubMenu = new PopupMenu();
        leadSubMenu->addItem(4, "preset1", true, true);
        leadSubMenu->addItem(5, "preset2", true, false);
        leadSubMenu->addItem(6, "preset3", true, false);
        popupMenu.addSubMenu("LEAD", *leadSubMenu, true);
    };
    ~PresetNameAndList() = default;

protected:
    void mouseDown(const MouseEvent & e)
    {
        popupMenu.showMenuAsync(PopupMenu::Options(), new ModalManager([this](int choice)
        {
            // do work here
        }));
    }

    PopupMenu popupMenu;
};