diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,10 @@
 # Revision history for language-Modula2
 
+## 0.1.4 -- 2023-09-26
+
+* Using `OverloadedRecordDot` (GHC >= 9.2) instead of field accessors unsupported by GHC 9.6
+* Bumped the upper bounds of `rank2classes`, `transformers`, and `template-haskell`
+
 ## 0.1.3 -- 2022-10-23
 
 * Using `autochain` and new imports from grammatical-parsers-0.7
diff --git a/language-Modula2.cabal b/language-Modula2.cabal
--- a/language-Modula2.cabal
+++ b/language-Modula2.cabal
@@ -1,7 +1,7 @@
 cabal-version:       2.4
 
 name:                language-Modula2
-version:             0.1.3
+version:             0.1.4
 synopsis:            Parser, pretty-printer, and more for the Modula-2 programming language
 description:
    The library and the executable supports two versions of the Modula-2 programming language: as described by the
@@ -24,10 +24,10 @@
                        Language.Modula2.ISO.Abstract, Language.Modula2.ISO.AST,
                        Language.Modula2.ISO.Grammar, Language.Modula2.ISO.Pretty, Language.Modula2.ISO.ConstantFolder
   -- other-modules:
-  build-depends:       base >= 4.7 && < 5, text < 3, containers >= 0.5 && < 1.0, filepath < 1.5, directory < 1.4,
-                       parsers >= 0.12.7 && < 0.13, input-parsers >= 0.2.2 && < 0.4, prettyprinter >= 1.2.1 && < 1.7,
-                       rank2classes >= 1.3 && < 1.5, grammatical-parsers >= 0.7 && < 0.8, deep-transformations == 0.2.*,
-                       template-haskell >= 2.11 && < 2.20,
+  build-depends:       base >= 4.16 && < 5, text < 3, containers >= 0.5 && < 1.0, filepath < 1.5, directory < 1.4,
+                       parsers >= 0.12.7 && < 0.13, input-parsers >= 0.2.2 && < 0.4, prettyprinter >= 1.2.1 && < 1.8,
+                       rank2classes >= 1.3 && < 1.6, grammatical-parsers >= 0.7 && < 0.8, deep-transformations == 0.2.*,
+                       template-haskell >= 2.11 && < 2.21,
                        language-oberon >= 0.3 && < 0.4
   hs-source-dirs:      src
   default-language:    Haskell2010
diff --git a/src/Language/Modula2/ConstantFolder.hs b/src/Language/Modula2/ConstantFolder.hs
--- a/src/Language/Modula2/ConstantFolder.hs
+++ b/src/Language/Modula2/ConstantFolder.hs
@@ -1,6 +1,6 @@
 {-# LANGUAGE DataKinds, DeriveGeneric, DuplicateRecordFields, FlexibleContexts, FlexibleInstances,
              InstanceSigs,
-             MultiParamTypeClasses, OverloadedStrings, RankNTypes,
+             MultiParamTypeClasses, OverloadedRecordDot, OverloadedStrings, RankNTypes,
              ScopedTypeVariables, TypeApplications, TypeFamilies, UndecidableInstances #-}
 
 -- | The main export of this module is the function 'foldConstants' that folds the constants in a Modula-2 AST using
@@ -76,10 +76,9 @@
               => Environment l -> AST.Module l l Placed Placed -> AST.Module l l Placed Placed
 foldConstants predef aModule =
    snd $ getMapped
-   $ folded (syn (Transformation.apply (Auto ConstantFold) ((0, Trailing [], 0), Auto ConstantFold Deep.<$> aModule)
-                  `Rank2.apply`
-                  Inherited (InhCF predef undefined))
-             :: SynCFMod' l (AST.Module l l))
+   $ (syn (Transformation.apply (Auto ConstantFold) ((0, Trailing [], 0), Auto ConstantFold Deep.<$> aModule)
+           `Rank2.apply`
+           Inherited (InhCF predef undefined))).folded
 
 newtype Modules l f' f = Modules {getModules :: Map AST.Ident (f (AST.Module l l f' f'))}
 
@@ -125,12 +124,10 @@
 
 instance Ord (Abstract.QualIdent l) => Attribution (Auto ConstantFold) (Modules l) Sem Placed where
    attribution _ (_, Modules self) (Inherited inheritance, Modules ms) =
-     (Synthesized SynCFRoot{modulesFolded= Modules (pure . snd . getMapped . foldedModule . syn <$> ms)},
+     (Synthesized SynCFRoot{modulesFolded= Modules (pure . snd . getMapped . (.folded) . syn <$> ms)},
       Modules (Map.mapWithKey moduleInheritance self))
      where moduleInheritance name mod = Inherited InhCF{env= rootEnv inheritance <> foldMap (moduleEnv . syn) ms,
                                                         currentModule= name}
-           foldedModule :: SynCFMod' l (AST.Module l l) -> Mapped Placed (AST.Module l l Placed Placed)
-           foldedModule = folded
 
 instance (Abstract.Modula2 l, Abstract.Nameable l, k ~ Abstract.QualIdent l, Ord k, Show k,
           v ~ Abstract.Value l l Placed Placed,
@@ -188,7 +185,7 @@
       SynCFExp{folded= Mapped (pos, Abstract.set t (getMapped . folded' . syn <$> getZipList elements)),
                foldedValue= Nothing}
    synthesis _ (pos, _) _ (AST.Read des) =
-      case (designatorValue (syn des), getMapped $ folded (syn des :: SynCFDesignator l))
+      case (designatorValue (syn des), getMapped $ (syn des).folded)
       of (Just val, _) -> Oberon.literalSynthesis val
          (Nothing, (pos', des')) -> SynCFExp{folded= Mapped (pos, Abstract.read (pos', des')),
                                              foldedValue= Nothing}
diff --git a/src/Language/Modula2/ISO/ConstantFolder.hs b/src/Language/Modula2/ISO/ConstantFolder.hs
--- a/src/Language/Modula2/ISO/ConstantFolder.hs
+++ b/src/Language/Modula2/ISO/ConstantFolder.hs
@@ -1,5 +1,5 @@
 {-# LANGUAGE DataKinds, DuplicateRecordFields, FlexibleContexts, FlexibleInstances,
-             MultiParamTypeClasses, OverloadedStrings, RankNTypes,
+             MultiParamTypeClasses, OverloadedRecordDot, OverloadedStrings, RankNTypes,
              ScopedTypeVariables, TypeApplications, TypeFamilies, UndecidableInstances #-}
 
 -- | The main export of this module is the function 'foldConstants' that folds the constants in an ISO Modula-2 AST
@@ -80,10 +80,9 @@
               => Environment l -> AST.Module l l Placed Placed -> AST.Module l l Placed Placed
 foldConstants predef aModule =
    snd $ getMapped
-   $ folded (syn (Transformation.apply (Auto ConstantFold) ((0, Trailing [], 0), Auto ConstantFold Deep.<$> aModule)
-                  `Rank2.apply`
-                  Inherited (InhCF predef undefined))
-             :: SynCFMod' l (AST.Module l l))
+   $ (syn (Transformation.apply (Auto ConstantFold) ((0, Trailing [], 0), Auto ConstantFold Deep.<$> aModule)
+           `Rank2.apply`
+           Inherited (InhCF predef undefined))).folded
 
 newtype Modules l f' f = Modules {getModules :: Map AST.Ident (f (AST.Module l l f' f'))}
 
@@ -128,12 +127,10 @@
 
 instance Ord (Abstract.QualIdent l) => Attribution (Auto ConstantFold) (Modules l) Sem Placed where
    attribution _ (_, Modules self) (Inherited inheritance, Modules ms) =
-     (Synthesized SynCFRoot{modulesFolded= Modules (pure . snd . getMapped . foldedModule . syn <$> ms)},
+     (Synthesized SynCFRoot{modulesFolded= Modules (pure . snd . getMapped . (.folded) . syn <$> ms)},
       Modules (Map.mapWithKey moduleInheritance self))
      where moduleInheritance name mod = Inherited InhCF{env= rootEnv inheritance <> foldMap (moduleEnv . syn) ms,
                                                         currentModule= name}
-           foldedModule :: SynCFMod' l (AST.Module l l) -> Mapped Placed (AST.Module l l Placed Placed)
-           foldedModule = folded
 
 instance (Abstract.Nameable l, Ord (Abstract.QualIdent l),
           Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l Sem Sem) ~ SynCFMod' l (Abstract.Declaration l l),
