Let me thank you for this as a bystander.
I have been quite confused myself about ‘$setmulti’.
This is the explanation about it in the documentation:
$setmulti(name, value, separator="; ")
Sets the variable name to value, using the separator (or "; " if not passed) to coerce the value back into a proper multi-valued tag. This can be used to operate on multi-valued tags as a string, and then set them back as proper multi-valued tags, e.g. …
Reading that, I assumed that it would create a multivalue tag, with ‘;’ as a seperator.
But reading your answer (and checking it with Picard), ‘$set’ will create an actual multivalued tag with ‘;’ as seperator.
And '$setmulti" does not create ‘a proper multi-valued tag’ (as it says in the documentation), but it creates separate (multiple) tags?
And the seperator that you can choose to use for $setmulti is not the seperator that gets written, but it’s the seperator that $setmulti will look for to decide where to split and so create the multiple tags?
Is this indeed how it works?