methodID3 :: DISPID
          -> [VarIn]
          -> ArgOut a1 -> ArgOut a2 -> ArgOut a3
          -> IDispatch i
          -> IO (a1,a2,a3)
methodID3 dispid args (varin1,argres1) (varin2,argres2) (varin3,argres3) obj = do
   p <- obj # invokeMethod dispid args [varin1,varin2,varin3]
   unmarshallVariants3 argres1 argres2 argres3 p
methodID3 :: DISPID
          -> [VarIn]
          -> ArgOut a1 -> ArgOut a2 -> ArgOut a3
          -> IDispatch i
          -> IO (a1,a2,a3)
methodID3 dispid args (varin1,argres1) (varin2,argres2) (varin3,argres3) obj = do
   p <- obj # invokeMethod dispid args [varin1,varin2,varin3]
   unmarshallVariants3 argres1 argres2 argres3 p
methodID3 dispid args (varin1,argres1) (varin2,argres2) (varin3,argres3) obj = do
   p <- obj # invokeMethod dispid args [varin1,varin2,varin3]
   unmarshallVariants3 argres1 argres2 argres3 p