convertArgs (RecCon rec) ty = do
  tyss <- for (unLoc rec) $ \lfield -> case unLoc lfield of
    -- We must be careful to copy the type when multiple fields @fds@ are under
    -- the same signature @t@
    ConDeclField { cd_fld_names = fds, cd_fld_type = t } -> do
      ty <- convertLType t
      pure (fds $> ty)
#if __GLASGOW_HASKELL__ >= 806
    XConDeclField v -> noExtCon v
#endif
  pure (foldr Arrow ty (concat tyss))
convertArgs (RecCon rec) ty = do
  tyss <- for (unLoc rec) $ \lfield -> case unLoc lfield of
    -- We must be careful to copy the type when multiple fields @fds@ are under
    -- the same signature @t@
    ConDeclField { cd_fld_names = fds, cd_fld_type = t } -> do
      ty <- convertLType t
      pure (fds $> ty)
#if __GLASGOW_HASKELL__ >= 806
    XConDeclField v -> noExtCon v
#endif
  pure (foldr Arrow ty (concat tyss))
convertArgs (RecCon rec) ty = do
  tyss <- for (unLoc rec) $ \lfield -> case unLoc lfield of
    -- We must be careful to copy the type when multiple fields @fds@ are under
    -- the same signature @t@
    ConDeclField { cd_fld_names = fds, cd_fld_type = t } -> do
      ty <- convertLType t
      pure (fds $> ty)
#if __GLASGOW_HASKELL__ >= 806
    XConDeclField v -> noExtCon v
#endif
  pure (foldr Arrow ty (concat tyss))