SAFEARRAY.ByReference implements AutoClosable (via Closable), so apparently try-with-resources should be used to correctly free its system resources.
VARIANT and BSTR do neither implement AutoClosable nor Closable, but have custom methods like VARIANT.clear() to cleanup manually.
So what is the best practice with VARIANT and BSTR: Freeing their system resources manually, or simply letting the GC / Finanlizer do its job by not doing anything?