inDefaultValue :: VarIn -> ArgIn a -> ArgIn a
inDefaultValue varin_def argin = \ val var -> do
  argin val var
  vt <- readVarEnum var
  case vt of -- to avoid having to define Eq..
    VT_ERROR -> do
      primVARIANTClear var
      varin_def var
    _ -> return ()
inDefaultValue :: VarIn -> ArgIn a -> ArgIn a
inDefaultValue varin_def argin = \ val var -> do
  argin val var
  vt <- readVarEnum var
  case vt of -- to avoid having to define Eq..
    VT_ERROR -> do
      primVARIANTClear var
      varin_def var
    _ -> return ()
inDefaultValue varin_def argin = \ val var -> do
  argin val var
  vt <- readVarEnum var
  case vt of -- to avoid having to define Eq..
    VT_ERROR -> do
      primVARIANTClear var
      varin_def var
    _ -> return ()