readSA :: Bool -> Ptr (SafeArray a) -> VARENUM -> IO SAFEARRAY
readSA finaliseMe ptr vt = do
  x <- readVarSAFEARRAY (castPtr ptr) (fromIntegral (fromEnum vt))
  doThenFree free (readSAFEARRAY finaliseMe) (castPtr x)
readSA :: Bool -> Ptr (SafeArray a) -> VARENUM -> IO SAFEARRAY
readSA finaliseMe ptr vt = do
  x <- readVarSAFEARRAY (castPtr ptr) (fromIntegral (fromEnum vt))
  doThenFree free (readSAFEARRAY finaliseMe) (castPtr x)
readSA finaliseMe ptr vt = do
  x <- readVarSAFEARRAY (castPtr ptr) (fromIntegral (fromEnum vt))
  doThenFree free (readSAFEARRAY finaliseMe) (castPtr x)