readVariants6 :: ArgRes a1 
              -> ArgRes a2
              -> ArgRes a3
              -> ArgRes a4
              -> ArgRes a5
              -> ArgRes a6
              -> VARIANT
              -> IO (a1,a2,a3,a4,a5,a6)
readVariants6 f1 f2 f3 f4 f5 f6 p
      = do v6 <- f6 p
           v5 <- f5 (p `addNCastPtr` sizeofVARIANT)
           v4 <- f4 (p `addNCastPtr` (2*sizeofVARIANT))
           v3 <- f3 (p `addNCastPtr` (3*sizeofVARIANT))
           v2 <- f2 (p `addNCastPtr` (4*sizeofVARIANT))
           v1 <- f1 (p `addNCastPtr` (5*sizeofVARIANT))
           return (v1,v2,v3,v4,v5,v6)
readVariants6 :: ArgRes a1 
              -> ArgRes a2
              -> ArgRes a3
              -> ArgRes a4
              -> ArgRes a5
              -> ArgRes a6
              -> VARIANT
              -> IO (a1,a2,a3,a4,a5,a6)
readVariants6 f1 f2 f3 f4 f5 f6 p
      = do v6 <- f6 p
           v5 <- f5 (p `addNCastPtr` sizeofVARIANT)
           v4 <- f4 (p `addNCastPtr` (2*sizeofVARIANT))
           v3 <- f3 (p `addNCastPtr` (3*sizeofVARIANT))
           v2 <- f2 (p `addNCastPtr` (4*sizeofVARIANT))
           v1 <- f1 (p `addNCastPtr` (5*sizeofVARIANT))
           return (v1,v2,v3,v4,v5,v6)
readVariants6 f1 f2 f3 f4 f5 f6 p
      = do v6 <- f6 p
           v5 <- f5 (p `addNCastPtr` sizeofVARIANT)
           v4 <- f4 (p `addNCastPtr` (2*sizeofVARIANT))
           v3 <- f3 (p `addNCastPtr` (3*sizeofVARIANT))
           v2 <- f2 (p `addNCastPtr` (4*sizeofVARIANT))
           v1 <- f1 (p `addNCastPtr` (5*sizeofVARIANT))
           return (v1,v2,v3,v4,v5,v6)