diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,16 @@
 # Changelog for ghc-lib-parser-ex
 
+## 0.20200704 released 2020-07-04
+- New function `isImportQualifiedPost`
+
+## 8.10.0.15 released 2020-07-04
+- New function `isImportQualifiedPost`
+
+## 8.10.0.14 released 2020-06-10
+- New function `isSymbolRdrName`
+- New module
+  - `Language.Haskell.GhclibParserEx.GHC.Settings.Config` to replace `Language.Haskell.GhclibParserEx.Config` (which remains for now but deprecated and will be removed in a future release)
+
 ## 0.20200601 released 2020-06-01
 
 ## 8.10.0.13 released 2020-05-31
diff --git a/ghc-lib-parser-ex.cabal b/ghc-lib-parser-ex.cabal
--- a/ghc-lib-parser-ex.cabal
+++ b/ghc-lib-parser-ex.cabal
@@ -1,6 +1,6 @@
 cabal-version: >= 1.18
 name:           ghc-lib-parser-ex
-version:        0.20200601
+version:        0.20200704
 description:    Please see the README on GitHub at <https://github.com/shayne-fletcher/ghc-lib-parser-ex#readme>
 homepage:       https://github.com/shayne-fletcher/ghc-lib-parser-ex#readme
 bug-reports:    https://github.com/shayne-fletcher/ghc-lib-parser-ex/issues
@@ -34,9 +34,9 @@
 
 library
   exposed-modules:
-      Language.Haskell.GhclibParserEx.Config
       Language.Haskell.GhclibParserEx.Dump
       Language.Haskell.GhclibParserEx.Fixity
+      Language.Haskell.GhclibParserEx.GHC.Settings.Config
       Language.Haskell.GhclibParserEx.GHC.Driver.Flags
       Language.Haskell.GhclibParserEx.GHC.Driver.Session
       Language.Haskell.GhclibParserEx.GHC.Hs
@@ -51,6 +51,7 @@
       Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader
       Language.Haskell.GhclibParserEx.GHC.Utils.Outputable
       -- Deprecated and will be removed in a future release.
+      Language.Haskell.GhclibParserEx.Config
       Language.Haskell.GhclibParserEx.Parse
       Language.Haskell.GhclibParserEx.Outputable
   other-modules:
diff --git a/src/Language/Haskell/GhclibParserEx/Config.hs b/src/Language/Haskell/GhclibParserEx/Config.hs
--- a/src/Language/Haskell/GhclibParserEx/Config.hs
+++ b/src/Language/Haskell/GhclibParserEx/Config.hs
@@ -1,94 +1,9 @@
 -- Copyright (c) 2020, Shayne Fletcher. All rights reserved.
 -- SPDX-License-Identifier: BSD-3-Clause.
 
-{-# OPTIONS_GHC -Wno-missing-fields #-}
-{-# LANGUAGE CPP #-}
-#include "ghclib_api.h"
-module Language.Haskell.GhclibParserEx.Config(
-    fakeSettings
-  , fakeLlvmConfig
+module Language.Haskell.GhclibParserEx.Config
+  {-# DEPRECATED "Use Language.Haskell.GhclibParserEx.GHC.Settings.Config instead" #-} (
+  module Language.Haskell.GhclibParserEx.GHC.Settings.Config
   )
-where
-
-#if defined (GHCLIB_API_811)
-import GHC.Settings.Config
-import GHC.Driver.Session
-import GHC.Utils.Fingerprint
-import GHC.Platform
-import GHC.Settings
-#elif defined (GHCLIB_API_810)
-import Config
-import DynFlags
-import Fingerprint
-import GHC.Platform
-import ToolSettings
-#else
-import Config
-import DynFlags
-import Fingerprint
-import Platform
-#endif
-
-fakeSettings :: Settings
-fakeSettings = Settings
-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)
-  { sGhcNameVersion=ghcNameVersion
-  , sFileSettings=fileSettings
-  , sTargetPlatform=platform
-  , sPlatformMisc=platformMisc
-  , sPlatformConstants=platformConstants
-  , sToolSettings=toolSettings
-  }
-#else
-  { sTargetPlatform=platform
-  , sPlatformConstants=platformConstants
-  , sProjectVersion=cProjectVersion
-  , sProgramName="ghc"
-  , sOpt_P_fingerprint=fingerprint0
-  }
-#endif
   where
-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)
-    toolSettings = ToolSettings {
-      toolSettings_opt_P_fingerprint=fingerprint0
-      }
-    fileSettings = FileSettings {}
-    platformMisc = PlatformMisc {}
-    ghcNameVersion =
-      GhcNameVersion{ghcNameVersion_programName="ghc"
-                    ,ghcNameVersion_projectVersion=cProjectVersion
-                    }
-#endif
-    platform =
-      Platform{
-#if defined(GHCLIB_API_811)
-    -- It doesn't matter what values we write here as these fields are
-    -- not referenced for our purposes. However the fields are strict
-    -- so we must say something.
-        platformByteOrder=LittleEndian
-      , platformHasGnuNonexecStack=True
-      , platformHasIdentDirective=False
-      , platformHasSubsectionsViaSymbols=False
-      , platformIsCrossCompiling=False
-      , platformLeadingUnderscore=False
-      ,
-#endif
-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)
-        platformWordSize = PW8
-      , platformMini = PlatformMini {platformMini_arch=ArchUnknown, platformMini_os=OSUnknown}
-#else
-        platformWordSize=8
-      , platformOS=OSUnknown
-#endif
-      , platformUnregisterised=True
-      }
-    platformConstants =
-      PlatformConstants{pc_DYNAMIC_BY_DEFAULT=False,pc_WORD_SIZE=8}
-
-#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)
-fakeLlvmConfig :: LlvmConfig
-fakeLlvmConfig = LlvmConfig [] []
-#else
-fakeLlvmConfig :: (LlvmTargets, LlvmPasses)
-fakeLlvmConfig = ([], [])
-#endif
+import Language.Haskell.GhclibParserEx.GHC.Settings.Config
diff --git a/src/Language/Haskell/GhclibParserEx/GHC/Driver/Flags.hs b/src/Language/Haskell/GhclibParserEx/GHC/Driver/Flags.hs
--- a/src/Language/Haskell/GhclibParserEx/GHC/Driver/Flags.hs
+++ b/src/Language/Haskell/GhclibParserEx/GHC/Driver/Flags.hs
@@ -3,14 +3,14 @@
 #include "ghclib_api.h"
 module Language.Haskell.GhclibParserEx.GHC.Driver.Flags () where
 
-#if defined(GHCLIB_API_811)
-import GHC.Driver.Session
-#else
+#if !defined(GHCLIB_API_811)
 import DynFlags
 #endif
 
--- Oprhan instance until
--- https://gitlab.haskell.org/ghc/ghc/merge_requests/2905 lands.
+-- This instance landed in
+-- https://gitlab.haskell.org/ghc/ghc/merge_requests/2905.
+#if defined(GHCLIB_API_808) || defined(GHCLIB_API_810)
 instance Bounded Language where
   minBound = Haskell98
   maxBound = Haskell2010
+#endif
diff --git a/src/Language/Haskell/GhclibParserEx/GHC/Driver/Session.hs b/src/Language/Haskell/GhclibParserEx/GHC/Driver/Session.hs
--- a/src/Language/Haskell/GhclibParserEx/GHC/Driver/Session.hs
+++ b/src/Language/Haskell/GhclibParserEx/GHC/Driver/Session.hs
@@ -7,14 +7,16 @@
 module Language.Haskell.GhclibParserEx.GHC.Driver.Session(
       readExtension
     , extensionImplications
-    -- Copied from DynFlags (see
-    -- https://gitlab.haskell.org/ghc/ghc/merge_requests/2654).
+-- Landed in https://gitlab.haskell.org/ghc/ghc/merge_requests/2654.
+#if defined (GHCLIB_API_808) || defined (GHCLIB_API_810)
     , TurnOnFlag, turnOn, turnOff, impliedGFlags, impliedOffGFlags, impliedXFlags
-    --
+#endif
     , parsePragmasIntoDynFlags
   ) where
 
+#if defined(GHCLIB_API_808) || defined(GHCLIB_API_810)
 import qualified GHC.LanguageExtensions as LangExt
+#endif
 #if defined (GHCLIB_API_811)
 import GHC.Utils.Panic
 import GHC.Parser.Header
@@ -32,14 +34,11 @@
 import Data.List
 import Data.Maybe
 import qualified Data.Map as Map
-#if !defined(GHCLIB_API_811)
+-- Landed in https://gitlab.haskell.org/ghc/ghc/merge_requests/2707.
+#if defined (GHCLIB_API_808) || defined (GHCLIB_API_810)
 import Data.Function -- For `compareOn`.
--- Oprhan instance until
--- https://gitlab.haskell.org/ghc/ghc/merge_requests/2707 lands.
 instance Ord Extension where
   compare = compare `on` fromEnum
-#else
--- Update : It's landed.
 #endif
 
 -- | Parse a GHC extension.
@@ -56,7 +55,10 @@
       [(show a, ([c | b], [c | not b]))
         | (a, flag, c) <- impliedXFlags, let b = flag == turnOn]
 
--- Copied from 'ghc/compiler/main/DynFlags.hs'.
+-- Landed in
+-- https://gitlab.haskell.org/ghc/ghc/merge_requests/2654. Copied from
+-- 'ghc/compiler/main/DynFlags.hs'.
+#if defined(GHCLIB_API_808) || defined(GHCLIB_API_810)
 
 type TurnOnFlag = Bool   -- True  <=> we are turning the flag on
                          -- False <=> we are turning the flag off
@@ -109,7 +111,7 @@
     , (LangExt.TypeInType,       turnOn, LangExt.PolyKinds)
     , (LangExt.TypeInType,       turnOn, LangExt.KindSignatures)
 
-#if defined(GHCLIB_API_811) || defined(GHCLIB_API_810)
+#if defined(GHCLIB_API_810)
     -- Standalone kind signatures are a replacement for CUSKs.
     , (LangExt.StandaloneKindSignatures, turnOff, LangExt.CUSKs)
 #endif
@@ -143,8 +145,7 @@
     , (LangExt.TemplateHaskell, turnOn, LangExt.TemplateHaskellQuotes)
     , (LangExt.Strict, turnOn, LangExt.StrictData)
   ]
-
---
+#endif
 
 parsePragmasIntoDynFlags :: DynFlags
                          -> ([Extension], [Extension])
diff --git a/src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs b/src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs
--- a/src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs
+++ b/src/Language/Haskell/GhclibParserEx/GHC/Hs/Expr.hs
@@ -99,7 +99,11 @@
 isParComp = \case ParStmt{} -> True; _ -> False
 
 isMDo :: HsStmtContext Name -> Bool
+#if defined(GHCLIB_API_811)
+isMDo = \case MDoExpr _ -> True; _ -> False
+#else
 isMDo = \case MDoExpr -> True; _ -> False
+#endif
 
 isTupleSection :: HsTupArg GhcPs -> Bool
 isTupleSection = \case Missing{} -> True; _ -> False
diff --git a/src/Language/Haskell/GhclibParserEx/GHC/Hs/ImpExp.hs b/src/Language/Haskell/GhclibParserEx/GHC/Hs/ImpExp.hs
--- a/src/Language/Haskell/GhclibParserEx/GHC/Hs/ImpExp.hs
+++ b/src/Language/Haskell/GhclibParserEx/GHC/Hs/ImpExp.hs
@@ -3,7 +3,14 @@
 {-# LANGUAGE CPP #-}
 #include "ghclib_api.h"
 module Language.Haskell.GhclibParserEx.GHC.Hs.ImpExp(
-  isPatSynIE
+    isPatSynIE
+#if defined (MIN_VERSION_ghc_lib_parser)
+#  if !MIN_VERSION_ghc_lib_parser(1,  0,  0) || MIN_VERSION_ghc_lib_parser(8, 10, 0)
+ , isImportQualifiedPost
+#  endif
+#elif  __GLASGOW_HASKELL__ >= 810
+ , isImportQualifiedPost
+#endif
   )
 where
 
@@ -21,3 +28,15 @@
 isPatSynIE :: IEWrappedName RdrName -> Bool
 isPatSynIE IEPattern{} = True
 isPatSynIE _ = False
+
+#if defined(MIN_VERSION_ghc_lib_parser)
+#  if !MIN_VERSION_ghc_lib_parser(1,  0,  0) || MIN_VERSION_ghc_lib_parser(8, 10, 0)
+isImportQualifiedPost :: ImportDeclQualifiedStyle -> Bool
+isImportQualifiedPost QualifiedPost = True
+isImportQualifiedPost _  = False
+#  endif
+#elif __GLASGOW_HASKELL__ >= 810
+isImportQualifiedPost :: ImportDeclQualifiedStyle -> Bool
+isImportQualifiedPost QualifiedPost = True
+isImportQualifiedPost _  = False
+#endif
diff --git a/src/Language/Haskell/GhclibParserEx/GHC/Settings/Config.hs b/src/Language/Haskell/GhclibParserEx/GHC/Settings/Config.hs
new file mode 100644
--- /dev/null
+++ b/src/Language/Haskell/GhclibParserEx/GHC/Settings/Config.hs
@@ -0,0 +1,96 @@
+-- Copyright (c) 2020, Shayne Fletcher. All rights reserved.
+-- SPDX-License-Identifier: BSD-3-Clause.
+
+{-# OPTIONS_GHC -Wno-missing-fields #-}
+{-# LANGUAGE CPP #-}
+#include "ghclib_api.h"
+
+module Language.Haskell.GhclibParserEx.GHC.Settings.Config(
+    fakeSettings
+  , fakeLlvmConfig
+  )
+where
+
+#if defined (GHCLIB_API_811)
+import GHC.Settings.Config
+import GHC.Driver.Session
+import GHC.Utils.Fingerprint
+import GHC.Platform
+import GHC.Settings
+#elif defined (GHCLIB_API_810)
+import Config
+import DynFlags
+import Fingerprint
+import GHC.Platform
+import ToolSettings
+#else
+import Config
+import DynFlags
+import Fingerprint
+import Platform
+#endif
+
+fakeSettings :: Settings
+fakeSettings = Settings
+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)
+  { sGhcNameVersion=ghcNameVersion
+  , sFileSettings=fileSettings
+  , sTargetPlatform=platform
+  , sPlatformMisc=platformMisc
+  , sPlatformConstants=platformConstants
+  , sToolSettings=toolSettings
+  }
+#else
+  { sTargetPlatform=platform
+  , sPlatformConstants=platformConstants
+  , sProjectVersion=cProjectVersion
+  , sProgramName="ghc"
+  , sOpt_P_fingerprint=fingerprint0
+  }
+#endif
+  where
+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)
+    toolSettings = ToolSettings {
+      toolSettings_opt_P_fingerprint=fingerprint0
+      }
+    fileSettings = FileSettings {}
+    platformMisc = PlatformMisc {}
+    ghcNameVersion =
+      GhcNameVersion{ghcNameVersion_programName="ghc"
+                    ,ghcNameVersion_projectVersion=cProjectVersion
+                    }
+#endif
+    platform =
+      Platform{
+#if defined(GHCLIB_API_811)
+    -- It doesn't matter what values we write here as these fields are
+    -- not referenced for our purposes. However the fields are strict
+    -- so we must say something.
+        platformByteOrder=LittleEndian
+      , platformHasGnuNonexecStack=True
+      , platformHasIdentDirective=False
+      , platformHasSubsectionsViaSymbols=False
+      , platformIsCrossCompiling=False
+      , platformLeadingUnderscore=False
+      , platformTablesNextToCode=False
+      ,
+#endif
+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)
+        platformWordSize = PW8
+      , platformMini = PlatformMini {platformMini_arch=ArchUnknown, platformMini_os=OSUnknown}
+#else
+        platformWordSize=8
+      , platformOS=OSUnknown
+#endif
+      , platformUnregisterised=True
+      }
+    platformConstants =
+      PlatformConstants{pc_DYNAMIC_BY_DEFAULT=False,pc_WORD_SIZE=8}
+
+#if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)
+fakeLlvmConfig :: LlvmConfig
+fakeLlvmConfig = LlvmConfig [] []
+#else
+fakeLlvmConfig :: (LlvmTargets, LlvmPasses)
+fakeLlvmConfig = ([], [])
+#endif
diff --git a/src/Language/Haskell/GhclibParserEx/GHC/Types/Name/Reader.hs b/src/Language/Haskell/GhclibParserEx/GHC/Types/Name/Reader.hs
--- a/src/Language/Haskell/GhclibParserEx/GHC/Types/Name/Reader.hs
+++ b/src/Language/Haskell/GhclibParserEx/GHC/Types/Name/Reader.hs
@@ -5,7 +5,7 @@
 #include "ghclib_api.h"
 
 module Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader(
-   occNameStr, rdrNameStr, isSpecial, unqual, fromQual
+   occNameStr, rdrNameStr, isSpecial, unqual, fromQual, isSymbolRdrName
  )
 where
 
@@ -41,3 +41,8 @@
 fromQual (L _ (Qual _ x)) = Just x
 fromQual (L _ (Unqual x)) = Just x
 fromQual _ = Nothing
+
+-- Test if the reader name is that of an operator (be it a data
+-- constructor, variable or whatever).
+isSymbolRdrName :: RdrName -> Bool
+isSymbolRdrName = isSymOcc . rdrNameOcc
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -17,16 +17,26 @@
 import Data.List.Extra
 import Data.Maybe
 
-import Language.Haskell.GhclibParserEx.Config
 import Language.Haskell.GhclibParserEx.Dump
 import Language.Haskell.GhclibParserEx.Fixity
+import Language.Haskell.GhclibParserEx.GHC.Settings.Config
 import Language.Haskell.GhclibParserEx.GHC.Parser
 import Language.Haskell.GhclibParserEx.GHC.Hs
 import Language.Haskell.GhclibParserEx.GHC.Hs.ExtendInstances
 import Language.Haskell.GhclibParserEx.GHC.Hs.Expr
 import Language.Haskell.GhclibParserEx.GHC.Hs.Pat
+-- We only test 'isImportQualifiedPost' at this time which requires >=
+-- 8.10; avoid unused import warning.
+#if defined (MIN_VERSION_ghc_lib_parser)
+#  if !MIN_VERSION_ghc_lib_parser(1,  0,  0) || MIN_VERSION_ghc_lib_parser(8, 10, 0)
+import Language.Haskell.GhclibParserEx.GHC.Hs.ImpExp
+#  endif
+#elif __GLASGOW_HASKELL__ >= 810
+import Language.Haskell.GhclibParserEx.GHC.Hs.ImpExp
+#endif
 import Language.Haskell.GhclibParserEx.GHC.Driver.Flags()
 import Language.Haskell.GhclibParserEx.GHC.Driver.Session
+import Language.Haskell.GhclibParserEx.GHC.Types.Name.Reader
 
 #if defined (GHCLIB_API_811) || defined (GHCLIB_API_810)
 import GHC.Hs
@@ -39,12 +49,16 @@
 import GHC.Parser.Lexer
 import GHC.Utils.Outputable
 import GHC.Utils.Error
+import GHC.Types.Name.Reader
+import GHC.Types.Name.Occurrence
 #else
 import SrcLoc
 import DynFlags
 import Lexer
 import Outputable
 import ErrUtils
+import RdrName
+import OccName
 #endif
 import GHC.LanguageExtensions.Type
 #if defined (GHCLIB_API_808)
@@ -323,6 +337,19 @@
       parsePragmasIntoDynFlags flags ([StarIsType], []) foo s >>= \case
         Left msg -> assertFailure msg
         Right flags -> chkParseResult report flags $ parseFile foo flags s
+#if defined (MIN_VERSION_ghc_lib_parser)
+#  if  !MIN_VERSION_ghc_lib_parser(1,  0,  0) || MIN_VERSION_ghc_lib_parser(8, 10, 0)
+  , testCase "ImportQualifiedPost" $ do
+      case parseImport "import Foo qualified" (flags `xopt_set` ImportQualifiedPost) of
+        POk _ (L _ decl) -> assertBool "expected postpositive" (isImportQualifiedPost . ideclQualified $ decl)
+        PFailed _ -> assertFailure "parse error"
+#  endif
+#elif __GLASGOW_HASKELL__ >= 810
+  , testCase "ImportQualifiedPost" $ do
+      case parseImport "import Foo qualified" (flags `xopt_set` ImportQualifiedPost) of
+        POk _ (L _ decl) -> assertBool "expected postpositive" (isImportQualifiedPost . ideclQualified $ decl)
+        PFailed _ -> assertFailure "parse error"
+#endif
   ]
   where
     flags = unsafeGlobalDynFlags
@@ -330,12 +357,16 @@
 
 nameTests :: TestTree
 nameTests = testGroup "Name tests"
-  [ testCase "Module (1)" $
+  [ testCase "modName (1)" $
       moduleTest "module Foo.Bar.Baz where" flags
         (\n -> assertBool "Unexpected name string" $ modName n == "Foo.Bar.Baz")
-  , testCase "Module (2)" $
+  , testCase "modName (2)" $
       moduleTest "f x = x * 2" flags
         (\n -> assertBool "Unexpected name string" $ modName n == "Main")
+  , testCase "isSymbolRdrName (1)" $ assertBool "Expected 'True'" $ isSymbolRdrName (mkRdrUnqual (mkVarOcc "+"))
+  , testCase "isSymbolRdrName (2)" $ assertBool "Expected 'False'" $ not (isSymbolRdrName (mkRdrUnqual (mkVarOcc "_foo")))
+  , testCase "isSymbolRdrName (3)" $ assertBool "Expected 'False'" $ not (isSymbolRdrName (mkRdrUnqual (mkVarOcc "foo'")))
+  , testCase "isSymbolRdrName (4)" $ assertBool "Expected 'True'" $ isSymbolRdrName (mkRdrUnqual (mkVarOcc ":+:"))
   ]
   where
     flags = defaultDynFlags fakeSettings fakeLlvmConfig
