CreateInstanceWithArguments() vs. X.Y.Z.create(...)?

Habe eine kleine Verständnisfrage:

Kontext: LO Calc 7.1.4.2 / Basic

Wenn ich einen RegEx-Service benötige, dann erzeuge ich mir den mit
CreateUnoService("com.sun.star.util.TextSearch")
… funktioniert.

Was entsprechend Andrew P. “Useful Macro Information” wohl eine Kurzform für
GetProcessServiceManager().createInstance("com.sun.star.util.TextSearch")
ist (habe ich jetzt aber nicht ausprobiert).

Wenn man aber einen Konstruktor mit Argumenten ausführen muss (z.B. für eine EnumerableMap), dann geht das mit
GetProcessServiceManager().createInstanceWithArguments(..., ...)
und da kommt jetzt meine Frage bzw. mein Problem.
In dem folgenden Beispiel führt das createInstanceWithArguments() zu der gezeigten Fehlermeldung.

sub test_Map_2

Dim oMap as Object
Dim oEnum as Object
Dim key as String
Dim val as Variant

Dim oManager as Object
oManager = GetProcessServiceManager()
oMap = oManager.createInstanceWithArguments(“com.sun.star.container.EnumerableMap”, Array(“string”, “any”))
’ BASIC runtime error.
’ An exception occurred
’ Type: com.sun.star.lang.IllegalArgumentException
’ Message: com.sun.star.uno.Type expected. /home/abuild/rpmbuild/BUILD/libreoffice-7.1.4.2/comphelper/source/container/enumerablemap.cxx:333.

oMap.put(“key1”, 1)

end sub

In

habe ich die Lösung gefunden …

oMap = com.sun.star.container.EnumerableMap.create(“string”, “any”)

an Stelle von createInstanceWithArguments().

Woran erkenne ich bei einem Service (in der Doku, z.B. LibreOffice: EnumerableMap Service Reference), wie ich mir eine Instanz erzeugen muss/kann?
Ich ging davon aus, dass das createInstanceWithArguments() richtig gewesen wäre?!

Grüße
Markus