Bug in Param_String.SetPersistentData(IEnumerable of GH_String data) method or how to clear the Param_String's persistent data from code?

Hi, I made a specialized class Param_Enum : Param_String which extends the basic gh string parameter with named value functionality like the Param_Integer has. The whole thing is basically this:

public class EnumParam : Param_String
{
    public List<Enum> NamedValues { get; private set; } = new List<Enum>();
    public override void AppendAdditionalMenuItems(ToolStripDropDown menu)
    {
        base.AppendAdditionalMenuItems(menu);
        foreach (var item in NamedValues)
        {
            var menuItem = new ToolStripMenuItem(item.ToString(), null, (o, e) =>
             {
                 this.SetPersistentData(new GH_String[]{new GH_String(item.ToString())}.AsEnumerable());
                 this.ExpireSolutionTopLevel(true);
             });
            if (PersistentDataCount == 1 && PersistentData.First().Value == item.ToString())
                menuItem.Checked = true;
            menu.Items.Add(menuItem);
        }
    }
    public override Guid ComponentGuid => new Guid("69aa4179-d676-4d4b-9288-29bb79a4edb4");
}

Which works almost perfectly, BUT I have not found a way to clear out the persistent data of the base Param_String from code.
The docs say that the titular method should clear out the preexsisting data, before setting the new ones, but is simply does not clear it.
And of course, the even more clean fix: please give us a protected setter, or just clearer method.

I am aware that I can circumvent this with reflection, but that is obviously unsafe in the longrun. Is there some other better method that I am missing?