readVariants4 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d
                      -> VARIANT  -> IO (a,b,c,d)
readVariants4 f g h i p
      = do z <- i p
           y <- h (p `addNCastPtr` sizeofVARIANT)
           x <- g (p `addNCastPtr` (2*sizeofVARIANT))
           w <- f (p `addNCastPtr` (3*sizeofVARIANT))
           return (w,x,y,z)
readVariants4 :: ArgRes a -> ArgRes b -> ArgRes c -> ArgRes d
                      -> VARIANT  -> IO (a,b,c,d)
readVariants4 f g h i p
      = do z <- i p
           y <- h (p `addNCastPtr` sizeofVARIANT)
           x <- g (p `addNCastPtr` (2*sizeofVARIANT))
           w <- f (p `addNCastPtr` (3*sizeofVARIANT))
           return (w,x,y,z)
readVariants4 f g h i p
      = do z <- i p
           y <- h (p `addNCastPtr` sizeofVARIANT)
           x <- g (p `addNCastPtr` (2*sizeofVARIANT))
           w <- f (p `addNCastPtr` (3*sizeofVARIANT))
           return (w,x,y,z)