functionID2 :: DISPID
            -> [VarIn]
            -> ArgOut a1 -> ArgOut a2
            -> IDispatch i
            -> IO (a1,a2)
functionID2 dispid args (varin1,argres1) (varin2,argres2) obj = do
   p <- obj # invokeFunction dispid args [varin1,varin2]
   unmarshallVariants2 argres1 argres2 p
functionID2 :: DISPID
            -> [VarIn]
            -> ArgOut a1 -> ArgOut a2
            -> IDispatch i
            -> IO (a1,a2)
functionID2 dispid args (varin1,argres1) (varin2,argres2) obj = do
   p <- obj # invokeFunction dispid args [varin1,varin2]
   unmarshallVariants2 argres1 argres2 p
functionID2 dispid args (varin1,argres1) (varin2,argres2) obj = do
   p <- obj # invokeFunction dispid args [varin1,varin2]
   unmarshallVariants2 argres1 argres2 p