function4 :: Member
          -> [VarIn]
          -> ArgOut a1 -> ArgOut a2 -> ArgOut a3
          -> ArgOut a4
          -> IDispatch i
          -> IO (a1,a2,a3,a4)
function4 member args argout1 argout2 argout3 argout4 obj = do
   dispid <- obj # getMemberID member
   catchMethError member (functionID4 dispid args argout1 argout2 argout3 argout4 obj)
function4 :: Member
          -> [VarIn]
          -> ArgOut a1 -> ArgOut a2 -> ArgOut a3
          -> ArgOut a4
          -> IDispatch i
          -> IO (a1,a2,a3,a4)
function4 member args argout1 argout2 argout3 argout4 obj = do
   dispid <- obj # getMemberID member
   catchMethError member (functionID4 dispid args argout1 argout2 argout3 argout4 obj)
function4 member args argout1 argout2 argout3 argout4 obj = do
   dispid <- obj # getMemberID member
   catchMethError member (functionID4 dispid args argout1 argout2 argout3 argout4 obj)