diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,12 @@
 # Revision history for patch
 
+## 0.0.8.3
+
+* Add support for GHC 9.8 and 9.10
+
+* Replace partial `Map.lookup` with proper custom error for internal error.
+  (This would make debugging a bug in the implementation easier.)
+
 ## 0.0.8.2
 
 * Add support for GHC 9.6
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # patch
 
-[![Haskell](https://img.shields.io/badge/language-Haskell-orange.svg)](https://haskell.org) [![Hackage](https://img.shields.io/hackage/v/patch.svg)](https://hackage.haskell.org/package/patch) [![Hackage CI](https://matrix.hackage.haskell.org/api/v2/packages/patch/badge)](https://matrix.hackage.haskell.org/#/package/patch) [![Travis CI](https://api.travis-ci.org/reflex-frp/patch.svg?branch=develop)](https://travis-ci.org/reflex-frp/patch) [![BSD3 License](https://img.shields.io/badge/license-BSD3-blue.svg)](https://github.com/reflex-frp/patch/LICENSE)
+[![Haskell](https://img.shields.io/badge/language-Haskell-orange.svg)](https://haskell.org) [![Hackage](https://img.shields.io/hackage/v/patch.svg)](https://hackage.haskell.org/package/patch) [![BSD3 License](https://img.shields.io/badge/license-BSD3-blue.svg)](https://github.com/reflex-frp/patch/LICENSE)
 
 Data structures for describing changes to other data structures.
 
diff --git a/patch.cabal b/patch.cabal
--- a/patch.cabal
+++ b/patch.cabal
@@ -1,114 +1,123 @@
-Name: patch
-Version: 0.0.8.2
-Synopsis: Data structures for describing changes to other data structures.
-Description:
-  Data structures for describing changes to other data structures.
-  .
-  In this library, a patch is something which can be applied, analogous to a
-  function, and which distinguishes returning the argument it was provided from
-  returning something else.
-License: BSD3
-License-file: LICENSE
-Author: Ryan Trinkle
-Maintainer: maintainer@obsidian.systems
-Stability: Experimental
-Category: FRP
-Build-type: Simple
-Cabal-version: >=1.10
-homepage: https://obsidian.systems
-bug-reports: https://github.com/reflex-frp/patch/issues
+cabal-version:      >=1.10
+name:               patch
+version:            0.0.8.3
+license:            BSD3
+license-file:       LICENSE
+maintainer:         maintainer@obsidian.systems
+author:             Ryan Trinkle
+stability:          Experimental
+tested-with:
+    ghc ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.1 || ==9.2.5 || ==9.4.5 || ==9.6.1 || ==9.8.2 || ==9.10.1
+    ghcjs ==8.6 || ==8.10
+
+homepage:           https://obsidian.systems
+bug-reports:        https://github.com/reflex-frp/patch/issues
+synopsis:
+    Data structures for describing changes to other data structures.
+
+description:
+    Data structures for describing changes to other data structures.
+    .
+    In this library, a patch is something which can be applied, analogous to a
+    function, and which distinguishes returning the argument it was provided from
+    returning something else.
+
+category:           FRP
+build-type:         Simple
 extra-source-files:
-  README.md
-  ChangeLog.md
+    README.md
+    ChangeLog.md
 
-tested-with:
-  GHC ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7 || ==9.0.1 || ==9.2.5 || ==9.4.5 || ==9.6.1
-  GHCJS ==8.6 || ==8.10
+source-repository head
+    type:     git
+    location: https://github.com/reflex-frp/patch
 
 flag split-these
-  description: Use split these/semialign packages
-  manual:      False
-  default:     True
+    description: Use split these/semialign packages
 
 flag hlint
-  description: Enable hlint test
-  default:     True
+    description: Enable hlint test
 
 library
-  hs-source-dirs: src
-  default-language: Haskell2010
-  build-depends: base >= 4.9 && < 4.19
-               , constraints-extras >= 0.3 && < 0.5
-               , commutative-semigroups >= 0.0 && < 0.2
-               , containers >= 0.6 && < 0.7
-               , dependent-map >= 0.3 && < 0.5
-               , dependent-sum >= 0.6 && < 0.8
-               , lens >= 4.7 && < 5.3
-               , indexed-traversable >= 0.1 && < 0.2
-               , semigroupoids >= 4.0 && < 7
-               , transformers >= 0.5.6.0 && < 0.7
-               , witherable >= 0.3 && < 0.5
+    exposed-modules:
+        Data.Functor.Misc
+        Data.Monoid.DecidablyEmpty
+        Data.Patch
+        Data.Patch.Class
+        Data.Patch.DMap
+        Data.Patch.DMapWithMove
+        Data.Patch.IntMap
+        Data.Patch.Map
+        Data.Patch.MapWithMove
+        Data.Patch.MapWithPatchingMove
+        Data.Patch.PatchOrReplacement
+        Data.Semigroup.Additive
 
-  if impl(ghc < 8.6)
-    build-depends: base-orphans >= 0.8 && < 0.9
+    hs-source-dirs:     src
+    default-language:   Haskell2010
+    default-extensions: PolyKinds
+    ghc-options:        -Wall -fwarn-redundant-constraints -fwarn-tabs
+    build-depends:
+        base >=4.9 && <=4.21,
+        constraints-extras >=0.3 && <0.5,
+        commutative-semigroups >=0.0 && <0.3,
+        containers >=0.6 && <0.8,
+        dependent-map >=0.3 && <0.5,
+        dependent-sum >=0.6 && <0.8,
+        lens >=4.7 && <5.4,
+        indexed-traversable >=0.1 && <0.2,
+        semigroupoids >=4.0 && <7,
+        transformers >=0.5.6.0 && <0.7,
+        witherable >=0.3 && <0.6
 
-  exposed-modules: Data.Functor.Misc
-                 , Data.Monoid.DecidablyEmpty
-                 , Data.Patch
-                 , Data.Patch.Class
-                 , Data.Patch.DMap
-                 , Data.Patch.DMapWithMove
-                 , Data.Patch.IntMap
-                 , Data.Patch.Map
-                 , Data.Patch.MapWithMove
-                 , Data.Patch.MapWithPatchingMove
-                 , Data.Patch.PatchOrReplacement
-                 , Data.Semigroup.Additive
+    if impl(ghc <8.6)
+        build-depends: base-orphans >=0.8 && <0.10
 
-  ghc-options: -Wall -fwarn-redundant-constraints -fwarn-tabs
-  default-extensions: PolyKinds
+    if flag(split-these)
+        build-depends:
+            these >=1 && <1.3,
+            semialign >=1 && <1.4,
+            monoidal-containers >=0.6 && <0.7
 
-  if flag(split-these)
-    build-depends: these >= 1 && <1.3
-                 , semialign >=1 && <1.4
-                 , monoidal-containers >= 0.6 && < 0.7
-  else
-    build-depends: these >= 0.4 && <0.9
-                 , monoidal-containers == 0.4.0.0
+    else
+        build-depends:
+            these >=0.4 && <0.9,
+            monoidal-containers ==0.4.0.0
 
 test-suite tests
-  default-language: Haskell2010
-  type: exitcode-stdio-1.0
-  main-is: tests.hs
-  hs-source-dirs: test
-  build-depends: base
-               , patch
-               , containers
-               , hedgehog
-               , HUnit
-  if impl(ghcjs)
-    buildable: False
+    type:             exitcode-stdio-1.0
+    main-is:          tests.hs
+    hs-source-dirs:   test
+    default-language: Haskell2010
+    build-depends:
+        base,
+        patch,
+        containers,
+        hedgehog <1.6,
+        HUnit <1.7
 
+    if (impl(ghcjs >=0) || arch(javascript))
+        buildable: False
+
 test-suite hlint
-  -- hlint doesn't support ghc-9.6 yet (as of version 3.5)
-  if impl(ghc >= 9.6)
-    buildable: False
-  default-language: Haskell2010
-  type: exitcode-stdio-1.0
-  main-is: hlint.hs
-  hs-source-dirs: test
-  build-depends: base
-               , directory
-               , filepath
-               , filemanip
-  if impl(ghc < 9.2)
-    build-depends: hlint (< 2.1 || >= 2.2.2) && < 3.5
-  else
-    build-depends: hlint >= 3.5 && < 3.6
+    type:             exitcode-stdio-1.0
+    main-is:          hlint.hs
+    hs-source-dirs:   test
+    default-language: Haskell2010
+    build-depends:
+        base,
+        directory,
+        filepath,
+        filemanip
 
-  if impl(ghcjs) || !flag(hlint)
-    buildable: False
+    if impl(ghc >=9.6)
+        buildable: False
 
-source-repository head
-  type: git
-  location: https://github.com/reflex-frp/patch
+    if impl(ghc <9.2)
+        build-depends: hlint (<2.1 || >=2.2.2) && <3.5
+
+    else
+        build-depends: hlint >=3.5 && <3.6
+
+    if ((impl(ghcjs >=0) || arch(javascript)) || !flag(hlint))
+        buildable: False
diff --git a/src/Data/Patch.hs b/src/Data/Patch.hs
--- a/src/Data/Patch.hs
+++ b/src/Data/Patch.hs
@@ -14,16 +14,22 @@
   ) where
 
 import Data.Semigroup.Commutative
-import Control.Applicative (liftA2)
 import Data.Functor.Const (Const (..))
 import Data.Functor.Identity
 import Data.Map.Monoidal (MonoidalMap)
 import Data.Proxy
+import GHC.Generics
+
+#if !MIN_VERSION_base(4,18,0)
+import Control.Applicative (liftA2)
+#endif
+
 #if !MIN_VERSION_base(4,11,0)
 import Data.Semigroup (Semigroup (..))
 #endif
-import GHC.Generics
 
+-- N.B. Intentionally reexporting `Additive`, the deprecated alias, as
+-- this is a reexport for backwards compatibility.
 import qualified Data.Semigroup.Additive as X
 import Data.Patch.Class as X
 import Data.Patch.DMap as X hiding (getDeletions)
diff --git a/src/Data/Patch/IntMap.hs b/src/Data/Patch/IntMap.hs
--- a/src/Data/Patch/IntMap.hs
+++ b/src/Data/Patch/IntMap.hs
@@ -6,6 +6,7 @@
 {-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 
 {-|
 Description: Module containing 'PatchIntMap', a 'Patch' for 'IntMap'.
diff --git a/src/Data/Patch/Map.hs b/src/Data/Patch/Map.hs
--- a/src/Data/Patch/Map.hs
+++ b/src/Data/Patch/Map.hs
@@ -7,6 +7,7 @@
 {-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 
 {-|
 Description: A basic 'Patch' on 'Map'
diff --git a/src/Data/Patch/MapWithMove.hs b/src/Data/Patch/MapWithMove.hs
--- a/src/Data/Patch/MapWithMove.hs
+++ b/src/Data/Patch/MapWithMove.hs
@@ -12,6 +12,7 @@
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeApplications #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE ViewPatterns #-}
 
 {-|
diff --git a/src/Data/Patch/MapWithPatchingMove.hs b/src/Data/Patch/MapWithPatchingMove.hs
--- a/src/Data/Patch/MapWithPatchingMove.hs
+++ b/src/Data/Patch/MapWithPatchingMove.hs
@@ -9,6 +9,7 @@
 {-# LANGUAGE StandaloneDeriving #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
 {-# LANGUAGE UndecidableInstances #-}
 
 {-|
@@ -230,8 +231,9 @@
           Just (from, to)
         reverseMapping = Map.fromList $ catMaybes $ zipWith f unsorted sorted
         g (to, _) (from, _) = if to == from then Nothing else
-          let Just movingTo = Map.lookup from reverseMapping
+          let movingTo = fromMaybe err $ Map.lookup from reverseMapping
           in Just (to, NodeInfo (From_Move from mempty) $ Just movingTo)
+        err = error "IMPOSSIBLE happens in patchThatSortsMapWith"
 
 -- | Create a 'PatchMapWithPatchingMove' that, if applied to the first 'Map' provided,
 -- will produce a 'Map' with the same values as the second 'Map' but with the
