functionID6 :: DISPID
            -> [VarIn]
            -> ArgOut a1 -> ArgOut a2 -> ArgOut a3
            -> ArgOut a4 -> ArgOut a5 -> ArgOut a6
            -> IDispatch i
            -> IO (a1,a2,a3,a4,a5,a6)
functionID6 dispid args (varin1,argres1) (varin2,argres2)
                        (varin3,argres3) (varin4,argres4)
                        (varin5,argres5) (varin6,argres6) obj = do
   p <- obj # invokeFunction dispid args [varin1,varin2,varin3,varin4,varin5,varin6]
   unmarshallVariants6 argres1 argres2 argres3 argres4 argres5 argres6 p

--Error reporting:
functionID6 :: DISPID
            -> [VarIn]
            -> ArgOut a1 -> ArgOut a2 -> ArgOut a3
            -> ArgOut a4 -> ArgOut a5 -> ArgOut a6
            -> IDispatch i
            -> IO (a1,a2,a3,a4,a5,a6)
functionID6 dispid args (varin1,argres1) (varin2,argres2)
                        (varin3,argres3) (varin4,argres4)
                        (varin5,argres5) (varin6,argres6) obj = do
   p <- obj # invokeFunction dispid args [varin1,varin2,varin3,varin4,varin5,varin6]
   unmarshallVariants6 argres1 argres2 argres3 argres4 argres5 argres6 p

--Error reporting:
functionID6 dispid args (varin1,argres1) (varin2,argres2)
                        (varin3,argres3) (varin4,argres4)
                        (varin5,argres5) (varin6,argres6) obj = do
   p <- obj # invokeFunction dispid args [varin1,varin2,varin3,varin4,varin5,varin6]
   unmarshallVariants6 argres1 argres2 argres3 argres4 argres5 argres6 p

--Error reporting: