diff --git a/hls-class-plugin.cabal b/hls-class-plugin.cabal
--- a/hls-class-plugin.cabal
+++ b/hls-class-plugin.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.4
 name:               hls-class-plugin
-version:            1.0.1.2
+version:            1.0.2.0
 synopsis:
   Class/instance management plugin for Haskell Language Server
 
@@ -29,8 +29,8 @@
     , containers
     , ghc
     , ghc-exactprint
-    , ghcide          ^>=1.5.0
-    , hls-plugin-api  >=1.1  && <1.3
+    , ghcide          ^>=1.6
+    , hls-plugin-api  ^>=1.3
     , lens
     , lsp
     , text
@@ -53,6 +53,6 @@
     , base
     , filepath
     , hls-class-plugin
-    , hls-test-utils    >=1.0 && <1.2
+    , hls-test-utils     ^>=1.2
     , lens
     , lsp-types
diff --git a/src/Ide/Plugin/Class.hs b/src/Ide/Plugin/Class.hs
--- a/src/Ide/Plugin/Class.hs
+++ b/src/Ide/Plugin/Class.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP               #-}
 {-# LANGUAGE DeriveAnyClass    #-}
 {-# LANGUAGE DeriveGeneric     #-}
 {-# LANGUAGE OverloadedStrings #-}
@@ -32,6 +33,7 @@
 import           Language.Haskell.GHC.ExactPrint
 import           Language.Haskell.GHC.ExactPrint.Parsers (parseDecl)
 import           Language.Haskell.GHC.ExactPrint.Types   hiding (GhcPs, Parens)
+import           Language.Haskell.GHC.ExactPrint.Utils   (rs)
 import           Language.LSP.Server
 import           Language.LSP.Types
 import qualified Language.LSP.Types.Lens                 as J
@@ -85,20 +87,19 @@
         Right (ann, d) -> Just (setPrecedingLines d 1 indent ann, d)
         Left _         -> Nothing
 
-    addMethodDecls :: ParsedSource -> [LHsDecl GhcPs] -> Transform (Located (HsModule GhcPs))
     addMethodDecls ps mDecls = do
       d <- findInstDecl ps
       newSpan <- uniqueSrcSpanT
       let
         annKey = mkAnnKey d
-        newAnnKey = AnnKey newSpan (CN "HsValBinds")
+        newAnnKey = AnnKey (rs newSpan) (CN "HsValBinds")
         addWhere mkds@(Map.lookup annKey -> Just ann)
           = Map.insert newAnnKey ann2 mkds2
           where
             ann1 = ann
                    { annsDP = annsDP ann ++ [(G AnnWhere, DP (0, 1))]
                    , annCapturedSpan = Just newAnnKey
-                   , annSortKey = Just (fmap getLoc mDecls)
+                   , annSortKey = Just (fmap (rs . getLoc) mDecls)
                    }
             mkds2 = Map.insert annKey ann1 mkds
             ann2 = annNone
@@ -168,9 +169,15 @@
           pure
             $ head . head
             $ pointCommand hf (fromJust (fromCurrentRange pmap range) ^. J.start & J.character -~ 1)
+#if !MIN_VERSION_ghc(9,0,0)
               ( (Map.keys . Map.filter isClassNodeIdentifier . nodeIdentifiers . nodeInfo)
                 <=< nodeChildren
               )
+#else
+              ( (Map.keys . Map.filter isClassNodeIdentifier . sourcedNodeIdents . sourcedNodeInfo)
+                <=< nodeChildren
+              )
+#endif
 
     findClassFromIdentifier docPath (Right name) = do
       (hscEnv -> hscenv, _) <- MaybeT . runAction "classplugin" state $ useWithStale GhcSessionDeps docPath
