diff --git a/src/Language/Haskell/TH/Compat/Data.hs b/src/Language/Haskell/TH/Compat/Data.hs
--- a/src/Language/Haskell/TH/Compat/Data.hs
+++ b/src/Language/Haskell/TH/Compat/Data.hs
@@ -13,10 +13,10 @@
 -- data-type declaration templates for before temaplate-haskell-2.11
 module Language.Haskell.TH.Compat.Data (
   -- * Interfaces to construct data declarations
-  dataD', newtypeD', dataInstD', newtypeInstD',
+  dataD', newtypeD', dataInstD', newtypeInstD', plainTVspecified,
 
   -- * Interfaces to destruct data declarations
-  unDataD, unNewtypeD, unDataInstD, unNewtypeInstD, unInstanceD,
+  unDataD, unNewtypeD, unDataInstD, unNewtypeInstD, unInstanceD, unTyVarBndr,
   ) where
 
 #if MIN_VERSION_template_haskell(2,17,0)
@@ -29,4 +29,10 @@
 import Language.Haskell.TH.Compat.Data.V211
 #else
 import Language.Haskell.TH.Compat.Data.V210
+#endif
+
+#if MIN_VERSION_template_haskell(2,17,0)
+import Language.Haskell.TH.Compat.TyVarBndr.Current
+#else
+import Language.Haskell.TH.Compat.TyVarBndr.V216
 #endif
diff --git a/src/Language/Haskell/TH/Compat/TyVarBndr/Current.hs b/src/Language/Haskell/TH/Compat/TyVarBndr/Current.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Haskell/TH/Compat/TyVarBndr/Current.hs
@@ -0,0 +1,13 @@
+module Language.Haskell.TH.Compat.TyVarBndr.Current (
+  plainTVspecified,
+  unTyVarBndr,
+  ) where
+
+import Language.Haskell.TH (Name, TyVarBndr (..), Specificity (SpecifiedSpec))
+
+plainTVspecified :: Name -> TyVarBndr Specificity
+plainTVspecified n = PlainTV n SpecifiedSpec
+
+unTyVarBndr :: TyVarBndr a -> (Name, Maybe a)
+unTyVarBndr (PlainTV n f) = (n, Just f)
+unTyVarBndr (KindedTV n f _k) = (n, Just f)
diff --git a/src/Language/Haskell/TH/Compat/TyVarBndr/V216.hs b/src/Language/Haskell/TH/Compat/TyVarBndr/V216.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Haskell/TH/Compat/TyVarBndr/V216.hs
@@ -0,0 +1,14 @@
+-- The latest version of applying this module impl is template-haskell-2.16
+module Language.Haskell.TH.Compat.TyVarBndr.V216 (
+  plainTVspecified,
+  unTyVarBndr,
+  ) where
+
+import Language.Haskell.TH (Name, TyVarBndr (..))
+
+plainTVspecified :: Name -> TyVarBndr
+plainTVspecified = PlainTV
+
+unTyVarBndr :: TyVarBndr -> (Name, Maybe a)
+unTyVarBndr (PlainTV n) = (n, Nothing)
+unTyVarBndr (KindedTV n _k) = (n, Nothing)
diff --git a/th-data-compat.cabal b/th-data-compat.cabal
--- a/th-data-compat.cabal
+++ b/th-data-compat.cabal
@@ -1,6 +1,6 @@
 
 name:                th-data-compat
-version:             0.1.2.0
+version:             0.1.3.0
 synopsis:            Compatibility for data definition template of TH
 description:         This package contains wrapped name definitions of
                      data definition template
@@ -12,8 +12,9 @@
 category:            Language
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:           GHC == 9.4.4
-                     , GHC == 9.2.1, GHC == 9.2.2, GHC == 9.2.5
+tested-with:           GHC == 9.6.2
+                     , GHC == 9.4.4, GHC == 9.4.6
+                     , GHC == 9.2.1, GHC == 9.2.2, GHC == 9.2.5, GHC == 9.2.8
                      , GHC == 9.0.1, GHC == 9.0.2
                      , GHC == 8.10.1, GHC == 8.10.2, GHC == 8.10.3, GHC == 8.10.4, GHC == 8.10.5, GHC == 8.10.6, GHC == 8.10.7
                      , GHC == 8.8.1, GHC == 8.8.2, GHC == 8.8.3
@@ -54,6 +55,13 @@
           other-modules:
                             Language.Haskell.TH.Compat.Data.V210
           build-depends:    template-haskell >=2.4 && <2.11
+
+  if impl(ghc >= 9.0)
+      other-modules:
+                          Language.Haskell.TH.Compat.TyVarBndr.Current
+  else
+      other-modules:
+                          Language.Haskell.TH.Compat.TyVarBndr.V216
 
   build-depends:         base <5
 
