Order of groups in AudioProcessorValueTreeState::ParameterLayout

I’m trying to port our plugin to the new AudioProcessorValueTreeState's way of dealing with parameter creation. Our plugin is a drum sampler with 16 pads that each have several parameters. This is why i was really looking forward to add parameter groups and saving our users the hassle of having to scroll through a flat list of 16 * 8 parameters.
It seems however that no matter what i try i can’t make the groups appear in an ordered way in Logic (See attached screenshot). This i think makes it even more confusing and less usable than a long flat list. Parameters inside groups seem to be ordered lexically by name, which is ok.
Did anyone experience the same and find a work-around?

EDIT: The code is something like this:

    AudioProcessorValueTreeState::ParameterLayout layout;
    [...]
    for(auto slot = 0; slot < VoiceDispatcher::getNumSlots(); slot++)
    {
        auto grp = std::make_unique<AudioProcessorParameterGroup>(letter,
            letter + " - Slot #" + String(slot + 1), letter);

        auto tuningParamId = ParameterIds::idForSlot(slot, ParameterIds::Tuning);
        auto tuningParam = std::make_unique<AudioParameterFloat>(tuningParamId,
            "Zebra", parameterRange, 0.0f);

        auto muteParamId = ParameterIds::idForSlot(slot, ParameterIds::Mute);
        auto muteParam = std::make_unique<AudioParameterBool>(muteParamId,
                                                              "Mute", false);

        auto soloParamId = ParameterIds::idForSlot(slot, ParameterIds::Solo);
        auto soloParam = std::make_unique<AudioParameterBool>(soloParamId,
                                                              "Solo", false);

        grp->addChild(std::move(tParam));
        grp->addChild(std::move(muteParam));
        grp->addChild(std::move(soloParam));

        layout.add(std::move(grp));
    }

i see … that is indeed frustrating … thanks!