inIDispatch :: ArgIn (IDispatch a)
inIDispatch d p
  | isNullInterface d = return ()
  | otherwise         = do 
                             d # addRef
                             writeVarDispatch (castIface d) p
inIDispatch :: ArgIn (IDispatch a)
inIDispatch d p
  | isNullInterface d = return ()
  | otherwise         = do 
                             d # addRef
                             writeVarDispatch (castIface d) p
inIDispatch d p
  | isNullInterface d = return ()
  | otherwise         = do 
                             d # addRef
                             writeVarDispatch (castIface d) p