function2 :: Member
          -> [VarIn]
          -> ArgOut a1 -> ArgOut a2
          -> IDispatch i
          -> IO (a1,a2)
function2 member args argout1 argout2 obj = do
   dispid <- obj # getMemberID member
   catchMethError member (functionID2 dispid args argout1 argout2 obj)
function2 :: Member
          -> [VarIn]
          -> ArgOut a1 -> ArgOut a2
          -> IDispatch i
          -> IO (a1,a2)
function2 member args argout1 argout2 obj = do
   dispid <- obj # getMemberID member
   catchMethError member (functionID2 dispid args argout1 argout2 obj)
function2 member args argout1 argout2 obj = do
   dispid <- obj # getMemberID member
   catchMethError member (functionID2 dispid args argout1 argout2 obj)