Automation Parameter for Preset Change

The code, which caused the problem is in my first post within this thread:
ProgramChangeParameterId = programlist_info.id;
during reading from the unitInfo for that plugin gives a different result, than the code when enumerating through the parameters
if (isProgramChange) { ProgramChangeParameterId = info.id; }

I used uinfo.programListId as automation parameter id (as seen in the first post in thisthread) cause I found it here
uinfo.programListId = kProgramChangeParamID;
in this post
And also in the mentioned sample mdaBaseProcessor.cpp its used this way: uinfo.programListId = kPresetParam;
Did i misunderstand something? So is there a difference between MIDI program change and Automation Parameter Program Change?
Some plugins call their presets “MIDI Programs”.
So please tell me, what is the correct way ?
I also contacted the developer of that plugin to clarify this.