From 0e01e1dbc22eb30b83f1975700b46b3e3d5e453b Mon Sep 17 00:00:00 2001
From: Alan Zimmerman <alan.zimm@gmail.com>
Date: Tue, 19 Dec 2023 20:02:08 +0000
Subject: [PATCH] EPA: Move EpAnn out of extension points

Leaving a few that are too tricky, maybe some other time.

Also
 - remove some unneeded helpers from Parser.y
 - reduce allocations with strictness annotations

Updates haddock submodule

Metric Decrease:
    parsing001
---
 compiler/GHC/Hs/Binds.hs                      |   28 +-
 compiler/GHC/Hs/Decls.hs                      |   80 +-
 compiler/GHC/Hs/Dump.hs                       |    7 +
 compiler/GHC/Hs/Expr.hs                       |  114 +-
 compiler/GHC/Hs/ImpExp.hs                     |   20 +-
 compiler/GHC/Hs/Pat.hs                        |   26 +-
 compiler/GHC/Hs/Type.hs                       |   45 +-
 compiler/GHC/Hs/Utils.hs                      |   44 +-
 compiler/GHC/HsToCore/Arrows.hs               |    4 +-
 compiler/GHC/Parser.y                         |  766 +++++------
 compiler/GHC/Parser/Annotation.hs             |   11 +-
 compiler/GHC/Parser/PostProcess.hs            |  369 +++--
 compiler/GHC/Parser/Types.hs                  |    4 +-
 compiler/GHC/Rename/Bind.hs                   |    4 +-
 compiler/GHC/Rename/Expr.hs                   |   10 +-
 compiler/GHC/Rename/Splice.hs                 |    6 +-
 compiler/GHC/Rename/Utils.hs                  |    4 +-
 compiler/GHC/Tc/Deriv/Generate.hs             |    6 +-
 compiler/GHC/Tc/Gen/Expr.hs                   |    4 +-
 compiler/GHC/Tc/Gen/Head.hs                   |   10 +-
 compiler/GHC/Tc/Gen/HsType.hs                 |    4 +-
 compiler/GHC/Tc/Gen/Match.hs                  |    4 +-
 compiler/GHC/Tc/Gen/Splice.hs                 |    4 +-
 compiler/GHC/Tc/TyCl/Instance.hs              |    6 +-
 compiler/GHC/Tc/TyCl/PatSyn.hs                |    8 +-
 compiler/GHC/Tc/Utils/TcMType.hs              |    8 +-
 compiler/GHC/Tc/Zonk/Type.hs                  |    6 +-
 compiler/GHC/ThToHs.hs                        |   24 +-
 .../tests/ghc-api/exactprint/T22919.stderr    |   12 +-
 .../tests/ghc-api/exactprint/Test20239.stderr |  115 +-
 .../ghc-api/exactprint/ZeroWidthSemi.stderr   |   12 +-
 .../should_compile_flag_haddock/T17544.stderr |  694 ++--------
 .../T17544_kw.stderr                          |   82 +-
 .../should_compile_flag_haddock/T24221.stderr |  266 +---
 testsuite/tests/module/mod185.stderr          |    6 +-
 .../should_compile/DumpParsedAst.stderr       |  656 ++-------
 .../DumpParsedAstComments.stderr              |   74 +-
 .../should_compile/DumpRenamedAst.stderr      |  662 ++-------
 .../parser/should_compile/DumpSemis.stderr    |  426 ++----
 .../should_compile/DumpTypecheckedAst.stderr  |  540 ++------
 .../parser/should_compile/KindSigs.stderr     |  566 ++------
 .../tests/parser/should_compile/T14189.stderr |   26 +-
 .../tests/parser/should_compile/T15323.stderr |   62 +-
 .../tests/parser/should_compile/T20452.stderr |  256 +---
 .../tests/parser/should_compile/T20718.stderr |   12 +-
 .../tests/parser/should_compile/T20846.stderr |   12 +-
 .../should_compile/T23315/T23315.stderr       |   22 +-
 .../plugins/hooks-plugin/Hooks/MetaPlugin.hs  |    2 +-
 testsuite/tests/printer/T18791.stderr         |   26 +-
 testsuite/tests/printer/Test20297.stdout      |   72 +-
 utils/check-exact/ExactPrint.hs               | 1208 ++++++++---------
 utils/check-exact/Transform.hs                |    4 +-
 utils/haddock                                 |    2 +-
 53 files changed, 2303 insertions(+), 5138 deletions(-)

diff --git a/compiler/GHC/Hs/Binds.hs b/compiler/GHC/Hs/Binds.hs
index fe79411477c4..1a9e4771fb92 100644
--- a/compiler/GHC/Hs/Binds.hs
+++ b/compiler/GHC/Hs/Binds.hs
@@ -115,7 +115,7 @@ type instance XFunBind    (GhcPass pL) GhcTc = (HsWrapper, [CoreTickish])
 -- type         Int -> forall a'. a' -> a'
 -- Notice that the coercion captures the free a'.
 
-type instance XPatBind    GhcPs (GhcPass pR) = EpAnn [AddEpAnn]
+type instance XPatBind    GhcPs (GhcPass pR) = [AddEpAnn]
 type instance XPatBind    GhcRn (GhcPass pR) = NameSet -- See Note [Bind free vars]
 type instance XPatBind    GhcTc (GhcPass pR) =
     ( Type                  -- Type of the GRHSs
@@ -133,7 +133,7 @@ type instance XXHsBindsLR GhcPs pR = DataConCantHappen
 type instance XXHsBindsLR GhcRn pR = DataConCantHappen
 type instance XXHsBindsLR GhcTc pR = AbsBinds
 
-type instance XPSB         (GhcPass idL) GhcPs = EpAnn [AddEpAnn]
+type instance XPSB         (GhcPass idL) GhcPs = [AddEpAnn]
 type instance XPSB         (GhcPass idL) GhcRn = NameSet -- Post renaming, FVs. See Note [Bind free vars]
 type instance XPSB         (GhcPass idL) GhcTc = NameSet
 
@@ -679,7 +679,7 @@ isEmptyIPBindsTc :: HsIPBinds GhcTc -> Bool
 isEmptyIPBindsTc (IPBinds ds is) = null is && isEmptyTcEvBinds ds
 
 -- EPA annotations in GhcPs, dictionary Id in GhcTc
-type instance XCIPBind GhcPs = EpAnn [AddEpAnn]
+type instance XCIPBind GhcPs = [AddEpAnn]
 type instance XCIPBind GhcRn = NoExtField
 type instance XCIPBind GhcTc = Id
 type instance XXIPBind    (GhcPass p) = DataConCantHappen
@@ -704,16 +704,16 @@ instance OutputableBndrId p => Outputable (IPBind (GhcPass p)) where
 ************************************************************************
 -}
 
-type instance XTypeSig          (GhcPass p) = EpAnn AnnSig
-type instance XPatSynSig        (GhcPass p) = EpAnn AnnSig
-type instance XClassOpSig       (GhcPass p) = EpAnn AnnSig
-type instance XFixSig           (GhcPass p) = EpAnn [AddEpAnn]
-type instance XInlineSig        (GhcPass p) = EpAnn [AddEpAnn]
-type instance XSpecSig          (GhcPass p) = EpAnn [AddEpAnn]
-type instance XSpecInstSig      (GhcPass p) = (EpAnn [AddEpAnn], SourceText)
-type instance XMinimalSig       (GhcPass p) = (EpAnn [AddEpAnn], SourceText)
-type instance XSCCFunSig        (GhcPass p) = (EpAnn [AddEpAnn], SourceText)
-type instance XCompleteMatchSig (GhcPass p) = (EpAnn [AddEpAnn], SourceText)
+type instance XTypeSig          (GhcPass p) = AnnSig
+type instance XPatSynSig        (GhcPass p) = AnnSig
+type instance XClassOpSig       (GhcPass p) = AnnSig
+type instance XFixSig           (GhcPass p) = [AddEpAnn]
+type instance XInlineSig        (GhcPass p) = [AddEpAnn]
+type instance XSpecSig          (GhcPass p) = [AddEpAnn]
+type instance XSpecInstSig      (GhcPass p) = ([AddEpAnn], SourceText)
+type instance XMinimalSig       (GhcPass p) = ([AddEpAnn], SourceText)
+type instance XSCCFunSig        (GhcPass p) = ([AddEpAnn], SourceText)
+type instance XCompleteMatchSig (GhcPass p) = ([AddEpAnn], SourceText)
     -- SourceText: Note [Pragma source text] in "GHC.Types.SourceText"
 type instance XXSig             GhcPs = DataConCantHappen
 type instance XXSig             GhcRn = IdSig
@@ -909,7 +909,7 @@ type instance Anno [LocatedN Id]      = SrcSpan
 
 type instance Anno (FixitySig (GhcPass p)) = SrcSpanAnnA
 
-type instance Anno StringLiteral = EpAnn NoEpAnns
+type instance Anno StringLiteral = EpAnnCO
 type instance Anno (LocatedN RdrName) = SrcSpan
 type instance Anno (LocatedN Name) = SrcSpan
 type instance Anno (LocatedN Id) = SrcSpan
diff --git a/compiler/GHC/Hs/Decls.hs b/compiler/GHC/Hs/Decls.hs
index 50c1bc96f633..c5ab6ce65439 100644
--- a/compiler/GHC/Hs/Decls.hs
+++ b/compiler/GHC/Hs/Decls.hs
@@ -339,11 +339,11 @@ instance Outputable SpliceDecoration where
 
 type instance XFamDecl      (GhcPass _) = NoExtField
 
-type instance XSynDecl      GhcPs = EpAnn [AddEpAnn]
+type instance XSynDecl      GhcPs = [AddEpAnn]
 type instance XSynDecl      GhcRn = NameSet -- FVs
 type instance XSynDecl      GhcTc = NameSet -- FVs
 
-type instance XDataDecl     GhcPs = EpAnn [AddEpAnn]
+type instance XDataDecl     GhcPs = [AddEpAnn]
 type instance XDataDecl     GhcRn = DataDeclRn
 type instance XDataDecl     GhcTc = DataDeclRn
 
@@ -354,7 +354,7 @@ data DataDeclRn = DataDeclRn
   deriving Data
 
 type instance XClassDecl    GhcPs =
-  ( EpAnn [AddEpAnn]
+  ( [AddEpAnn]
   , EpLayout              -- See Note [Class EpLayout]
   , AnnSortKey DeclTag )  -- TODO:AZ:tidy up AnnSortKey
 
@@ -363,7 +363,7 @@ type instance XClassDecl    GhcTc = NameSet -- FVs
 
 type instance XXTyClDecl    (GhcPass _) = DataConCantHappen
 
-type instance XCTyFamInstDecl (GhcPass _) = EpAnn [AddEpAnn]
+type instance XCTyFamInstDecl (GhcPass _) = [AddEpAnn]
 type instance XXTyFamInstDecl (GhcPass _) = DataConCantHappen
 
 ------------- Pretty printing FamilyDecls -----------
@@ -513,7 +513,7 @@ pprTyClDeclFlavour (DataDecl { tcdDataDefn = HsDataDefn { dd_cons = nd } })
 instance OutputableBndrId p => Outputable (FunDep (GhcPass p)) where
   ppr = pprFunDep
 
-type instance XCFunDep    (GhcPass _) = EpAnn [AddEpAnn]
+type instance XCFunDep    (GhcPass _) = [AddEpAnn]
 type instance XXFunDep    (GhcPass _) = DataConCantHappen
 
 pprFundeps :: OutputableBndrId p => [FunDep (GhcPass p)] -> SDoc
@@ -547,7 +547,7 @@ type instance XCKindSig         (GhcPass _) = NoExtField
 type instance XTyVarSig         (GhcPass _) = NoExtField
 type instance XXFamilyResultSig (GhcPass _) = DataConCantHappen
 
-type instance XCFamilyDecl    (GhcPass _) = EpAnn [AddEpAnn]
+type instance XCFamilyDecl    (GhcPass _) = [AddEpAnn]
 type instance XXFamilyDecl    (GhcPass _) = DataConCantHappen
 
 
@@ -574,7 +574,7 @@ resultVariableName _                = Nothing
 
 ------------- Pretty printing FamilyDecls -----------
 
-type instance XCInjectivityAnn  (GhcPass _) = EpAnn [AddEpAnn]
+type instance XCInjectivityAnn  (GhcPass _) = [AddEpAnn]
 type instance XXInjectivityAnn  (GhcPass _) = DataConCantHappen
 
 instance OutputableBndrId p
@@ -621,7 +621,7 @@ instance OutputableBndrId p
 type instance XCHsDataDefn    (GhcPass _) = NoExtField
 type instance XXHsDataDefn    (GhcPass _) = DataConCantHappen
 
-type instance XCHsDerivingClause    (GhcPass _) = EpAnn [AddEpAnn]
+type instance XCHsDerivingClause    (GhcPass _) = [AddEpAnn]
 type instance XXHsDerivingClause    (GhcPass _) = DataConCantHappen
 
 instance OutputableBndrId p
@@ -657,7 +657,7 @@ instance OutputableBndrId p => Outputable (DerivClauseTys (GhcPass p)) where
   ppr (DctSingle _ ty) = ppr ty
   ppr (DctMulti _ tys) = parens (interpp'SP tys)
 
-type instance XStandaloneKindSig GhcPs = EpAnn [AddEpAnn]
+type instance XStandaloneKindSig GhcPs = [AddEpAnn]
 type instance XStandaloneKindSig GhcRn = NoExtField
 type instance XStandaloneKindSig GhcTc = NoExtField
 
@@ -666,11 +666,11 @@ type instance XXStandaloneKindSig (GhcPass p) = DataConCantHappen
 standaloneKindSigName :: StandaloneKindSig (GhcPass p) -> IdP (GhcPass p)
 standaloneKindSigName (StandaloneKindSig _ lname _) = unLoc lname
 
-type instance XConDeclGADT GhcPs = (EpUniToken "::" "∷", EpAnn [AddEpAnn])
+type instance XConDeclGADT GhcPs = (EpUniToken "::" "∷", [AddEpAnn])
 type instance XConDeclGADT GhcRn = NoExtField
 type instance XConDeclGADT GhcTc = NoExtField
 
-type instance XConDeclH98  GhcPs = EpAnn [AddEpAnn]
+type instance XConDeclH98  GhcPs = [AddEpAnn]
 type instance XConDeclH98  GhcRn = NoExtField
 type instance XConDeclH98  GhcTc = NoExtField
 
@@ -808,7 +808,7 @@ ppr_con_names = pprWithCommas (pprPrefixOcc . unLoc)
 ************************************************************************
 -}
 
-type instance XCFamEqn    (GhcPass _) r = EpAnn [AddEpAnn]
+type instance XCFamEqn    (GhcPass _) r = [AddEpAnn]
 type instance XXFamEqn    (GhcPass _) r = DataConCantHappen
 
 type instance Anno (FamEqn (GhcPass p) _) = SrcSpanAnnA
@@ -819,7 +819,7 @@ type instance XCClsInstDecl    GhcPs = ( Maybe (LWarningTxt GhcPs)
                                              -- The warning of the deprecated instance
                                              -- See Note [Implementation of deprecated instances]
                                              -- in GHC.Tc.Solver.Dict
-                                       , EpAnn [AddEpAnn]
+                                       , [AddEpAnn]
                                        , AnnSortKey DeclTag) -- For sorting the additional annotations
                                         -- TODO:AZ:tidy up
 type instance XCClsInstDecl    GhcRn = Maybe (LWarningTxt GhcRn)
@@ -1004,13 +1004,13 @@ type instance XCDerivDecl    GhcPs = ( Maybe (LWarningTxt GhcPs)
                                            -- The warning of the deprecated derivation
                                            -- See Note [Implementation of deprecated instances]
                                            -- in GHC.Tc.Solver.Dict
-                                     , EpAnn [AddEpAnn] )
+                                     , [AddEpAnn] )
 type instance XCDerivDecl    GhcRn = ( Maybe (LWarningTxt GhcRn)
                                            -- The warning of the deprecated derivation
                                            -- See Note [Implementation of deprecated instances]
                                            -- in GHC.Tc.Solver.Dict
-                                     , EpAnn [AddEpAnn] )
-type instance XCDerivDecl    GhcTc = EpAnn [AddEpAnn]
+                                     , [AddEpAnn] )
+type instance XCDerivDecl    GhcTc = [AddEpAnn]
 type instance XXDerivDecl    (GhcPass _) = DataConCantHappen
 
 derivDeprecation :: forall p. IsPass p
@@ -1048,15 +1048,15 @@ instance OutputableBndrId p
 ************************************************************************
 -}
 
-type instance XStockStrategy    GhcPs = EpAnn [AddEpAnn]
+type instance XStockStrategy    GhcPs = [AddEpAnn]
 type instance XStockStrategy    GhcRn = NoExtField
 type instance XStockStrategy    GhcTc = NoExtField
 
-type instance XAnyClassStrategy GhcPs = EpAnn [AddEpAnn]
+type instance XAnyClassStrategy GhcPs = [AddEpAnn]
 type instance XAnyClassStrategy GhcRn = NoExtField
 type instance XAnyClassStrategy GhcTc = NoExtField
 
-type instance XNewtypeStrategy  GhcPs = EpAnn [AddEpAnn]
+type instance XNewtypeStrategy  GhcPs = [AddEpAnn]
 type instance XNewtypeStrategy  GhcRn = NoExtField
 type instance XNewtypeStrategy  GhcTc = NoExtField
 
@@ -1064,7 +1064,7 @@ type instance XViaStrategy GhcPs = XViaStrategyPs
 type instance XViaStrategy GhcRn = LHsSigType GhcRn
 type instance XViaStrategy GhcTc = Type
 
-data XViaStrategyPs = XViaStrategyPs (EpAnn [AddEpAnn]) (LHsSigType GhcPs)
+data XViaStrategyPs = XViaStrategyPs [AddEpAnn] (LHsSigType GhcPs)
 
 instance OutputableBndrId p
         => Outputable (DerivStrategy (GhcPass p)) where
@@ -1103,7 +1103,7 @@ mapDerivStrategy f ds = foldDerivStrategy ds (ViaStrategy . f) ds
 ************************************************************************
 -}
 
-type instance XCDefaultDecl    GhcPs = EpAnn [AddEpAnn]
+type instance XCDefaultDecl    GhcPs = [AddEpAnn]
 type instance XCDefaultDecl    GhcRn = NoExtField
 type instance XCDefaultDecl    GhcTc = NoExtField
 
@@ -1122,11 +1122,11 @@ instance OutputableBndrId p
 ************************************************************************
 -}
 
-type instance XForeignImport   GhcPs = EpAnn [AddEpAnn]
+type instance XForeignImport   GhcPs = [AddEpAnn]
 type instance XForeignImport   GhcRn = NoExtField
 type instance XForeignImport   GhcTc = Coercion
 
-type instance XForeignExport   GhcPs = EpAnn [AddEpAnn]
+type instance XForeignExport   GhcPs = [AddEpAnn]
 type instance XForeignExport   GhcRn = NoExtField
 type instance XForeignExport   GhcTc = Coercion
 
@@ -1191,13 +1191,13 @@ instance OutputableBndrId p
 ************************************************************************
 -}
 
-type instance XCRuleDecls    GhcPs = (EpAnn [AddEpAnn], SourceText)
+type instance XCRuleDecls    GhcPs = ([AddEpAnn], SourceText)
 type instance XCRuleDecls    GhcRn = SourceText
 type instance XCRuleDecls    GhcTc = SourceText
 
 type instance XXRuleDecls    (GhcPass _) = DataConCantHappen
 
-type instance XHsRule       GhcPs = (EpAnn HsRuleAnn, SourceText)
+type instance XHsRule       GhcPs = (HsRuleAnn, SourceText)
 type instance XHsRule       GhcRn = (HsRuleRn, SourceText)
 type instance XHsRule       GhcTc = (HsRuleRn, SourceText)
 
@@ -1223,8 +1223,8 @@ instance NoAnn HsRuleAnn where
 flattenRuleDecls :: [LRuleDecls (GhcPass p)] -> [LRuleDecl (GhcPass p)]
 flattenRuleDecls decls = concatMap (rds_rules . unLoc) decls
 
-type instance XCRuleBndr    (GhcPass _) = EpAnn [AddEpAnn]
-type instance XRuleBndrSig  (GhcPass _) = EpAnn [AddEpAnn]
+type instance XCRuleBndr    (GhcPass _) = [AddEpAnn]
+type instance XRuleBndrSig  (GhcPass _) = [AddEpAnn]
 type instance XXRuleBndr    (GhcPass _) = DataConCantHappen
 
 instance (OutputableBndrId p) => Outputable (RuleDecls (GhcPass p)) where
@@ -1275,13 +1275,13 @@ pprFullRuleName st (L _ n) = pprWithSourceText st (doubleQuotes $ ftext n)
 ************************************************************************
 -}
 
-type instance XWarnings      GhcPs = (EpAnn [AddEpAnn], SourceText)
+type instance XWarnings      GhcPs = ([AddEpAnn], SourceText)
 type instance XWarnings      GhcRn = SourceText
 type instance XWarnings      GhcTc = SourceText
 
 type instance XXWarnDecls    (GhcPass _) = DataConCantHappen
 
-type instance XWarning      (GhcPass _) = (NamespaceSpecifier, EpAnn [AddEpAnn])
+type instance XWarning      (GhcPass _) = (NamespaceSpecifier, [AddEpAnn])
 type instance XXWarnDecl    (GhcPass _) = DataConCantHappen
 
 data NamespaceSpecifier
@@ -1336,7 +1336,7 @@ instance OutputableBndrId p
 ************************************************************************
 -}
 
-type instance XHsAnnotation (GhcPass _) = (EpAnn AnnPragma, SourceText)
+type instance XHsAnnotation (GhcPass _) = (AnnPragma, SourceText)
 type instance XXAnnDecl     (GhcPass _) = DataConCantHappen
 
 instance (OutputableBndrId p) => Outputable (AnnDecl (GhcPass p)) where
@@ -1358,13 +1358,13 @@ pprAnnProvenance (TypeAnnProvenance (L _ name))
 ************************************************************************
 -}
 
-type instance XCRoleAnnotDecl GhcPs = EpAnn [AddEpAnn]
+type instance XCRoleAnnotDecl GhcPs = [AddEpAnn]
 type instance XCRoleAnnotDecl GhcRn = NoExtField
 type instance XCRoleAnnotDecl GhcTc = NoExtField
 
 type instance XXRoleAnnotDecl (GhcPass _) = DataConCantHappen
 
-type instance Anno (Maybe Role) = EpAnn NoEpAnns
+type instance Anno (Maybe Role) = EpAnnCO
 
 instance OutputableBndr (IdP (GhcPass p))
        => Outputable (RoleAnnotDecl (GhcPass p)) where
@@ -1390,15 +1390,15 @@ type instance Anno (HsDecl (GhcPass _)) = SrcSpanAnnA
 type instance Anno (SpliceDecl (GhcPass p)) = SrcSpanAnnA
 type instance Anno (TyClDecl (GhcPass p)) = SrcSpanAnnA
 type instance Anno (FunDep (GhcPass p)) = SrcSpanAnnA
-type instance Anno (FamilyResultSig (GhcPass p)) = EpAnn NoEpAnns
+type instance Anno (FamilyResultSig (GhcPass p)) = EpAnnCO
 type instance Anno (FamilyDecl (GhcPass p)) = SrcSpanAnnA
-type instance Anno (InjectivityAnn (GhcPass p)) = EpAnn NoEpAnns
+type instance Anno (InjectivityAnn (GhcPass p)) = EpAnnCO
 type instance Anno CType = SrcSpanAnnP
-type instance Anno (HsDerivingClause (GhcPass p)) = EpAnn NoEpAnns
+type instance Anno (HsDerivingClause (GhcPass p)) = EpAnnCO
 type instance Anno (DerivClauseTys (GhcPass _)) = SrcSpanAnnC
 type instance Anno (StandaloneKindSig (GhcPass p)) = SrcSpanAnnA
 type instance Anno (ConDecl (GhcPass p)) = SrcSpanAnnA
-type instance Anno Bool = EpAnn NoEpAnns
+type instance Anno Bool = EpAnnCO
 type instance Anno [LocatedA (ConDeclField (GhcPass _))] = SrcSpanAnnL
 type instance Anno (FamEqn p (LocatedA (HsType p))) = SrcSpanAnnA
 type instance Anno (TyFamInstDecl (GhcPass p)) = SrcSpanAnnA
@@ -1409,18 +1409,18 @@ type instance Anno (InstDecl (GhcPass p)) = SrcSpanAnnA
 type instance Anno (DocDecl (GhcPass p)) = SrcSpanAnnA
 type instance Anno (DerivDecl (GhcPass p)) = SrcSpanAnnA
 type instance Anno OverlapMode = SrcSpanAnnP
-type instance Anno (DerivStrategy (GhcPass p)) = EpAnn NoEpAnns
+type instance Anno (DerivStrategy (GhcPass p)) = EpAnnCO
 type instance Anno (DefaultDecl (GhcPass p)) = SrcSpanAnnA
 type instance Anno (ForeignDecl (GhcPass p)) = SrcSpanAnnA
 type instance Anno (RuleDecls (GhcPass p)) = SrcSpanAnnA
 type instance Anno (RuleDecl (GhcPass p)) = SrcSpanAnnA
-type instance Anno (SourceText, RuleName) = EpAnn NoEpAnns
-type instance Anno (RuleBndr (GhcPass p)) = EpAnn NoEpAnns
+type instance Anno (SourceText, RuleName) = EpAnnCO
+type instance Anno (RuleBndr (GhcPass p)) = EpAnnCO
 type instance Anno (WarnDecls (GhcPass p)) = SrcSpanAnnA
 type instance Anno (WarnDecl (GhcPass p)) = SrcSpanAnnA
 type instance Anno (AnnDecl (GhcPass p)) = SrcSpanAnnA
 type instance Anno (RoleAnnotDecl (GhcPass p)) = SrcSpanAnnA
-type instance Anno (Maybe Role) = EpAnn NoEpAnns
+type instance Anno (Maybe Role) = EpAnnCO
 type instance Anno CCallConv   = SrcSpan
 type instance Anno Safety      = SrcSpan
 type instance Anno CExportSpec = SrcSpan
diff --git a/compiler/GHC/Hs/Dump.hs b/compiler/GHC/Hs/Dump.hs
index 9b8f384d0d03..7fe3cc8bff3e 100644
--- a/compiler/GHC/Hs/Dump.hs
+++ b/compiler/GHC/Hs/Dump.hs
@@ -57,6 +57,7 @@ showAstData bs ba a0 = blankLine $$ showAstData' a0
     showAstData' =
       generic
               `ext1Q` list
+              `extQ` list_addEpAnn
               `extQ` string `extQ` fastString `extQ` srcSpan `extQ` realSrcSpan
               `extQ` annotation
               `extQ` annotationModule
@@ -101,6 +102,12 @@ showAstData bs ba a0 = blankLine $$ showAstData' a0
             bytestring :: B.ByteString -> SDoc
             bytestring = text . normalize_newlines . show
 
+            list_addEpAnn :: [AddEpAnn] -> SDoc
+            list_addEpAnn ls = case ba of
+              BlankEpAnnotations -> parens
+                                       $ text "blanked:" <+> text "[AddEpAnn]"
+              NoBlankEpAnnotations -> list ls
+
             list []    = brackets empty
             list [x]   = brackets (showAstData' x)
             list (x1 : x2 : xs) =  (text "[" <> showAstData' x1)
diff --git a/compiler/GHC/Hs/Expr.hs b/compiler/GHC/Hs/Expr.hs
index a22048e03f0f..f2c489396f82 100644
--- a/compiler/GHC/Hs/Expr.hs
+++ b/compiler/GHC/Hs/Expr.hs
@@ -129,7 +129,7 @@ data SyntaxExprTc = SyntaxExprTc { syn_expr      :: HsExpr GhcTc
 -- | This is used for rebindable-syntax pieces that are too polymorphic
 -- for tcSyntaxOp (trS_fmap and the mzip in ParStmt)
 noExpr :: HsExpr (GhcPass p)
-noExpr = HsLit noComments (HsString (SourceText $ fsLit "noExpr") (fsLit "noExpr"))
+noExpr = HsLit noExtField (HsString (SourceText $ fsLit "noExpr") (fsLit "noExpr"))
 
 noSyntaxExpr :: forall p. IsPass p => SyntaxExpr (GhcPass p)
                               -- Before renaming, and sometimes after
@@ -185,10 +185,10 @@ data HsBracketTc = HsBracketTc
                                         -- pasted back in by the desugarer
   }
 
-type instance XTypedBracket GhcPs = EpAnn [AddEpAnn]
+type instance XTypedBracket GhcPs = [AddEpAnn]
 type instance XTypedBracket GhcRn = NoExtField
 type instance XTypedBracket GhcTc = HsBracketTc
-type instance XUntypedBracket GhcPs = EpAnn [AddEpAnn]
+type instance XUntypedBracket GhcPs = [AddEpAnn]
 type instance XUntypedBracket GhcRn = [PendingRnSplice] -- See Note [Pending Splices]
                                                         -- Output of the renamer is the *original* renamed expression,
                                                         -- plus _renamed_ splices to be type checked
@@ -220,15 +220,15 @@ type instance XRecSel              GhcTc = NoExtField
 
 -- OverLabel not present in GhcTc pass; see GHC.Rename.Expr
 -- Note [Handling overloaded and rebindable constructs]
-type instance XOverLabel     GhcPs = EpAnnCO
-type instance XOverLabel     GhcRn = EpAnnCO
+type instance XOverLabel     GhcPs = NoExtField
+type instance XOverLabel     GhcRn = NoExtField
 type instance XOverLabel     GhcTc = DataConCantHappen
 
 -- ---------------------------------------------------------------------
 
 type instance XVar           (GhcPass _) = NoExtField
 
-type instance XUnboundVar    GhcPs = EpAnn (Maybe EpAnnUnboundVar)
+type instance XUnboundVar    GhcPs = Maybe EpAnnUnboundVar
 type instance XUnboundVar    GhcRn = NoExtField
 type instance XUnboundVar    GhcTc = HoleExprRef
   -- We really don't need the whole HoleExprRef; just the IORef EvTerm
@@ -236,13 +236,13 @@ type instance XUnboundVar    GhcTc = HoleExprRef
   -- Much, much easier just to define HoleExprRef with a Data instance and
   -- store the whole structure.
 
-type instance XIPVar         GhcPs = EpAnnCO
-type instance XIPVar         GhcRn = EpAnnCO
+type instance XIPVar         GhcPs = NoExtField
+type instance XIPVar         GhcRn = NoExtField
 type instance XIPVar         GhcTc = DataConCantHappen
-type instance XOverLitE      (GhcPass _) = EpAnnCO
-type instance XLitE          (GhcPass _) = EpAnnCO
-type instance XLam           (GhcPass _) = EpAnn [AddEpAnn]
-type instance XApp           (GhcPass _) = EpAnnCO
+type instance XOverLitE      (GhcPass _) = NoExtField
+type instance XLitE          (GhcPass _) = NoExtField
+type instance XLam           (GhcPass _) = [AddEpAnn]
+type instance XApp           (GhcPass _) = NoExtField
 
 type instance XAppTypeE      GhcPs = EpToken "@"
 type instance XAppTypeE      GhcRn = NoExtField
@@ -250,21 +250,21 @@ type instance XAppTypeE      GhcTc = Type
 
 -- OpApp not present in GhcTc pass; see GHC.Rename.Expr
 -- Note [Handling overloaded and rebindable constructs]
-type instance XOpApp         GhcPs = EpAnn [AddEpAnn]
+type instance XOpApp         GhcPs = [AddEpAnn]
 type instance XOpApp         GhcRn = Fixity
 type instance XOpApp         GhcTc = DataConCantHappen
 
 -- SectionL, SectionR not present in GhcTc pass; see GHC.Rename.Expr
 -- Note [Handling overloaded and rebindable constructs]
-type instance XSectionL      GhcPs = EpAnnCO
-type instance XSectionR      GhcPs = EpAnnCO
-type instance XSectionL      GhcRn = EpAnnCO
-type instance XSectionR      GhcRn = EpAnnCO
+type instance XSectionL      GhcPs = NoExtField
+type instance XSectionR      GhcPs = NoExtField
+type instance XSectionL      GhcRn = NoExtField
+type instance XSectionR      GhcRn = NoExtField
 type instance XSectionL      GhcTc = DataConCantHappen
 type instance XSectionR      GhcTc = DataConCantHappen
 
 
-type instance XNegApp        GhcPs = EpAnn [AddEpAnn]
+type instance XNegApp        GhcPs = [AddEpAnn]
 type instance XNegApp        GhcRn = NoExtField
 type instance XNegApp        GhcTc = NoExtField
 
@@ -272,23 +272,23 @@ type instance XPar           GhcPs = (EpToken "(", EpToken ")")
 type instance XPar           GhcRn = NoExtField
 type instance XPar           GhcTc = NoExtField
 
-type instance XExplicitTuple GhcPs = EpAnn [AddEpAnn]
+type instance XExplicitTuple GhcPs = [AddEpAnn]
 type instance XExplicitTuple GhcRn = NoExtField
 type instance XExplicitTuple GhcTc = NoExtField
 
-type instance XExplicitSum   GhcPs = EpAnn AnnExplicitSum
+type instance XExplicitSum   GhcPs = AnnExplicitSum
 type instance XExplicitSum   GhcRn = NoExtField
 type instance XExplicitSum   GhcTc = [Type]
 
-type instance XCase          GhcPs = EpAnn EpAnnHsCase
+type instance XCase          GhcPs = EpAnnHsCase
 type instance XCase          GhcRn = HsMatchContextRn
 type instance XCase          GhcTc = HsMatchContextRn
 
-type instance XIf            GhcPs = EpAnn AnnsIf
+type instance XIf            GhcPs = AnnsIf
 type instance XIf            GhcRn = NoExtField
 type instance XIf            GhcTc = NoExtField
 
-type instance XMultiIf       GhcPs = EpAnn [AddEpAnn]
+type instance XMultiIf       GhcPs = [AddEpAnn]
 type instance XMultiIf       GhcRn = NoExtField
 type instance XMultiIf       GhcTc = Type
 
@@ -296,11 +296,11 @@ type instance XLet           GhcPs = (EpToken "let", EpToken "in")
 type instance XLet           GhcRn = NoExtField
 type instance XLet           GhcTc = NoExtField
 
-type instance XDo            GhcPs = EpAnn AnnList
+type instance XDo            GhcPs = AnnList
 type instance XDo            GhcRn = NoExtField
 type instance XDo            GhcTc = Type
 
-type instance XExplicitList  GhcPs = EpAnn AnnList
+type instance XExplicitList  GhcPs = AnnList
 type instance XExplicitList  GhcRn = NoExtField
 type instance XExplicitList  GhcTc = Type
 -- GhcPs: ExplicitList includes all source-level
@@ -311,11 +311,11 @@ type instance XExplicitList  GhcTc = Type
 -- See Note [Handling overloaded and rebindable constructs]
 -- in  GHC.Rename.Expr
 
-type instance XRecordCon     GhcPs = EpAnn [AddEpAnn]
+type instance XRecordCon     GhcPs = [AddEpAnn]
 type instance XRecordCon     GhcRn = NoExtField
 type instance XRecordCon     GhcTc = PostTcExpr   -- Instantiated constructor function
 
-type instance XRecordUpd     GhcPs = EpAnn [AddEpAnn]
+type instance XRecordUpd     GhcPs = [AddEpAnn]
 type instance XRecordUpd     GhcRn = NoExtField
 type instance XRecordUpd     GhcTc = DataConCantHappen
   -- We desugar record updates in the typechecker.
@@ -347,29 +347,29 @@ type instance XLHsRecUpdLabels GhcTc = DataConCantHappen
 
 type instance XLHsOLRecUpdLabels p = NoExtField
 
-type instance XGetField     GhcPs = EpAnnCO
+type instance XGetField     GhcPs = NoExtField
 type instance XGetField     GhcRn = NoExtField
 type instance XGetField     GhcTc = DataConCantHappen
 -- HsGetField is eliminated by the renamer. See [Handling overloaded
 -- and rebindable constructs].
 
-type instance XProjection     GhcPs = EpAnn AnnProjection
+type instance XProjection     GhcPs = AnnProjection
 type instance XProjection     GhcRn = NoExtField
 type instance XProjection     GhcTc = DataConCantHappen
 -- HsProjection is eliminated by the renamer. See [Handling overloaded
 -- and rebindable constructs].
 
-type instance XExprWithTySig GhcPs = EpAnn [AddEpAnn]
+type instance XExprWithTySig GhcPs = [AddEpAnn]
 type instance XExprWithTySig GhcRn = NoExtField
 type instance XExprWithTySig GhcTc = NoExtField
 
-type instance XArithSeq      GhcPs = EpAnn [AddEpAnn]
+type instance XArithSeq      GhcPs = [AddEpAnn]
 type instance XArithSeq      GhcRn = NoExtField
 type instance XArithSeq      GhcTc = PostTcExpr
 
-type instance XProc          (GhcPass _) = EpAnn [AddEpAnn]
+type instance XProc          (GhcPass _) = [AddEpAnn]
 
-type instance XStatic        GhcPs = EpAnn [AddEpAnn]
+type instance XStatic        GhcPs = [AddEpAnn]
 type instance XStatic        GhcRn = NameSet
 type instance XStatic        GhcTc = (NameSet, Type)
   -- Free variables and type of expression, this is stored for convenience as wiring in
@@ -428,10 +428,10 @@ instance NoAnn AnnsIf where
 
 -- ---------------------------------------------------------------------
 
-type instance XSCC           (GhcPass _) = (EpAnn AnnPragma, SourceText)
+type instance XSCC           (GhcPass _) = (AnnPragma, SourceText)
 type instance XXPragE        (GhcPass _) = DataConCantHappen
 
-type instance XCDotFieldOcc (GhcPass _) = EpAnn AnnFieldLabel
+type instance XCDotFieldOcc (GhcPass _) = AnnFieldLabel
 type instance XXDotFieldOcc (GhcPass _) = DataConCantHappen
 
 type instance XPresent         (GhcPass _) = NoExtField
@@ -1240,28 +1240,28 @@ names 'getField' and 'setField' are whatever in-scope names they are.
 ************************************************************************
 -}
 
-type instance XCmdArrApp  GhcPs = EpAnn AddEpAnn
+type instance XCmdArrApp  GhcPs = AddEpAnn
 type instance XCmdArrApp  GhcRn = NoExtField
 type instance XCmdArrApp  GhcTc = Type
 
-type instance XCmdArrForm GhcPs = EpAnn AnnList
+type instance XCmdArrForm GhcPs = AnnList
 type instance XCmdArrForm GhcRn = NoExtField
 type instance XCmdArrForm GhcTc = NoExtField
 
-type instance XCmdApp     (GhcPass _) = EpAnnCO
+type instance XCmdApp     (GhcPass _) = NoExtField
 type instance XCmdLam     (GhcPass _) = NoExtField
 
 type instance XCmdPar     GhcPs = (EpToken "(", EpToken ")")
 type instance XCmdPar     GhcRn = NoExtField
 type instance XCmdPar     GhcTc = NoExtField
 
-type instance XCmdCase    GhcPs = EpAnn EpAnnHsCase
+type instance XCmdCase    GhcPs = EpAnnHsCase
 type instance XCmdCase    GhcRn = NoExtField
 type instance XCmdCase    GhcTc = NoExtField
 
-type instance XCmdLamCase (GhcPass _) = EpAnn [AddEpAnn]
+type instance XCmdLamCase (GhcPass _) = [AddEpAnn]
 
-type instance XCmdIf      GhcPs = EpAnn AnnsIf
+type instance XCmdIf      GhcPs = AnnsIf
 type instance XCmdIf      GhcRn = NoExtField
 type instance XCmdIf      GhcTc = NoExtField
 
@@ -1269,7 +1269,7 @@ type instance XCmdLet     GhcPs = (EpToken "let", EpToken "in")
 type instance XCmdLet     GhcRn = NoExtField
 type instance XCmdLet     GhcTc = NoExtField
 
-type instance XCmdDo      GhcPs = EpAnn AnnList
+type instance XCmdDo      GhcPs = AnnList
 type instance XCmdDo      GhcRn = NoExtField
 type instance XCmdDo      GhcTc = Type
 
@@ -1463,7 +1463,7 @@ data MatchGroupTc
 
 type instance XXMatchGroup (GhcPass _) b = DataConCantHappen
 
-type instance XCMatch (GhcPass _) b = EpAnn [AddEpAnn]
+type instance XCMatch (GhcPass _) b = [AddEpAnn]
 type instance XXMatch (GhcPass _) b = DataConCantHappen
 
 instance (OutputableBndrId pr, Outputable body)
@@ -1649,7 +1649,7 @@ data RecStmtTc =
 
 type instance XLastStmt        (GhcPass _) (GhcPass _) b = NoExtField
 
-type instance XBindStmt        (GhcPass _) GhcPs b = EpAnn [AddEpAnn]
+type instance XBindStmt        (GhcPass _) GhcPs b = [AddEpAnn]
 type instance XBindStmt        (GhcPass _) GhcRn b = XBindStmtRn
 type instance XBindStmt        (GhcPass _) GhcTc b = XBindStmtTc
 
@@ -1673,17 +1673,17 @@ type instance XBodyStmt        (GhcPass _) GhcPs b = NoExtField
 type instance XBodyStmt        (GhcPass _) GhcRn b = NoExtField
 type instance XBodyStmt        (GhcPass _) GhcTc b = Type
 
-type instance XLetStmt         (GhcPass _) (GhcPass _) b = EpAnn [AddEpAnn]
+type instance XLetStmt         (GhcPass _) (GhcPass _) b = [AddEpAnn]
 
 type instance XParStmt         (GhcPass _) GhcPs b = NoExtField
 type instance XParStmt         (GhcPass _) GhcRn b = NoExtField
 type instance XParStmt         (GhcPass _) GhcTc b = Type
 
-type instance XTransStmt       (GhcPass _) GhcPs b = EpAnn [AddEpAnn]
+type instance XTransStmt       (GhcPass _) GhcPs b = [AddEpAnn]
 type instance XTransStmt       (GhcPass _) GhcRn b = NoExtField
 type instance XTransStmt       (GhcPass _) GhcTc b = Type
 
-type instance XRecStmt         (GhcPass _) GhcPs b = EpAnn AnnList
+type instance XRecStmt         (GhcPass _) GhcPs b = AnnList
 type instance XRecStmt         (GhcPass _) GhcRn b = NoExtField
 type instance XRecStmt         (GhcPass _) GhcTc b = RecStmtTc
 
@@ -1892,17 +1892,17 @@ data HsUntypedSpliceResult thing  -- 'thing' can be HsExpr or HsType
       }
   | HsUntypedSpliceNested SplicePointName -- A unique name to identify this splice point
 
-type instance XTypedSplice   GhcPs = (EpAnnCO, EpAnn [AddEpAnn])
+type instance XTypedSplice   GhcPs = [AddEpAnn]
 type instance XTypedSplice   GhcRn = SplicePointName
 type instance XTypedSplice   GhcTc = DelayedSplice
 
-type instance XUntypedSplice GhcPs = EpAnnCO
+type instance XUntypedSplice GhcPs = NoExtField
 type instance XUntypedSplice GhcRn = HsUntypedSpliceResult (HsExpr GhcRn)
 type instance XUntypedSplice GhcTc = DataConCantHappen
 
 -- HsUntypedSplice
-type instance XUntypedSpliceExpr GhcPs = EpAnn [AddEpAnn]
-type instance XUntypedSpliceExpr GhcRn = EpAnn [AddEpAnn]
+type instance XUntypedSpliceExpr GhcPs = [AddEpAnn]
+type instance XUntypedSpliceExpr GhcRn = [AddEpAnn]
 type instance XUntypedSpliceExpr GhcTc = DataConCantHappen
 
 type instance XQuasiQuote        p = NoExtField
@@ -2322,26 +2322,26 @@ type instance Anno (HsCmd (GhcPass p)) = SrcSpanAnnA
 
 type instance Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (HsCmd (GhcPass pr))))]
   = SrcSpanAnnL
-type instance Anno (HsCmdTop (GhcPass p)) = EpAnn NoEpAnns
+type instance Anno (HsCmdTop (GhcPass p)) = EpAnnCO
 type instance Anno [LocatedA (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p))))] = SrcSpanAnnL
 type instance Anno [LocatedA (Match (GhcPass p) (LocatedA (HsCmd  (GhcPass p))))] = SrcSpanAnnL
 type instance Anno (Match (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = SrcSpanAnnA
 type instance Anno (Match (GhcPass p) (LocatedA (HsCmd  (GhcPass p)))) = SrcSpanAnnA
-type instance Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = EpAnn NoEpAnns
-type instance Anno (GRHS (GhcPass p) (LocatedA (HsCmd  (GhcPass p)))) = EpAnn NoEpAnns
+type instance Anno (GRHS (GhcPass p) (LocatedA (HsExpr (GhcPass p)))) = EpAnnCO
+type instance Anno (GRHS (GhcPass p) (LocatedA (HsCmd  (GhcPass p)))) = EpAnnCO
 type instance Anno (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr)))) = SrcSpanAnnA
 
 type instance Anno (HsUntypedSplice (GhcPass p)) = SrcSpanAnnA
 
 type instance Anno [LocatedA (StmtLR (GhcPass pl) (GhcPass pr) (LocatedA (body (GhcPass pr))))] = SrcSpanAnnL
 
-type instance Anno (FieldLabelStrings (GhcPass p)) = EpAnn NoEpAnns
+type instance Anno (FieldLabelStrings (GhcPass p)) = EpAnnCO
 type instance Anno FieldLabelString                = SrcSpanAnnN
 
-type instance Anno FastString                      = EpAnn NoEpAnns
+type instance Anno FastString                      = EpAnnCO
   -- Used in HsQuasiQuote and perhaps elsewhere
 
-type instance Anno (DotFieldOcc (GhcPass p))       = EpAnn NoEpAnns
+type instance Anno (DotFieldOcc (GhcPass p))       = EpAnnCO
 
 instance (HasAnnotation (Anno a))
    => WrapXRec (GhcPass p) a where
diff --git a/compiler/GHC/Hs/ImpExp.hs b/compiler/GHC/Hs/ImpExp.hs
index 162152fab385..329a38a41d97 100644
--- a/compiler/GHC/Hs/ImpExp.hs
+++ b/compiler/GHC/Hs/ImpExp.hs
@@ -212,28 +212,28 @@ type instance XIEVar       GhcTc = NoExtField
 -- The additional field of type 'Maybe (WarningTxt pass)' holds information
 -- about export deprecation annotations and is thus set to Nothing when `IE`
 -- is used in an import list (since export deprecation can only be used in exports)
-type instance XIEThingAbs  GhcPs = (Maybe (LWarningTxt GhcPs), EpAnn [AddEpAnn])
-type instance XIEThingAbs  GhcRn = (Maybe (LWarningTxt GhcRn), EpAnn [AddEpAnn])
-type instance XIEThingAbs  GhcTc = EpAnn [AddEpAnn]
+type instance XIEThingAbs  GhcPs = (Maybe (LWarningTxt GhcPs), [AddEpAnn])
+type instance XIEThingAbs  GhcRn = (Maybe (LWarningTxt GhcRn), [AddEpAnn])
+type instance XIEThingAbs  GhcTc = [AddEpAnn]
 
 -- The additional field of type 'Maybe (WarningTxt pass)' holds information
 -- about export deprecation annotations and is thus set to Nothing when `IE`
 -- is used in an import list (since export deprecation can only be used in exports)
-type instance XIEThingAll  GhcPs = (Maybe (LWarningTxt GhcPs), EpAnn [AddEpAnn])
-type instance XIEThingAll  GhcRn = (Maybe (LWarningTxt GhcRn), EpAnn [AddEpAnn])
-type instance XIEThingAll  GhcTc = EpAnn [AddEpAnn]
+type instance XIEThingAll  GhcPs = (Maybe (LWarningTxt GhcPs), [AddEpAnn])
+type instance XIEThingAll  GhcRn = (Maybe (LWarningTxt GhcRn), [AddEpAnn])
+type instance XIEThingAll  GhcTc = [AddEpAnn]
 
 -- The additional field of type 'Maybe (WarningTxt pass)' holds information
 -- about export deprecation annotations and is thus set to Nothing when `IE`
 -- is used in an import list (since export deprecation can only be used in exports)
-type instance XIEThingWith GhcPs = (Maybe (LWarningTxt GhcPs), EpAnn [AddEpAnn])
-type instance XIEThingWith GhcRn = (Maybe (LWarningTxt GhcRn), EpAnn [AddEpAnn])
-type instance XIEThingWith GhcTc = EpAnn [AddEpAnn]
+type instance XIEThingWith GhcPs = (Maybe (LWarningTxt GhcPs), [AddEpAnn])
+type instance XIEThingWith GhcRn = (Maybe (LWarningTxt GhcRn), [AddEpAnn])
+type instance XIEThingWith GhcTc = [AddEpAnn]
 
 -- The additional field of type 'Maybe (WarningTxt pass)' holds information
 -- about export deprecation annotations and is thus set to Nothing when `IE`
 -- is used in an import list (since export deprecation can only be used in exports)
-type instance XIEModuleContents  GhcPs = (Maybe (LWarningTxt GhcPs), EpAnn [AddEpAnn])
+type instance XIEModuleContents  GhcPs = (Maybe (LWarningTxt GhcPs), [AddEpAnn])
 type instance XIEModuleContents  GhcRn = Maybe (LWarningTxt GhcRn)
 type instance XIEModuleContents  GhcTc = NoExtField
 
diff --git a/compiler/GHC/Hs/Pat.hs b/compiler/GHC/Hs/Pat.hs
index 5d0e90a5ef69..cedc2adaeb2f 100644
--- a/compiler/GHC/Hs/Pat.hs
+++ b/compiler/GHC/Hs/Pat.hs
@@ -93,7 +93,7 @@ type instance XWildPat GhcTc = Type
 
 type instance XVarPat  (GhcPass _) = NoExtField
 
-type instance XLazyPat GhcPs = EpAnn [AddEpAnn] -- For '~'
+type instance XLazyPat GhcPs = [AddEpAnn] -- For '~'
 type instance XLazyPat GhcRn = NoExtField
 type instance XLazyPat GhcTc = NoExtField
 
@@ -105,11 +105,11 @@ type instance XParPat  GhcPs = (EpToken "(", EpToken ")")
 type instance XParPat  GhcRn = NoExtField
 type instance XParPat  GhcTc = NoExtField
 
-type instance XBangPat GhcPs = EpAnn [AddEpAnn] -- For '!'
+type instance XBangPat GhcPs = [AddEpAnn] -- For '!'
 type instance XBangPat GhcRn = NoExtField
 type instance XBangPat GhcTc = NoExtField
 
-type instance XListPat GhcPs = EpAnn AnnList
+type instance XListPat GhcPs = AnnList
   -- After parsing, ListPat can refer to a built-in Haskell list pattern
   -- or an overloaded list pattern.
 type instance XListPat GhcRn = NoExtField
@@ -119,19 +119,19 @@ type instance XListPat GhcRn = NoExtField
 type instance XListPat GhcTc = Type
   -- List element type, for use in hsPatType.
 
-type instance XTuplePat GhcPs = EpAnn [AddEpAnn]
+type instance XTuplePat GhcPs = [AddEpAnn]
 type instance XTuplePat GhcRn = NoExtField
 type instance XTuplePat GhcTc = [Type]
 
-type instance XSumPat GhcPs = EpAnn EpAnnSumPat
+type instance XSumPat GhcPs = EpAnnSumPat
 type instance XSumPat GhcRn = NoExtField
 type instance XSumPat GhcTc = [Type]
 
-type instance XConPat GhcPs = EpAnn [AddEpAnn]
+type instance XConPat GhcPs = [AddEpAnn]
 type instance XConPat GhcRn = NoExtField
 type instance XConPat GhcTc = ConPatTc
 
-type instance XViewPat GhcPs = EpAnn [AddEpAnn]
+type instance XViewPat GhcPs = [AddEpAnn]
 type instance XViewPat GhcRn = Maybe (HsExpr GhcRn)
   -- The @HsExpr GhcRn@ gives an inverse to the view function.
   -- This is used for overloaded lists in particular.
@@ -147,15 +147,15 @@ type instance XSplicePat GhcTc = DataConCantHappen
 
 type instance XLitPat    (GhcPass _) = NoExtField
 
-type instance XNPat GhcPs = EpAnn [AddEpAnn]
-type instance XNPat GhcRn = EpAnn [AddEpAnn]
+type instance XNPat GhcPs = [AddEpAnn]
+type instance XNPat GhcRn = [AddEpAnn]
 type instance XNPat GhcTc = Type
 
-type instance XNPlusKPat GhcPs = EpAnn EpaLocation -- Of the "+"
+type instance XNPlusKPat GhcPs = EpaLocation -- Of the "+"
 type instance XNPlusKPat GhcRn = NoExtField
 type instance XNPlusKPat GhcTc = Type
 
-type instance XSigPat GhcPs = EpAnn [AddEpAnn]
+type instance XSigPat GhcPs = [AddEpAnn]
 type instance XSigPat GhcRn = NoExtField
 type instance XSigPat GhcTc = Type
 
@@ -180,7 +180,7 @@ type instance XConPatTyArg GhcPs = EpToken "@"
 type instance XConPatTyArg GhcRn = NoExtField
 type instance XConPatTyArg GhcTc = NoExtField
 
-type instance XHsFieldBind _ = EpAnn [AddEpAnn]
+type instance XHsFieldBind _ = [AddEpAnn]
 
 -- ---------------------------------------------------------------------
 
@@ -896,7 +896,7 @@ collectEvVarsPat pat =
 -}
 
 type instance Anno (Pat (GhcPass p)) = SrcSpanAnnA
-type instance Anno (HsOverLit (GhcPass p)) = EpAnn NoEpAnns
+type instance Anno (HsOverLit (GhcPass p)) = EpAnnCO
 type instance Anno ConLike = SrcSpanAnnN
 type instance Anno (HsFieldBind lhs rhs) = SrcSpanAnnA
 type instance Anno RecFieldsDotDot = SrcSpan
diff --git a/compiler/GHC/Hs/Type.hs b/compiler/GHC/Hs/Type.hs
index 9fa25a17536f..4ace10c61ac4 100644
--- a/compiler/GHC/Hs/Type.hs
+++ b/compiler/GHC/Hs/Type.hs
@@ -305,8 +305,8 @@ mkEmptyWildCardBndrs x = HsWC { hswc_body = x
 
 --------------------------------------------------
 
-type instance XUserTyVar    (GhcPass _) = EpAnn [AddEpAnn]
-type instance XKindedTyVar  (GhcPass _) = EpAnn [AddEpAnn]
+type instance XUserTyVar    (GhcPass _) = [AddEpAnn]
+type instance XKindedTyVar  (GhcPass _) = [AddEpAnn]
 
 type instance XXTyVarBndr   (GhcPass _) = DataConCantHappen
 
@@ -349,17 +349,17 @@ type instance XXBndrVis (GhcPass _) = DataConCantHappen
 
 type instance XForAllTy        (GhcPass _) = NoExtField
 type instance XQualTy          (GhcPass _) = NoExtField
-type instance XTyVar           (GhcPass _) = EpAnn [AddEpAnn]
+type instance XTyVar           (GhcPass _) = [AddEpAnn]
 type instance XAppTy           (GhcPass _) = NoExtField
-type instance XFunTy           (GhcPass _) = EpAnnCO
-type instance XListTy          (GhcPass _) = EpAnn AnnParen
-type instance XTupleTy         (GhcPass _) = EpAnn AnnParen
-type instance XSumTy           (GhcPass _) = EpAnn AnnParen
-type instance XOpTy            (GhcPass _) = EpAnn [AddEpAnn]
-type instance XParTy           (GhcPass _) = EpAnn AnnParen
-type instance XIParamTy        (GhcPass _) = EpAnn [AddEpAnn]
+type instance XFunTy           (GhcPass _) = NoExtField
+type instance XListTy          (GhcPass _) = AnnParen
+type instance XTupleTy         (GhcPass _) = AnnParen
+type instance XSumTy           (GhcPass _) = AnnParen
+type instance XOpTy            (GhcPass _) = [AddEpAnn]
+type instance XParTy           (GhcPass _) = AnnParen
+type instance XIParamTy        (GhcPass _) = [AddEpAnn]
 type instance XStarTy          (GhcPass _) = NoExtField
-type instance XKindSig         (GhcPass _) = EpAnn [AddEpAnn]
+type instance XKindSig         (GhcPass _) = [AddEpAnn]
 
 type instance XAppKindTy       GhcPs = EpToken "@"
 type instance XAppKindTy       GhcRn = NoExtField
@@ -369,18 +369,18 @@ type instance XSpliceTy        GhcPs = NoExtField
 type instance XSpliceTy        GhcRn = HsUntypedSpliceResult (LHsType GhcRn)
 type instance XSpliceTy        GhcTc = Kind
 
-type instance XDocTy           (GhcPass _) = EpAnn [AddEpAnn]
-type instance XBangTy          (GhcPass _) = EpAnn [AddEpAnn]
+type instance XDocTy           (GhcPass _) = [AddEpAnn]
+type instance XBangTy          (GhcPass _) = [AddEpAnn]
 
-type instance XRecTy           GhcPs = EpAnn AnnList
+type instance XRecTy           GhcPs = AnnList
 type instance XRecTy           GhcRn = NoExtField
 type instance XRecTy           GhcTc = NoExtField
 
-type instance XExplicitListTy  GhcPs = EpAnn [AddEpAnn]
+type instance XExplicitListTy  GhcPs = [AddEpAnn]
 type instance XExplicitListTy  GhcRn = NoExtField
 type instance XExplicitListTy  GhcTc = Kind
 
-type instance XExplicitTupleTy GhcPs = EpAnn [AddEpAnn]
+type instance XExplicitTupleTy GhcPs = [AddEpAnn]
 type instance XExplicitTupleTy GhcRn = NoExtField
 type instance XExplicitTupleTy GhcTc = [Kind]
 
@@ -470,7 +470,7 @@ pprHsArrow (HsUnrestrictedArrow _) = pprArrowWithMultiplicity visArgTypeLike (Le
 pprHsArrow (HsLinearArrow _)       = pprArrowWithMultiplicity visArgTypeLike (Left True)
 pprHsArrow (HsExplicitMult _ p)    = pprArrowWithMultiplicity visArgTypeLike (Right (ppr p))
 
-type instance XConDeclField  (GhcPass _) = EpAnn [AddEpAnn]
+type instance XConDeclField  (GhcPass _) = [AddEpAnn]
 type instance XXConDeclField (GhcPass _) = DataConCantHappen
 
 instance OutputableBndrId p
@@ -615,15 +615,12 @@ splitHsFunType ty = go ty
       = let
           (anns, cs, args, res) = splitHsFunType ty
           anns' = anns ++ annParen2AddEpAnn an
-          cs' = cs S.<> epAnnComments l S.<> epAnnComments an
+          cs' = cs S.<> epAnnComments l
         in (anns', cs', args, res)
 
-    go (L ll (HsFunTy (EpAnn _ _ cs) mult x y))
+    go (L ll (HsFunTy _ mult x y))
       | (anns, csy, args, res) <- splitHsFunType y
-      = (anns, csy S.<> epAnnComments ll, HsScaled mult x':args, res)
-      where
-        L l t = x
-        x' = L (addCommentsToEpAnn l cs) t
+      = (anns, csy S.<> epAnnComments ll, HsScaled mult x:args, res)
 
     go other = ([], emptyComments, [], other)
 
@@ -1483,7 +1480,7 @@ type instance Anno (HsTyVarBndr _flag GhcRn) = SrcSpanAnnA
 type instance Anno (HsTyVarBndr _flag GhcTc) = SrcSpanAnnA
 
 type instance Anno (HsOuterTyVarBndrs _ (GhcPass _)) = SrcSpanAnnA
-type instance Anno HsIPName = EpAnn NoEpAnns
+type instance Anno HsIPName = EpAnnCO
 type instance Anno (ConDeclField (GhcPass p)) = SrcSpanAnnA
 
 type instance Anno (FieldOcc (GhcPass p)) = SrcSpanAnnA
diff --git a/compiler/GHC/Hs/Utils.hs b/compiler/GHC/Hs/Utils.hs
index 942b3f6db011..8e3cb7da4bed 100644
--- a/compiler/GHC/Hs/Utils.hs
+++ b/compiler/GHC/Hs/Utils.hs
@@ -240,14 +240,14 @@ mkLocatedList ms = case nonEmpty ms of
     Just ms1 -> L (noAnnSrcSpan $ locA $ combineLocsA (NE.head ms1) (NE.last ms1)) ms
 
 mkHsApp :: LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id)
-mkHsApp e1 e2 = addCLocA e1 e2 (HsApp noComments e1 e2)
+mkHsApp e1 e2 = addCLocA e1 e2 (HsApp noExtField e1 e2)
 
 mkHsAppWith
   :: (LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> HsExpr (GhcPass id) -> LHsExpr (GhcPass id))
   -> LHsExpr (GhcPass id)
   -> LHsExpr (GhcPass id)
   -> LHsExpr (GhcPass id)
-mkHsAppWith mkLocated e1 e2 = mkLocated e1 e2 (HsApp noAnn e1 e2)
+mkHsAppWith mkLocated e1 e2 = mkLocated e1 e2 (HsApp noExtField e1 e2)
 
 mkHsApps
   :: LHsExpr (GhcPass id) -> [LHsExpr (GhcPass id)] -> LHsExpr (GhcPass id)
@@ -332,16 +332,16 @@ mkHsIntegral   :: IntegralLit -> HsOverLit GhcPs
 mkHsFractional :: FractionalLit -> HsOverLit GhcPs
 mkHsIsString   :: SourceText -> FastString -> HsOverLit GhcPs
 mkHsDo         :: HsDoFlavour -> LocatedL [ExprLStmt GhcPs] -> HsExpr GhcPs
-mkHsDoAnns     :: HsDoFlavour -> LocatedL [ExprLStmt GhcPs] -> EpAnn AnnList -> HsExpr GhcPs
+mkHsDoAnns     :: HsDoFlavour -> LocatedL [ExprLStmt GhcPs] -> AnnList -> HsExpr GhcPs
 mkHsComp       :: HsDoFlavour -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
                -> HsExpr GhcPs
 mkHsCompAnns   :: HsDoFlavour -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
-               -> EpAnn AnnList
+               -> AnnList
                -> HsExpr GhcPs
 
-mkNPat      :: LocatedAn NoEpAnns (HsOverLit GhcPs) -> Maybe (SyntaxExpr GhcPs) -> EpAnn [AddEpAnn]
+mkNPat      :: LocatedAn NoEpAnns (HsOverLit GhcPs) -> Maybe (SyntaxExpr GhcPs) -> [AddEpAnn]
             -> Pat GhcPs
-mkNPlusKPat :: LocatedN RdrName -> LocatedAn NoEpAnns (HsOverLit GhcPs) -> EpAnn EpaLocation
+mkNPlusKPat :: LocatedN RdrName -> LocatedAn NoEpAnns (HsOverLit GhcPs) -> EpaLocation
             -> Pat GhcPs
 
 -- NB: The following functions all use noSyntaxExpr: the generated expressions
@@ -350,7 +350,7 @@ mkLastStmt :: IsPass idR => LocatedA (bodyR (GhcPass idR))
            -> StmtLR (GhcPass idL) (GhcPass idR) (LocatedA (bodyR (GhcPass idR)))
 mkBodyStmt :: LocatedA (bodyR GhcPs)
            -> StmtLR (GhcPass idL) GhcPs (LocatedA (bodyR GhcPs))
-mkPsBindStmt :: EpAnn [AddEpAnn] -> LPat GhcPs -> LocatedA (bodyR GhcPs)
+mkPsBindStmt :: [AddEpAnn] -> LPat GhcPs -> LocatedA (bodyR GhcPs)
              -> StmtLR GhcPs GhcPs (LocatedA (bodyR GhcPs))
 mkRnBindStmt :: LPat GhcRn -> LocatedA (bodyR GhcRn)
              -> StmtLR GhcRn GhcRn (LocatedA (bodyR GhcRn))
@@ -374,7 +374,7 @@ mkRecStmt :: forall (idL :: Pass) bodyR.
                              (Anno (StmtLR (GhcPass idL) GhcPs bodyR))
                              (StmtLR (GhcPass idL) GhcPs bodyR)]
                         ~ SrcSpanAnnL)
-                 => EpAnn AnnList
+                 => AnnList
                  -> LocatedL [LStmtLR (GhcPass idL) GhcPs bodyR]
                  -> StmtLR (GhcPass idL) GhcPs bodyR
 mkRecStmt anns stmts  = (emptyRecStmt' anns :: StmtLR (GhcPass idL) GhcPs bodyR)
@@ -397,12 +397,12 @@ mkHsCompAnns ctxt stmts expr@(L l e) anns = mkHsDoAnns ctxt (L loc (stmts ++ [la
     loc  = noAnnSrcSpan $ getHasLocList (last_stmt:stmts)
 
 -- restricted to GhcPs because other phases might need a SyntaxExpr
-mkHsIf :: LHsExpr GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs -> EpAnn AnnsIf
+mkHsIf :: LHsExpr GhcPs -> LHsExpr GhcPs -> LHsExpr GhcPs -> AnnsIf
        -> HsExpr GhcPs
 mkHsIf c a b anns = HsIf anns c a b
 
 -- restricted to GhcPs because other phases might need a SyntaxExpr
-mkHsCmdIf :: LHsExpr GhcPs -> LHsCmd GhcPs -> LHsCmd GhcPs -> EpAnn AnnsIf
+mkHsCmdIf :: LHsExpr GhcPs -> LHsCmd GhcPs -> LHsCmd GhcPs -> AnnsIf
        -> HsCmd GhcPs
 mkHsCmdIf c a b anns = HsCmdIf anns noSyntaxExpr c a b
 
@@ -410,17 +410,17 @@ mkNPat lit neg anns  = NPat anns lit neg noSyntaxExpr
 mkNPlusKPat id lit anns
   = NPlusKPat anns id lit (unLoc lit) noSyntaxExpr noSyntaxExpr
 
-mkTransformStmt    :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
+mkTransformStmt    :: [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
                    -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
-mkTransformByStmt  :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
+mkTransformByStmt  :: [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
                    -> LHsExpr GhcPs -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
-mkGroupUsingStmt   :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
+mkGroupUsingStmt   :: [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
                    -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
-mkGroupByUsingStmt :: EpAnn [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
+mkGroupByUsingStmt :: [AddEpAnn] -> [ExprLStmt GhcPs] -> LHsExpr GhcPs
                    -> LHsExpr GhcPs
                    -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
 
-emptyTransStmt :: EpAnn [AddEpAnn] -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
+emptyTransStmt :: [AddEpAnn] -> StmtLR GhcPs GhcPs (LHsExpr GhcPs)
 emptyTransStmt anns = TransStmt { trS_ext = anns
                                 , trS_form = panic "emptyTransStmt: form"
                                 , trS_stmts = [], trS_bndrs = []
@@ -469,7 +469,7 @@ emptyRecStmtName = emptyRecStmt' noExtField
 emptyRecStmtId   = emptyRecStmt' unitRecStmtTc
                                         -- a panic might trigger during zonking
 
-mkLetStmt :: EpAnn [AddEpAnn] -> HsLocalBinds GhcPs -> StmtLR GhcPs GhcPs (LocatedA b)
+mkLetStmt :: [AddEpAnn] -> HsLocalBinds GhcPs -> StmtLR GhcPs GhcPs (LocatedA b)
 mkLetStmt anns binds = LetStmt anns binds
 
 -------------------------------
@@ -514,10 +514,10 @@ nlHsDataCon :: DataCon -> LHsExpr GhcTc
 nlHsDataCon con = noLocA (mkConLikeTc (RealDataCon con))
 
 nlHsLit :: HsLit (GhcPass p) -> LHsExpr (GhcPass p)
-nlHsLit n = noLocA (HsLit noComments n)
+nlHsLit n = noLocA (HsLit noExtField n)
 
 nlHsIntLit :: Integer -> LHsExpr (GhcPass p)
-nlHsIntLit n = noLocA (HsLit noComments (HsInt noExtField (mkIntegralLit n)))
+nlHsIntLit n = noLocA (HsLit noExtField (HsInt noExtField (mkIntegralLit n)))
 
 nlVarPat :: IsSrcSpanAnn p a
         => IdP (GhcPass p) -> LPat (GhcPass p)
@@ -527,7 +527,7 @@ nlLitPat :: HsLit GhcPs -> LPat GhcPs
 nlLitPat l = noLocA (LitPat noExtField l)
 
 nlHsApp :: IsPass id => LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id)
-nlHsApp f x = noLocA (HsApp noComments f (mkLHsPar x))
+nlHsApp f x = noLocA (HsApp noExtField f (mkLHsPar x))
 
 nlHsSyntaxApps :: SyntaxExprTc -> [LHsExpr GhcTc]
                -> LHsExpr GhcTc
@@ -542,7 +542,7 @@ nlHsVarApps :: IsSrcSpanAnn p a
 nlHsVarApps f xs = noLocA (foldl' mk (HsVar noExtField (noLocA f))
                                          (map ((HsVar noExtField) . noLocA) xs))
                  where
-                   mk f a = HsApp noComments (noLocA f) (noLocA a)
+                   mk f a = HsApp noExtField (noLocA f) (noLocA a)
 
 nlConVarPat :: RdrName -> [RdrName] -> LPat GhcPs
 nlConVarPat con vars = nlConPat con (map nlVarPat vars)
@@ -633,7 +633,7 @@ nlHsParTy :: LHsType (GhcPass p)                        -> LHsType (GhcPass p)
 
 nlHsAppTy f t = noLocA (HsAppTy noExtField f t)
 nlHsTyVar p x = noLocA (HsTyVar noAnn p (noLocA x))
-nlHsFunTy a b = noLocA (HsFunTy noAnn (HsUnrestrictedArrow x) a b)
+nlHsFunTy a b = noLocA (HsFunTy noExtField (HsUnrestrictedArrow x) a b)
   where
     x = case ghcPass @p of
       GhcPs -> noAnn
@@ -851,7 +851,7 @@ mkVarBind var rhs = L (getLoc rhs) $
                               var_id = var, var_rhs = rhs }
 
 mkPatSynBind :: LocatedN RdrName -> HsPatSynDetails GhcPs
-             -> LPat GhcPs -> HsPatSynDir GhcPs -> EpAnn [AddEpAnn] -> HsBind GhcPs
+             -> LPat GhcPs -> HsPatSynDir GhcPs -> [AddEpAnn] -> HsBind GhcPs
 mkPatSynBind name details lpat dir anns = PatSynBind noExtField psb
   where
     psb = PSB{ psb_ext = anns
diff --git a/compiler/GHC/HsToCore/Arrows.hs b/compiler/GHC/HsToCore/Arrows.hs
index 9456c5915990..65a13d3f37e4 100644
--- a/compiler/GHC/HsToCore/Arrows.hs
+++ b/compiler/GHC/HsToCore/Arrows.hs
@@ -784,9 +784,9 @@ dsCases ids local_vars stack_id stack_ty res_ty
   let
       left_id  = mkConLikeTc (RealDataCon left_con)
       right_id = mkConLikeTc (RealDataCon right_con)
-      left_expr  ty1 ty2 e = noLocA $ HsApp noComments
+      left_expr  ty1 ty2 e = noLocA $ HsApp noExtField
                          (noLocA $ mkHsWrap (mkWpTyApps [ty1, ty2]) left_id ) e
-      right_expr ty1 ty2 e = noLocA $ HsApp noComments
+      right_expr ty1 ty2 e = noLocA $ HsApp noExtField
                          (noLocA $ mkHsWrap (mkWpTyApps [ty1, ty2]) right_id) e
 
       -- Prefix each tuple with a distinct series of Left's and Right's,
diff --git a/compiler/GHC/Parser.y b/compiler/GHC/Parser.y
index 8336070988ab..3c7fcb98709d 100644
--- a/compiler/GHC/Parser.y
+++ b/compiler/GHC/Parser.y
@@ -758,10 +758,10 @@ identifier :: { LocatedN RdrName }
         | qcon                          { $1 }
         | qvarop                        { $1 }
         | qconop                        { $1 }
-    | '(' '->' ')'      {% amsrn (sLL $1 $> $ getRdrName unrestrictedFunTyCon)
-                                 (NameAnnRArrow (isUnicode $2) (Just $ glAA $1) (glAA $2) (Just $ glAA $3) []) }
-    | '->'              {% amsrn (sLL $1 $> $ getRdrName unrestrictedFunTyCon)
-                                 (NameAnnRArrow (isUnicode $1) Nothing (glAA $1) Nothing []) }
+    | '(' '->' ')'      {% amsr (sLL $1 $> $ getRdrName unrestrictedFunTyCon)
+                                (NameAnnRArrow (isUnicode $2) (Just $ glAA $1) (glAA $2) (Just $ glAA $3) []) }
+    | '->'              {% amsr (sLL $1 $> $ getRdrName unrestrictedFunTyCon)
+                                (NameAnnRArrow (isUnicode $1) Nothing (glAA $1) Nothing []) }
 
 -----------------------------------------------------------------------------
 -- Backpack stuff
@@ -880,7 +880,7 @@ unitdecl :: { LHsUnitDecl PackageName }
 signature :: { Located (HsModule GhcPs) }
        : 'signature' modid maybe_warning_pragma maybeexports 'where' body
              {% fileSrcSpan >>= \ loc ->
-                acs (\cs-> (L loc (HsModule (XModulePs
+                acs loc (\loc cs-> (L loc (HsModule (XModulePs
                                                (EpAnn (spanAsAnchor loc) (AnnsModule [mj AnnSignature $1, mj AnnWhere $5] (fstOf3 $6) Nothing) cs)
                                                (thdOf3 $6) $3 Nothing)
                                             (Just $2) $4 (fst $ sndOf3 $6)
@@ -938,14 +938,14 @@ top1    :: { ([LImportDecl GhcPs], [LHsDecl GhcPs]) }
 header  :: { Located (HsModule GhcPs) }
         : 'module' modid maybe_warning_pragma maybeexports 'where' header_body
                 {% fileSrcSpan >>= \ loc ->
-                   acs (\cs -> (L loc (HsModule (XModulePs
+                   acs loc (\loc cs -> (L loc (HsModule (XModulePs
                                                    (EpAnn (spanAsAnchor loc) (AnnsModule [mj AnnModule $1,mj AnnWhere $5] [] Nothing) cs)
                                                    EpNoLayout $3 Nothing)
                                                 (Just $2) $4 $6 []
                           ))) }
         | 'signature' modid maybe_warning_pragma maybeexports 'where' header_body
                 {% fileSrcSpan >>= \ loc ->
-                   acs (\cs -> (L loc (HsModule (XModulePs
+                   acs loc (\loc cs -> (L loc (HsModule (XModulePs
                                                    (EpAnn (spanAsAnchor loc) (AnnsModule [mj AnnModule $1,mj AnnWhere $5] [] Nothing) cs)
                                                    EpNoLayout $3 Nothing)
                                                 (Just $2) $4 $6 []
@@ -973,7 +973,7 @@ header_top_importdecls :: { [LImportDecl GhcPs] }
 -- The Export List
 
 maybeexports :: { (Maybe (LocatedL [LIE GhcPs])) }
-        :  '(' exportlist ')'       {% fmap Just $ amsrl (sLL $1 $> (fromOL $ snd $2))
+        :  '(' exportlist ')'       {% fmap Just $ amsr (sLL $1 $> (fromOL $ snd $2))
                                         (AnnList Nothing (Just $ mop $1) (Just $ mcp $3) (fst $2) []) }
         |  {- empty -}              { Nothing }
 
@@ -1008,7 +1008,7 @@ export  :: { OrdList (LIE GhcPs) }
                                                           ; return $ unitOL $ reLoc $ sL span $ impExp } }
         | maybe_warning_pragma 'module' modid            {% do { let { span = (maybe comb2 comb3 $1) $2 $>
                                                                    ; anchor = (maybe glR (\loc -> spanAsAnchor . comb2 loc) $1) $2 }
-                                                          ; locImpExp <- acs (\cs -> sL span (IEModuleContents ($1, EpAnn anchor [mj AnnModule $2] cs) $3))
+                                                          ; locImpExp <- return (sL span (IEModuleContents ($1, [mj AnnModule $2]) $3))
                                                           ; return $ unitOL $ reLoc $ locImpExp } }
         | maybe_warning_pragma 'pattern' qcon            { let span = (maybe comb2 comb3 $1) $2 $>
                                                        in unitOL $ reLoc $ sL span $ IEVar $1 (sLLa $2 $> (IEPattern (glAA $2) $3)) }
@@ -1103,7 +1103,7 @@ importdecl :: { LImportDecl GhcPs }
                              , importDeclAnnAs        = fst $8
                              }
                   ; let loc = (comb5 $1 $6 $7 (snd $8) $9);
-                  ; fmap reLoc $ acs (\cs -> L loc $
+                  ; fmap reLoc $ acs loc (\loc cs -> L loc $
                       ImportDecl { ideclExt = XImportDeclPass (EpAnn (spanAsAnchor loc) anns cs) (snd $ fst $2) False
                                   , ideclName = $6, ideclPkgQual = snd $5
                                   , ideclSource = snd $2, ideclSafe = snd $3
@@ -1148,10 +1148,10 @@ maybeimpspec :: { Located (Maybe (ImportListInterpretation, LocatedL [LIE GhcPs]
         | {- empty -}              { noLoc Nothing }
 
 impspec :: { Located (ImportListInterpretation, LocatedL [LIE GhcPs]) }
-        :  '(' importlist ')'               {% do { es <- amsrl (sLL $1 $> $ fromOL $ snd $2)
+        :  '(' importlist ')'               {% do { es <- amsr (sLL $1 $> $ fromOL $ snd $2)
                                                                (AnnList Nothing (Just $ mop $1) (Just $ mcp $3) (fst $2) [])
                                                   ; return $ sLL $1 $> (Exactly, es)} }
-        |  'hiding' '(' importlist ')'      {% do { es <- amsrl (sLL $1 $> $ fromOL $ snd $3)
+        |  'hiding' '(' importlist ')'      {% do { es <- amsr (sLL $1 $> $ fromOL $ snd $3)
                                                                (AnnList Nothing (Just $ mop $2) (Just $ mcp $4) (mj AnnHiding $1:fst $3) [])
                                                   ; return $ sLL $1 $> (EverythingBut, es)} }
 
@@ -1179,7 +1179,7 @@ importlist1 :: { OrdList (LIE GhcPs) }
 
 import  :: { OrdList (LIE GhcPs) }
         : qcname_ext export_subspec {% fmap (unitOL . reLoc . (sLL $1 $>)) $ mkModuleImpExp Nothing (fst $ unLoc $2) $1 (snd $ unLoc $2) }
-        | 'module' modid            {% fmap (unitOL . reLoc) $ acs (\cs -> sLL $1 $> (IEModuleContents (Nothing, EpAnn (glEE $1 $>) [mj AnnModule $1] cs) $2)) }
+        | 'module' modid            {% fmap (unitOL . reLoc) $ return (sLL $1 $> (IEModuleContents (Nothing, [mj AnnModule $1]) $2)) }
         | 'pattern' qcon            { unitOL $ reLoc $ sLL $1 $> $ IEVar Nothing (sLLa $1 $> (IEPattern (glAA $1) $2)) }
 
 -----------------------------------------------------------------------------
@@ -1240,12 +1240,12 @@ topdecl :: { LHsDecl GhcPs }
         | inst_decl                             { sL1a $1 (InstD noExtField (unLoc $1)) }
         | stand_alone_deriving                  { sL1a $1 (DerivD noExtField (unLoc $1)) }
         | role_annot                            { sL1a $1 (RoleAnnotD noExtField (unLoc $1)) }
-        | 'default' '(' comma_types0 ')'        {% acsA (\cs -> sLL $1 $>
-                                                    (DefD noExtField (DefaultDecl (EpAnn (glEE $1 $>) [mj AnnDefault $1,mop $2,mcp $4] cs) $3))) }
-        | 'foreign' fdecl                       {% acsA (\cs -> sLL $1 $> ((snd $ unLoc $2) (EpAnn (glEE $1 $>) (mj AnnForeign $1:(fst $ unLoc $2)) cs))) }
-        | '{-# DEPRECATED' deprecations '#-}'   {% acsA (\cs -> sLL $1 $> $ WarningD noExtField (Warnings ((EpAnn (glEE $1 $>) [mo $1,mc $3] cs), (getDEPRECATED_PRAGs $1)) (fromOL $2))) }
-        | '{-# WARNING' warnings '#-}'          {% acsA (\cs -> sLL $1 $> $ WarningD noExtField (Warnings ((EpAnn (glEE $1 $>) [mo $1,mc $3] cs), (getWARNING_PRAGs $1)) (fromOL $2))) }
-        | '{-# RULES' rules '#-}'               {% acsA (\cs -> sLL $1 $> $ RuleD noExtField (HsRules ((EpAnn (glEE $1 $>) [mo $1,mc $3] cs), (getRULES_PRAGs $1)) (reverse $2))) }
+        | 'default' '(' comma_types0 ')'        {% amsA' (sLL $1 $>
+                                                    (DefD noExtField (DefaultDecl [mj AnnDefault $1,mop $2,mcp $4] $3))) }
+        | 'foreign' fdecl                       {% amsA' (sLL $1 $> ((snd $ unLoc $2) (mj AnnForeign $1:(fst $ unLoc $2)))) }
+        | '{-# DEPRECATED' deprecations '#-}'   {% amsA' (sLL $1 $> $ WarningD noExtField (Warnings ([mo $1,mc $3], (getDEPRECATED_PRAGs $1)) (fromOL $2))) }
+        | '{-# WARNING' warnings '#-}'          {% amsA' (sLL $1 $> $ WarningD noExtField (Warnings ([mo $1,mc $3], (getWARNING_PRAGs $1)) (fromOL $2))) }
+        | '{-# RULES' rules '#-}'               {% amsA' (sLL $1 $> $ RuleD noExtField (HsRules ([mo $1,mc $3], (getRULES_PRAGs $1)) (reverse $2))) }
         | annotation { $1 }
         | decl_no_th                            { $1 }
 
@@ -1333,15 +1333,15 @@ inst_decl :: { LInstDecl GhcPs }
         : 'instance' maybe_warning_pragma overlap_pragma inst_type where_inst
        {% do { (binds, sigs, _, ats, adts, _) <- cvBindsAndSigs (snd $ unLoc $5)
              ; let anns = (mj AnnInstance $1 : (fst $ unLoc $5))
-             ; let cid cs = ClsInstDecl
-                                     { cid_ext = ($2, EpAnn (spanAsAnchor (comb3 $1 $4 $5)) anns cs, NoAnnSortKey)
-                                     , cid_poly_ty = $4, cid_binds = binds
-                                     , cid_sigs = mkClassOpSigs sigs
-                                     , cid_tyfam_insts = ats
-                                     , cid_overlap_mode = $3
-                                     , cid_datafam_insts = adts }
-             ; acsA (\cs -> L (comb3 $1 $4 $5)
-                             (ClsInstD { cid_d_ext = noExtField, cid_inst = cid cs }))
+             ; let cid = ClsInstDecl
+                                  { cid_ext = ($2, anns, NoAnnSortKey)
+                                  , cid_poly_ty = $4, cid_binds = binds
+                                  , cid_sigs = mkClassOpSigs sigs
+                                  , cid_tyfam_insts = ats
+                                  , cid_overlap_mode = $3
+                                  , cid_datafam_insts = adts }
+             ; amsA' (L (comb3 $1 $4 $5)
+                             (ClsInstD { cid_d_ext = noExtField, cid_inst = cid }))
                    } }
 
            -- type instance declarations
@@ -1368,29 +1368,28 @@ inst_decl :: { LInstDecl GhcPs }
                        :(fst $ unLoc $5)++(fst $ unLoc $6)) }
 
 overlap_pragma :: { Maybe (LocatedP OverlapMode) }
-  : '{-# OVERLAPPABLE'    '#-}' {% fmap Just $ amsrp (sLL $1 $> (Overlappable (getOVERLAPPABLE_PRAGs $1)))
+  : '{-# OVERLAPPABLE'    '#-}' {% fmap Just $ amsr (sLL $1 $> (Overlappable (getOVERLAPPABLE_PRAGs $1)))
                                        (AnnPragma (mo $1) (mc $2) []) }
-  | '{-# OVERLAPPING'     '#-}' {% fmap Just $ amsrp (sLL $1 $> (Overlapping (getOVERLAPPING_PRAGs $1)))
+  | '{-# OVERLAPPING'     '#-}' {% fmap Just $ amsr (sLL $1 $> (Overlapping (getOVERLAPPING_PRAGs $1)))
                                        (AnnPragma (mo $1) (mc $2) []) }
-  | '{-# OVERLAPS'        '#-}' {% fmap Just $ amsrp (sLL $1 $> (Overlaps (getOVERLAPS_PRAGs $1)))
+  | '{-# OVERLAPS'        '#-}' {% fmap Just $ amsr (sLL $1 $> (Overlaps (getOVERLAPS_PRAGs $1)))
                                        (AnnPragma (mo $1) (mc $2) []) }
-  | '{-# INCOHERENT'      '#-}' {% fmap Just $ amsrp (sLL $1 $> (Incoherent (getINCOHERENT_PRAGs $1)))
+  | '{-# INCOHERENT'      '#-}' {% fmap Just $ amsr (sLL $1 $> (Incoherent (getINCOHERENT_PRAGs $1)))
                                        (AnnPragma (mo $1) (mc $2) []) }
   | {- empty -}                 { Nothing }
 
 deriv_strategy_no_via :: { LDerivStrategy GhcPs }
-  : 'stock'                     {% acsA (\cs -> sL1 $1 (StockStrategy (EpAnn (glR $1) [mj AnnStock $1] cs))) }
-  | 'anyclass'                  {% acsA (\cs -> sL1 $1 (AnyclassStrategy (EpAnn (glR $1) [mj AnnAnyclass $1] cs))) }
-  | 'newtype'                   {% acsA (\cs -> sL1 $1 (NewtypeStrategy (EpAnn (glR $1) [mj AnnNewtype $1] cs))) }
+  : 'stock'                     {% amsA' (sL1 $1 (StockStrategy [mj AnnStock $1])) }
+  | 'anyclass'                  {% amsA' (sL1 $1 (AnyclassStrategy [mj AnnAnyclass $1])) }
+  | 'newtype'                   {% amsA' (sL1 $1 (NewtypeStrategy [mj AnnNewtype $1])) }
 
 deriv_strategy_via :: { LDerivStrategy GhcPs }
-  : 'via' sigktype          {% acsA (\cs -> sLL $1 $> (ViaStrategy (XViaStrategyPs (EpAnn (glEE $1 $>) [mj AnnVia $1] cs)
-                                                                           $2))) }
+  : 'via' sigktype          {% amsA' (sLL $1 $> (ViaStrategy (XViaStrategyPs [mj AnnVia $1] $2))) }
 
 deriv_standalone_strategy :: { Maybe (LDerivStrategy GhcPs) }
-  : 'stock'                     {% fmap Just $ acsA (\cs -> sL1 $1 (StockStrategy (EpAnn (glR $1) [mj AnnStock $1] cs))) }
-  | 'anyclass'                  {% fmap Just $ acsA (\cs -> sL1 $1 (AnyclassStrategy (EpAnn (glR $1) [mj AnnAnyclass $1] cs))) }
-  | 'newtype'                   {% fmap Just $ acsA (\cs -> sL1 $1 (NewtypeStrategy (EpAnn (glR $1) [mj AnnNewtype $1] cs))) }
+  : 'stock'                     {% fmap Just $ amsA' (sL1 $1 (StockStrategy [mj AnnStock $1])) }
+  | 'anyclass'                  {% fmap Just $ amsA' (sL1 $1 (AnyclassStrategy [mj AnnAnyclass $1])) }
+  | 'newtype'                   {% fmap Just $ amsA' (sL1 $1 (NewtypeStrategy [mj AnnNewtype $1])) }
   | deriv_strategy_via          { Just $1 }
   | {- empty -}                 { Nothing }
 
@@ -1403,7 +1402,7 @@ opt_injective_info :: { Located ([AddEpAnn], Maybe (LInjectivityAnn GhcPs)) }
 
 injectivity_cond :: { LInjectivityAnn GhcPs }
         : tyvarid '->' inj_varids
-           {% acsA (\cs -> sLL $1 $> (InjectivityAnn (EpAnn (glR $1) [mu AnnRarrow $2] cs) $1 (reverse (unLoc $3)))) }
+           {% amsA' (sLL $1 $> (InjectivityAnn [mu AnnRarrow $2] $1 (reverse (unLoc $3)))) }
 
 inj_varids :: { Located [LocatedN RdrName] }
         : inj_varids tyvarid  { sLL $1 $> ($2 : unLoc $1) }
@@ -1448,7 +1447,7 @@ ty_fam_inst_eqn :: { LTyFamInstEqn GhcPs }
               {% do { hintExplicitForall $1
                     ; tvbs <- fromSpecTyVarBndrs $2
                     ; let loc = comb2 $1 $>
-                    ; cs <- getCommentsFor loc
+                    ; !cs <- getCommentsFor loc
                     ; mkTyFamInstEqn loc (mkHsOuterExplicit (EpAnn (glEE $1 $3) (mu AnnForall $1, mj AnnDot $3) cs) tvbs) $4 $6 [mj AnnEqual $5] }}
         | type '=' ktype
               {% mkTyFamInstEqn (comb2 $1 $>) mkHsOuterImplicit $1 $3 (mj AnnEqual $2:[]) }
@@ -1571,35 +1570,35 @@ opt_at_kind_inj_sig :: { Located ([AddEpAnn], ( LFamilyResultSig GhcPs
 --      T Int [a]                       -- for associated types
 -- Rather a lot of inlining here, else we get reduce/reduce errors
 tycl_hdr :: { Located (Maybe (LHsContext GhcPs), LHsType GhcPs) }
-        : context '=>' type         {% acs (\cs -> (sLL $1 $> (Just (addTrailingDarrowC $1 $2 cs), $3))) }
+        : context '=>' type         {% acs (comb2 $1 $>) (\loc cs -> (L loc (Just (addTrailingDarrowC $1 $2 cs), $3))) }
         | type                      { sL1 $1 (Nothing, $1) }
 
 datafam_inst_hdr :: { Located (Maybe (LHsContext GhcPs), HsOuterFamEqnTyVarBndrs GhcPs, LHsType GhcPs) }
         : 'forall' tv_bndrs '.' context '=>' type   {% hintExplicitForall $1
                                                        >> fromSpecTyVarBndrs $2
                                                          >>= \tvbs ->
-                                                             (acs (\cs -> (sLL $1 $>
+                                                             (acs (comb2 $1 $>) (\loc cs -> (L loc
                                                                                   (Just ( addTrailingDarrowC $4 $5 cs)
                                                                                         , mkHsOuterExplicit (EpAnn (glEE $1 $3) (mu AnnForall $1, mj AnnDot $3) emptyComments) tvbs, $6))))
                                                     }
         | 'forall' tv_bndrs '.' type   {% do { hintExplicitForall $1
                                              ; tvbs <- fromSpecTyVarBndrs $2
                                              ; let loc = comb2 $1 $>
-                                             ; cs <- getCommentsFor loc
+                                             ; !cs <- getCommentsFor loc
                                              ; return (sL loc (Nothing, mkHsOuterExplicit (EpAnn (glEE $1 $3) (mu AnnForall $1, mj AnnDot $3) cs) tvbs, $4))
                                        } }
-        | context '=>' type         {% acs (\cs -> (sLL $1 $>(Just (addTrailingDarrowC $1 $2 cs), mkHsOuterImplicit, $3))) }
+        | context '=>' type         {% acs (comb2 $1 $>) (\loc cs -> (L loc (Just (addTrailingDarrowC $1 $2 cs), mkHsOuterImplicit, $3))) }
         | type                      { sL1 $1 (Nothing, mkHsOuterImplicit, $1) }
 
 
 capi_ctype :: { Maybe (LocatedP CType) }
 capi_ctype : '{-# CTYPE' STRING STRING '#-}'
-                       {% fmap Just $ amsrp (sLL $1 $> (CType (getCTYPEs $1) (Just (Header (getSTRINGs $2) (getSTRING $2)))
+                       {% fmap Just $ amsr (sLL $1 $> (CType (getCTYPEs $1) (Just (Header (getSTRINGs $2) (getSTRING $2)))
                                         (getSTRINGs $3,getSTRING $3)))
                               (AnnPragma (mo $1) (mc $4) [mj AnnHeader $2,mj AnnVal $3]) }
 
            | '{-# CTYPE'        STRING '#-}'
-                       {% fmap Just $ amsrp (sLL $1 $> (CType (getCTYPEs $1) Nothing (getSTRINGs $2, getSTRING $2)))
+                       {% fmap Just $ amsr (sLL $1 $> (CType (getCTYPEs $1) Nothing (getSTRINGs $2, getSTRING $2)))
                               (AnnPragma (mo $1) (mc $3) [mj AnnVal $2]) }
 
            |           { Nothing }
@@ -1612,8 +1611,8 @@ stand_alone_deriving :: { LDerivDecl GhcPs }
   : 'deriving' deriv_standalone_strategy 'instance' maybe_warning_pragma overlap_pragma inst_type
                 {% do { let { err = text "in the stand-alone deriving instance"
                                     <> colon <+> quotes (ppr $6) }
-                      ; acsA (\cs -> sLL $1 $>
-                                 (DerivDecl ($4, EpAnn (glEE $1 $>) [mj AnnDeriving $1, mj AnnInstance $3] cs) (mkHsWildCardBndrs $6) $2 $5)) }}
+                      ; amsA' (sLL $1 $>
+                                 (DerivDecl ($4, [mj AnnDeriving $1, mj AnnInstance $3]) (mkHsWildCardBndrs $6) $2 $5)) }}
 
 -----------------------------------------------------------------------------
 -- Role annotations
@@ -1643,21 +1642,21 @@ role : VARID             { sL1 $1 $ Just $ getVARID $1 }
 pattern_synonym_decl :: { LHsDecl GhcPs }
         : 'pattern' pattern_synonym_lhs '=' pat
          {%      let (name, args, as ) = $2 in
-                 acsA (\cs -> sLL $1 $> . ValD noExtField $ mkPatSynBind name args $4
+                 amsA' (sLL $1 $> . ValD noExtField $ mkPatSynBind name args $4
                                                     ImplicitBidirectional
-                      (EpAnn (glEE $1 $>) (as ++ [mj AnnPattern $1, mj AnnEqual $3]) cs)) }
+                      (as ++ [mj AnnPattern $1, mj AnnEqual $3])) }
 
         | 'pattern' pattern_synonym_lhs '<-' pat
          {%    let (name, args, as) = $2 in
-               acsA (\cs -> sLL $1 $> . ValD noExtField $ mkPatSynBind name args $4 Unidirectional
-                       (EpAnn (glEE $1 $>) (as ++ [mj AnnPattern $1,mu AnnLarrow $3]) cs)) }
+               amsA' (sLL $1 $> . ValD noExtField $ mkPatSynBind name args $4 Unidirectional
+                       (as ++ [mj AnnPattern $1,mu AnnLarrow $3])) }
 
         | 'pattern' pattern_synonym_lhs '<-' pat where_decls
             {% do { let (name, args, as) = $2
                   ; mg <- mkPatSynMatchGroup name $5
-                  ; acsA (\cs -> sLL $1 $> . ValD noExtField $
+                  ; amsA' (sLL $1 $> . ValD noExtField $
                            mkPatSynBind name args $4 (ExplicitBidirectional mg)
-                            (EpAnn (glEE $1 $>) (as ++ [mj AnnPattern $1,mu AnnLarrow $3]) cs))
+                            (as ++ [mj AnnPattern $1,mu AnnLarrow $3]))
                    }}
 
 pattern_synonym_lhs :: { (LocatedN RdrName, HsPatSynDetails GhcPs, [AddEpAnn]) }
@@ -1675,15 +1674,15 @@ cvars1 :: { [RecordPatSynField GhcPs] }
                                             ; return ((RecordPatSynField (mkFieldOcc h) h) : $3 )}}
 
 where_decls :: { LocatedL (OrdList (LHsDecl GhcPs)) }
-        : 'where' '{' decls '}'       {% amsrl (sLL $1 $> (snd $ unLoc $3))
+        : 'where' '{' decls '}'       {% amsr (sLL $1 $> (snd $ unLoc $3))
                                               (AnnList (Just $ glR $3) (Just $ moc $2) (Just $ mcc $4) (mj AnnWhere $1: (fst $ unLoc $3)) []) }
-        | 'where' vocurly decls close {% amsrl (sLL $1 $3 (snd $ unLoc $3))
+        | 'where' vocurly decls close {% amsr (sLL $1 $3 (snd $ unLoc $3))
                                               (AnnList (Just $ glR $3) Nothing Nothing (mj AnnWhere $1: (fst $ unLoc $3)) []) }
 
 pattern_synonym_sig :: { LSig GhcPs }
         : 'pattern' con_list '::' sigtype
-                   {% acsA (\cs -> sLL $1 $>
-                                $ PatSynSig (EpAnn (glEE $1 $>) (AnnSig (mu AnnDcolon $3) [mj AnnPattern $1]) cs)
+                   {% amsA' (sLL $1 $>
+                                $ PatSynSig (AnnSig (mu AnnDcolon $3) [mj AnnPattern $1])
                                   (toList $ unLoc $2) $4) }
 
 qvarcon :: { LocatedN RdrName }
@@ -1705,7 +1704,7 @@ decl_cls  : at_decl_cls                 { $1 }
                        do { v <- checkValSigLhs $2
                           ; let err = text "in default signature" <> colon <+>
                                       quotes (ppr $2)
-                          ; acsA (\cs -> sLL $1 $> $ SigD noExtField $ ClassOpSig (EpAnn (glEE $1 $>) (AnnSig (mu AnnDcolon $3) [mj AnnDefault $1]) cs) True [v] $4) }}
+                          ; amsA' (sLL $1 $> $ SigD noExtField $ ClassOpSig (AnnSig (mu AnnDcolon $3) [mj AnnDefault $1]) True [v] $4) }}
 
 decls_cls :: { Located ([AddEpAnn],OrdList (LHsDecl GhcPs)) }  -- Reversed
           : decls_cls ';' decl_cls      {% if isNilOL (snd $ unLoc $1)
@@ -1826,21 +1825,21 @@ binds   ::  { Located (HsLocalBinds GhcPs) }
                                          -- May have implicit parameters
                                                 -- No type declarations
         : decllist          {% do { val_binds <- cvBindGroup (unLoc $ snd $ unLoc $1)
-                                  ; cs <- getCommentsFor (gl $1)
+                                  ; !cs <- getCommentsFor (gl $1)
                                   ; return (sL1 $1 $ HsValBinds (fixValbindsAnn $ EpAnn (glR $1) (fst $ unLoc $1) cs) val_binds)} }
 
-        | '{'            dbinds '}'     {% acs (\cs -> (L (comb3 $1 $2 $3)
+        | '{'            dbinds '}'     {% acs (comb3 $1 $2 $3) (\loc cs -> (L loc
                                              $ HsIPBinds (EpAnn (spanAsAnchor (comb3 $1 $2 $3)) (AnnList (Just$ glR $2) (Just $ moc $1) (Just $ mcc $3) [] []) cs) (IPBinds noExtField (reverse $ unLoc $2)))) }
 
-        |     vocurly    dbinds close   {% acs (\cs -> (L (gl $2)
+        |     vocurly    dbinds close   {% acs (gl $2) (\loc cs -> (L loc
                                              $ HsIPBinds (EpAnn (glR $1) (AnnList (Just $ glR $2) Nothing Nothing [] []) cs) (IPBinds noExtField (reverse $ unLoc $2)))) }
 
 
 wherebinds :: { Maybe (Located (HsLocalBinds GhcPs, Maybe EpAnnComments )) }
                                                 -- May have implicit parameters
                                                 -- No type declarations
-        : 'where' binds                 {% do { r <- acs (\cs ->
-                                                (sLL $1 $> (annBinds (mj AnnWhere $1) cs (unLoc $2))))
+        : 'where' binds                 {% do { r <- acs (comb2 $1 $>) (\loc cs ->
+                                                (L loc (annBinds (mj AnnWhere $1) cs (unLoc $2))))
                                               ; return $ Just r} }
         | {- empty -}                   { Nothing }
 
@@ -1865,12 +1864,12 @@ rule    :: { LRuleDecl GhcPs }
         : STRING rule_activation rule_foralls infixexp '=' exp
          {%runPV (unECP $4) >>= \ $4 ->
            runPV (unECP $6) >>= \ $6 ->
-           acsA (\cs -> (sLL $1 $> $ HsRule
-                                   { rd_ext = (EpAnn (glEE $1 $>) ((fstOf3 $3) (mj AnnEqual $5 : (fst $2))) cs, getSTRINGs $1)
+           amsA' (sLL $1 $> $ HsRule
+                                   { rd_ext = (((fstOf3 $3) (mj AnnEqual $5 : (fst $2))), getSTRINGs $1)
                                    , rd_name = L (noAnnSrcSpan $ gl $1) (getSTRING $1)
                                    , rd_act = (snd $2) `orElse` AlwaysActive
                                    , rd_tyvs = sndOf3 $3, rd_tmvs = thdOf3 $3
-                                   , rd_lhs = $4, rd_rhs = $6 })) }
+                                   , rd_lhs = $4, rd_rhs = $6 }) }
 
 -- Rules can be specified to be NeverActive, unlike inline/specialize pragmas
 rule_activation :: { ([AddEpAnn],Maybe Activation) }
@@ -1925,7 +1924,7 @@ rule_vars :: { [LRuleTyTmVar] }
 
 rule_var :: { LRuleTyTmVar }
         : varid                         { sL1a $1 (RuleTyTmVar noAnn $1 Nothing) }
-        | '(' varid '::' ctype ')'      {% acsA (\cs -> sLL $1 $> (RuleTyTmVar (EpAnn (glEE $1 $>) [mop $1,mu AnnDcolon $3,mcp $5] cs) $2 (Just $4))) }
+        | '(' varid '::' ctype ')'      {% amsA' (sLL $1 $> (RuleTyTmVar [mop $1,mu AnnDcolon $3,mcp $5] $2 (Just $4))) }
 
 {- Note [Parsing explicit foralls in Rules]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1955,10 +1954,10 @@ to varid (used for rule_vars), 'checkRuleTyVarBndrNames' must be updated.
 
 maybe_warning_pragma :: { Maybe (LWarningTxt GhcPs) }
         : '{-# DEPRECATED' strings '#-}'
-                            {% fmap Just $ amsrp (sLL $1 $> $ DeprecatedTxt (getDEPRECATED_PRAGs $1) (map stringLiteralToHsDocWst $ snd $ unLoc $2))
+                            {% fmap Just $ amsr (sLL $1 $> $ DeprecatedTxt (getDEPRECATED_PRAGs $1) (map stringLiteralToHsDocWst $ snd $ unLoc $2))
                                 (AnnPragma (mo $1) (mc $3) (fst $ unLoc $2)) }
         | '{-# WARNING' warning_category strings '#-}'
-                            {% fmap Just $ amsrp (sLL $1 $> $ WarningTxt $2 (getWARNING_PRAGs $1) (map stringLiteralToHsDocWst $ snd $ unLoc $3))
+                            {% fmap Just $ amsr (sLL $1 $> $ WarningTxt $2 (getWARNING_PRAGs $1) (map stringLiteralToHsDocWst $ snd $ unLoc $3))
                                 (AnnPragma (mo $1) (mc $4) (fst $ unLoc $3))}
         |  {- empty -}      { Nothing }
 
@@ -1986,8 +1985,8 @@ warnings :: { OrdList (LWarnDecl GhcPs) }
 -- SUP: TEMPORARY HACK, not checking for `module Foo'
 warning :: { OrdList (LWarnDecl GhcPs) }
         : warning_category namespace_spec namelist strings
-                {% fmap unitOL $ acsA (\cs -> L (comb4 $1 $2 $3 $4)
-                     (Warning (unLoc $2, EpAnn (glMR $1 $3) (fst $ unLoc $4) cs) (unLoc $3)
+                {% fmap unitOL $ amsA' (L (comb4 $1 $2 $3 $4)
+                     (Warning (unLoc $2, fst $ unLoc $4) (unLoc $3)
                               (WarningTxt $1 NoSourceText $ map stringLiteralToHsDocWst $ snd $ unLoc $4))) }
 
 namespace_spec :: { Located NamespaceSpecifier }
@@ -2015,7 +2014,7 @@ deprecations :: { OrdList (LWarnDecl GhcPs) }
 -- SUP: TEMPORARY HACK, not checking for `module Foo'
 deprecation :: { OrdList (LWarnDecl GhcPs) }
         : namespace_spec namelist strings
-             {% fmap unitOL $ acsA (\cs -> sL (comb3 $1 $2 $>) $ (Warning (unLoc $1, EpAnn (glEE $2 $>) (fst $ unLoc $3) cs) (unLoc $2)
+             {% fmap unitOL $ amsA' (sL (comb3 $1 $2 $>) $ (Warning (unLoc $1, fst $ unLoc $3) (unLoc $2)
                                           (DeprecatedTxt NoSourceText $ map stringLiteralToHsDocWst $ snd $ unLoc $3))) }
 
 strings :: { Located ([AddEpAnn],[Located StringLiteral]) }
@@ -2040,27 +2039,27 @@ stringlist :: { Located (OrdList (Located StringLiteral)) }
 -- Annotations
 annotation :: { LHsDecl GhcPs }
     : '{-# ANN' name_var aexp '#-}'      {% runPV (unECP $3) >>= \ $3 ->
-                                            acsA (\cs -> sLL $1 $> (AnnD noExtField $ HsAnnotation
-                                            ((EpAnn (glEE $1 $>) (AnnPragma (mo $1) (mc $4) []) cs),
+                                            amsA' (sLL $1 $> (AnnD noExtField $ HsAnnotation
+                                            (AnnPragma (mo $1) (mc $4) [],
                                             (getANN_PRAGs $1))
                                             (ValueAnnProvenance $2) $3)) }
 
     | '{-# ANN' 'type' otycon aexp '#-}' {% runPV (unECP $4) >>= \ $4 ->
-                                            acsA (\cs -> sLL $1 $> (AnnD noExtField $ HsAnnotation
-                                            ((EpAnn (glEE $1 $>) (AnnPragma (mo $1) (mc $5) [mj AnnType $2]) cs),
+                                            amsA' (sLL $1 $> (AnnD noExtField $ HsAnnotation
+                                            (AnnPragma (mo $1) (mc $5) [mj AnnType $2],
                                             (getANN_PRAGs $1))
                                             (TypeAnnProvenance $3) $4)) }
 
     | '{-# ANN' 'module' aexp '#-}'      {% runPV (unECP $3) >>= \ $3 ->
-                                            acsA (\cs -> sLL $1 $> (AnnD noExtField $ HsAnnotation
-                                                ((EpAnn (glEE $1 $>) (AnnPragma (mo $1) (mc $4) [mj AnnModule $2]) cs),
+                                            amsA' (sLL $1 $> (AnnD noExtField $ HsAnnotation
+                                                (AnnPragma (mo $1) (mc $4) [mj AnnModule $2],
                                                 (getANN_PRAGs $1))
                                                  ModuleAnnProvenance $3)) }
 
 -----------------------------------------------------------------------------
 -- Foreign import and export declarations
 
-fdecl :: { Located ([AddEpAnn],EpAnn [AddEpAnn] -> HsDecl GhcPs) }
+fdecl :: { Located ([AddEpAnn], [AddEpAnn] -> HsDecl GhcPs) }
 fdecl : 'import' callconv safety fspec
                {% mkImport $2 $3 (snd $ unLoc $4) >>= \i ->
                  return (sLL $1 $> (mj AnnImport $1 : (fst $ unLoc $4),i))  }
@@ -2109,8 +2108,8 @@ opt_tyconsig :: { ([AddEpAnn], Maybe (LocatedN RdrName)) }
 -- See Note [forall-or-nothing rule] in GHC.Hs.Type.
 sigktype :: { LHsSigType GhcPs }
         : sigtype              { $1 }
-        | ctype '::' kind      {% acsA (\cs -> sLL $1 $> $ mkHsImplicitSigType $
-                                               sLLa $1 $> $ HsKindSig (EpAnn (glEE $1 $>) [mu AnnDcolon $2] cs) $1 $3) }
+        | ctype '::' kind      {% amsA' (sLL $1 $> $ mkHsImplicitSigType $
+                                         sLLa $1 $> $ HsKindSig [mu AnnDcolon $2] $1 $3) }
 
 -- Like ctype, but for types that obey the forall-or-nothing rule.
 -- See Note [forall-or-nothing rule] in GHC.Hs.Type. To avoid duplicating the
@@ -2140,17 +2139,17 @@ unpackedness :: { Located UnpackednessPragma }
 
 forall_telescope :: { Located (HsForAllTelescope GhcPs) }
         : 'forall' tv_bndrs '.'  {% do { hintExplicitForall $1
-                                       ; acs (\cs -> (sLL $1 $> $
+                                       ; acs (comb2 $1 $>) (\loc cs -> (L loc $
                                            mkHsForAllInvisTele (EpAnn (glEE $1 $>) (mu AnnForall $1,mu AnnDot $3) cs) $2 )) }}
         | 'forall' tv_bndrs '->' {% do { hintExplicitForall $1
                                        ; req_tvbs <- fromSpecTyVarBndrs $2
-                                       ; acs (\cs -> (sLL $1 $> $
+                                       ; acs (comb2 $1 $>) (\loc cs -> (L loc $
                                            mkHsForAllVisTele (EpAnn (glEE $1 $>) (mu AnnForall $1,mu AnnRarrow $3) cs) req_tvbs )) }}
 
 -- A ktype is a ctype, possibly with a kind annotation
 ktype :: { LHsType GhcPs }
         : ctype                { $1 }
-        | ctype '::' kind      {% acsA (\cs -> sLL $1 $> $ HsKindSig (EpAnn (glEE $1 $>) [mu AnnDcolon $2] cs) $1 $3) }
+        | ctype '::' kind      {% amsA' (sLL $1 $> $ HsKindSig [mu AnnDcolon $2] $1 $3) }
 
 -- A ctype is a for-all type
 ctype   :: { LHsType GhcPs }
@@ -2158,12 +2157,12 @@ ctype   :: { LHsType GhcPs }
                                               HsForAllTy { hst_tele = unLoc $1
                                                          , hst_xforall = noExtField
                                                          , hst_body = $2 } }
-        | context '=>' ctype          {% acsA (\cs -> (sLL $1 $> $
+        | context '=>' ctype          {% acsA (comb2 $1 $>) (\loc cs -> (L loc $
                                             HsQualTy { hst_ctxt = addTrailingDarrowC $1 $2 cs
                                                      , hst_xqual = NoExtField
                                                      , hst_body = $3 })) }
 
-        | ipvar '::' ctype            {% acsA (\cs -> sLL $1 $> (HsIParamTy (EpAnn (glEE $1 $>) [mu AnnDcolon $2] cs) (reLoc $1) $3)) }
+        | ipvar '::' ctype            {% amsA' (sLL $1 $> (HsIParamTy [mu AnnDcolon $2] (reLoc $1) $3)) }
         | type                        { $1 }
 
 ----------------------
@@ -2195,17 +2194,15 @@ is connected to the first type too.
 type :: { LHsType GhcPs }
         -- See Note [%shift: type -> btype]
         : btype %shift                 { $1 }
-        | btype '->' ctype             {% acsA (\cs -> sLL $1 $>
-                                            $ HsFunTy (EpAnn (glEE $1 $>) NoEpAnns cs) (HsUnrestrictedArrow (epUniTok $2)) $1 $3) }
+        | btype '->' ctype             {% amsA' (sLL $1 $>
+                                            $ HsFunTy noExtField (HsUnrestrictedArrow (epUniTok $2)) $1 $3) }
 
         | btype mult '->' ctype        {% hintLinear (getLoc $2)
                                        >> let arr = (unLoc $2) (epUniTok $3)
-                                          in acsA (\cs -> sLL $1 $>
-                                           $ HsFunTy (EpAnn (glEE $1 $>) NoEpAnns cs) arr $1 $4) }
+                                          in amsA' (sLL $1 $> $ HsFunTy noExtField arr $1 $4) }
 
         | btype '->.' ctype            {% hintLinear (getLoc $2) >>
-                                          acsA (\cs -> sLL $1 $>
-                                            $ HsFunTy (EpAnn (glEE $1 $>) NoEpAnns cs) (HsLinearArrow (EpLolly (epTok $2))) $1 $3) }
+                                          amsA' (sLL $1 $> $ HsFunTy noExtField (HsLinearArrow (EpLolly (epTok $2))) $1 $3) }
                                               -- [mu AnnLollyU $2] }
 
 mult :: { Located (EpUniToken "->" "\8594" -> HsArrow GhcPs) }
@@ -2240,53 +2237,53 @@ tyarg :: { LHsType GhcPs }
 tyop :: { (LocatedN RdrName, PromotionFlag) }
         : qtyconop                      { ($1, NotPromoted) }
         | tyvarop                       { ($1, NotPromoted) }
-        | SIMPLEQUOTE qconop            {% do { op <- amsrn (sLL $1 $> (unLoc $2))
-                                                            (NameAnnQuote (glAA $1) (gl $2) [])
+        | SIMPLEQUOTE qconop            {% do { op <- amsr (sLL $1 $> (unLoc $2))
+                                                           (NameAnnQuote (glAA $1) (gl $2) [])
                                               ; return (op, IsPromoted) } }
-        | SIMPLEQUOTE varop             {% do { op <- amsrn (sLL $1 $> (unLoc $2))
-                                                            (NameAnnQuote (glAA $1) (gl $2) [])
+        | SIMPLEQUOTE varop             {% do { op <- amsr (sLL $1 $> (unLoc $2))
+                                                           (NameAnnQuote (glAA $1) (gl $2) [])
                                               ; return (op, IsPromoted) } }
 
 atype :: { LHsType GhcPs }
-        : ntgtycon                       {% acsA (\cs -> sL1 $1 (HsTyVar (EpAnn (glR $1) [] cs) NotPromoted $1)) }      -- Not including unit tuples
+        : ntgtycon                       {% amsA' (sL1 $1 (HsTyVar [] NotPromoted $1)) }      -- Not including unit tuples
         -- See Note [%shift: atype -> tyvar]
-        | tyvar %shift                   {% acsA (\cs -> sL1 $1 (HsTyVar (EpAnn (glR $1) [] cs) NotPromoted $1)) }      -- (See Note [Unit tuples])
+        | tyvar %shift                   {% amsA' (sL1 $1 (HsTyVar [] NotPromoted $1)) }      -- (See Note [Unit tuples])
         | '*'                            {% do { warnStarIsType (getLoc $1)
                                                ; return $ sL1a $1 (HsStarTy noExtField (isUnicode $1)) } }
 
         -- See Note [Whitespace-sensitive operator parsing] in GHC.Parser.Lexer
-        | PREFIX_TILDE atype             {% acsA (\cs -> sLL $1 $> (mkBangTy (EpAnn (glEE $1 $>) [mj AnnTilde $1] cs) SrcLazy $2)) }
-        | PREFIX_BANG  atype             {% acsA (\cs -> sLL $1 $> (mkBangTy (EpAnn (glEE $1 $>) [mj AnnBang $1] cs) SrcStrict $2)) }
+        | PREFIX_TILDE atype             {% amsA' (sLL $1 $> (mkBangTy [mj AnnTilde $1] SrcLazy $2)) }
+        | PREFIX_BANG  atype             {% amsA' (sLL $1 $> (mkBangTy [mj AnnBang $1] SrcStrict $2)) }
 
-        | '{' fielddecls '}'             {% do { decls <- acsA (\cs -> (sLL $1 $> $ HsRecTy (EpAnn (glEE $1 $>) (AnnList (listAsAnchorM $2) (Just $ moc $1) (Just $ mcc $3) [] []) cs) $2))
+        | '{' fielddecls '}'             {% do { decls <- amsA' (sLL $1 $> $ HsRecTy (AnnList (listAsAnchorM $2) (Just $ moc $1) (Just $ mcc $3) [] []) $2)
                                                ; checkRecordSyntax decls }}
                                                         -- Constructor sigs only
-        | '(' ')'                        {% acsA (\cs -> sLL $1 $> $ HsTupleTy (EpAnn (glEE $1 $>) (AnnParen AnnParens (glAA $1) (glAA $2)) cs)
+        | '(' ')'                        {% amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParens (glAA $1) (glAA $2))
                                                     HsBoxedOrConstraintTuple []) }
         | '(' ktype ',' comma_types1 ')' {% do { h <- addTrailingCommaA $2 (gl $3)
-                                               ; acsA (\cs -> sLL $1 $> $ HsTupleTy (EpAnn (glEE $1 $>) (AnnParen AnnParens (glAA $1) (glAA $5)) cs)
+                                               ; amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParens (glAA $1) (glAA $5))
                                                         HsBoxedOrConstraintTuple (h : $4)) }}
-        | '(#' '#)'                   {% acsA (\cs -> sLL $1 $> $ HsTupleTy (EpAnn (glEE $1 $>) (AnnParen AnnParensHash (glAA $1) (glAA $2)) cs) HsUnboxedTuple []) }
-        | '(#' comma_types1 '#)'      {% acsA (\cs -> sLL $1 $> $ HsTupleTy (EpAnn (glEE $1 $>) (AnnParen AnnParensHash (glAA $1) (glAA $3)) cs) HsUnboxedTuple $2) }
-        | '(#' bar_types2 '#)'        {% acsA (\cs -> sLL $1 $> $ HsSumTy (EpAnn (glEE $1 $>) (AnnParen AnnParensHash (glAA $1) (glAA $3)) cs) $2) }
-        | '[' ktype ']'               {% acsA (\cs -> sLL $1 $> $ HsListTy (EpAnn (glEE $1 $>) (AnnParen AnnParensSquare (glAA $1) (glAA $3)) cs) $2) }
-        | '(' ktype ')'               {% acsA (\cs -> sLL $1 $> $ HsParTy  (EpAnn (glEE $1 $>) (AnnParen AnnParens       (glAA $1) (glAA $3)) cs) $2) }
+        | '(#' '#)'                   {% amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParensHash (glAA $1) (glAA $2)) HsUnboxedTuple []) }
+        | '(#' comma_types1 '#)'      {% amsA' (sLL $1 $> $ HsTupleTy (AnnParen AnnParensHash (glAA $1) (glAA $3)) HsUnboxedTuple $2) }
+        | '(#' bar_types2 '#)'        {% amsA' (sLL $1 $> $ HsSumTy (AnnParen AnnParensHash (glAA $1) (glAA $3)) $2) }
+        | '[' ktype ']'               {% amsA' (sLL $1 $> $ HsListTy (AnnParen AnnParensSquare (glAA $1) (glAA $3)) $2) }
+        | '(' ktype ')'               {% amsA' (sLL $1 $> $ HsParTy  (AnnParen AnnParens       (glAA $1) (glAA $3)) $2) }
         | quasiquote                  { mapLocA (HsSpliceTy noExtField) $1 }
         | splice_untyped              { mapLocA (HsSpliceTy noExtField) $1 }
                                       -- see Note [Promotion] for the followings
-        | SIMPLEQUOTE qcon_nowiredlist {% acsA (\cs -> sLL $1 $> $ HsTyVar (EpAnn (glEE $1 $>) [mj AnnSimpleQuote $1,mjN AnnName $2] cs) IsPromoted $2) }
+        | SIMPLEQUOTE qcon_nowiredlist {% amsA' (sLL $1 $> $ HsTyVar [mj AnnSimpleQuote $1,mjN AnnName $2] IsPromoted $2) }
         | SIMPLEQUOTE  '(' ktype ',' comma_types1 ')'
                              {% do { h <- addTrailingCommaA $3 (gl $4)
-                                   ; acsA (\cs -> sLL $1 $> $ HsExplicitTupleTy (EpAnn (glEE $1 $>) [mj AnnSimpleQuote $1,mop $2,mcp $6] cs) (h : $5)) }}
-        | SIMPLEQUOTE  '[' comma_types0 ']'     {% acsA (\cs -> sLL $1 $> $ HsExplicitListTy (EpAnn (glEE $1 $>) [mj AnnSimpleQuote $1,mos $2,mcs $4] cs) IsPromoted $3) }
-        | SIMPLEQUOTE var                       {% acsA (\cs -> sLL $1 $> $ HsTyVar (EpAnn (glEE $1 $>) [mj AnnSimpleQuote $1,mjN AnnName $2] cs) IsPromoted $2) }
+                                   ; amsA' (sLL $1 $> $ HsExplicitTupleTy [mj AnnSimpleQuote $1,mop $2,mcp $6] (h : $5)) }}
+        | SIMPLEQUOTE  '[' comma_types0 ']'     {% amsA' (sLL $1 $> $ HsExplicitListTy [mj AnnSimpleQuote $1,mos $2,mcs $4] IsPromoted $3) }
+        | SIMPLEQUOTE var                       {% amsA' (sLL $1 $> $ HsTyVar [mj AnnSimpleQuote $1,mjN AnnName $2] IsPromoted $2) }
 
         -- Two or more [ty, ty, ty] must be a promoted list type, just as
         -- if you had written '[ty, ty, ty]
         -- (One means a list type, zero means the list type constructor,
         -- so you have to quote those.)
         | '[' ktype ',' comma_types1 ']'  {% do { h <- addTrailingCommaA $2 (gl $3)
-                                                ; acsA (\cs -> sLL $1 $> $ HsExplicitListTy (EpAnn (glEE $1 $>) [mos $1,mcs $5] cs) NotPromoted (h:$4)) }}
+                                                ; amsA' (sLL $1 $> $ HsExplicitListTy [mos $1,mcs $5] NotPromoted (h:$4)) }}
         | INTEGER              { sLLa $1 $> $ HsTyLit noExtField $ HsNumTy (getINTEGERs $1)
                                                            (il_value (getINTEGER $1)) }
         | CHAR                 { sLLa $1 $> $ HsTyLit noExtField $ HsCharTy (getCHARs $1)
@@ -2297,7 +2294,7 @@ atype :: { LHsType GhcPs }
         -- Type variables are never exported, so `M.tyvar` will be rejected by the renamer.
         -- We let it pass the parser because the renamer can generate a better error message.
         | QVARID                      {% let qname = mkQual tvName (getQVARID $1)
-                                         in  acsA (\cs -> sL1 $1 (HsTyVar (EpAnn (glEE $1 $>) [] cs) NotPromoted (sL1n $1 $ qname)))}
+                                         in  amsA' (sL1 $1 (HsTyVar [] NotPromoted (sL1n $1 $ qname)))}
 
 -- An inst_type is what occurs in the head of an instance decl
 --      e.g.  (Foo a, Gaz b) => Wibble a b
@@ -2332,12 +2329,12 @@ tv_bndrs :: { [LHsTyVarBndr Specificity GhcPs] }
 
 tv_bndr :: { LHsTyVarBndr Specificity GhcPs }
         : tv_bndr_no_braces             { $1 }
-        | '{' tyvar '}'                 {% acsA (\cs -> sLL $1 $> (UserTyVar (EpAnn (glEE $1 $>) [moc $1, mcc $3] cs) InferredSpec $2)) }
-        | '{' tyvar '::' kind '}'       {% acsA (\cs -> sLL $1 $> (KindedTyVar (EpAnn (glEE $1 $>) [moc $1,mu AnnDcolon $3 ,mcc $5] cs) InferredSpec $2 $4)) }
+        | '{' tyvar '}'                 {% amsA' (sLL $1 $> (UserTyVar   [moc $1, mcc $3] InferredSpec $2)) }
+        | '{' tyvar '::' kind '}'       {% amsA' (sLL $1 $> (KindedTyVar [moc $1,mu AnnDcolon $3 ,mcc $5] InferredSpec $2 $4)) }
 
 tv_bndr_no_braces :: { LHsTyVarBndr Specificity GhcPs }
-        : tyvar                         {% acsA (\cs -> (sL1 $1    (UserTyVar (EpAnn (glR $1) [] cs) SpecifiedSpec $1))) }
-        | '(' tyvar '::' kind ')'       {% acsA (\cs -> (sLL $1 $> (KindedTyVar (EpAnn (glEE $1 $>) [mop $1,mu AnnDcolon $3 ,mcp $5] cs) SpecifiedSpec $2 $4))) }
+        : tyvar                         {% amsA' (sL1 $1    (UserTyVar   [] SpecifiedSpec $1)) }
+        | '(' tyvar '::' kind ')'       {% amsA' (sLL $1 $> (KindedTyVar [mop $1,mu AnnDcolon $3 ,mcp $5] SpecifiedSpec $2 $4)) }
 
 fds :: { Located ([AddEpAnn],[LHsFunDep GhcPs]) }
         : {- empty -}                   { noLoc ([],[]) }
@@ -2352,8 +2349,8 @@ fds1 :: { Located [LHsFunDep GhcPs] }
         | fd            { sL1 $1 [$1] }
 
 fd :: { LHsFunDep GhcPs }
-        : varids0 '->' varids0  {% acsA (\cs -> L (comb3 $1 $2 $3)
-                                       (FunDep (EpAnn (spanAsAnchor (comb3 $1 $2 $3)) [mu AnnRarrow $2] cs)
+        : varids0 '->' varids0  {% amsA' (L (comb3 $1 $2 $3)
+                                       (FunDep [mu AnnRarrow $2]
                                                (reverse (unLoc $1))
                                                (reverse (unLoc $3)))) }
 
@@ -2451,17 +2448,16 @@ constrs1 :: { Located [LConDecl GhcPs] }
 
 constr :: { LConDecl GhcPs }
         : forall context '=>' constr_stuff
-                {% acsA (\cs -> let (con,details) = unLoc $4 in
+                {% amsA' (let (con,details) = unLoc $4 in
                   (L (comb4 $1 $2 $3 $4) (mkConDeclH98
-                                                       (EpAnn (spanAsAnchor (comb4 $1 $2 $3 $4))
-                                                                    (mu AnnDarrow $3:(fst $ unLoc $1)) cs)
+                                                       (mu AnnDarrow $3:(fst $ unLoc $1))
                                                        con
                                                        (snd $ unLoc $1)
                                                        (Just $2)
                                                        details))) }
         | forall constr_stuff
-                {% acsA (\cs -> let (con,details) = unLoc $2 in
-                  (L (comb2 $1 $2) (mkConDeclH98 (EpAnn (spanAsAnchor (comb2 $1 $2)) (fst $ unLoc $1) cs)
+                {% amsA' (let (con,details) = unLoc $2 in
+                  (L (comb2 $1 $2) (mkConDeclH98 (fst $ unLoc $1)
                                                       con
                                                       (snd $ unLoc $1)
                                                       Nothing   -- No context
@@ -2489,8 +2485,8 @@ fielddecls1 :: { [LConDeclField GhcPs] }
 fielddecl :: { LConDeclField GhcPs }
                                               -- A list because of   f,g :: Int
         : sig_vars '::' ctype
-            {% acsA (\cs -> L (comb2 $1 $3)
-                      (ConDeclField (EpAnn (glEE $1 $>) [mu AnnDcolon $2] cs)
+            {% amsA' (L (comb2 $1 $3)
+                      (ConDeclField [mu AnnDcolon $2]
                                     (reverse (map (\ln@(L l n)
                                                -> L (fromTrailingN l) $ FieldOcc noExtField (L (noTrailingN l) n)) (unLoc $1))) $3 Nothing))}
 
@@ -2509,24 +2505,24 @@ derivings :: { Located (HsDeriving GhcPs) }
 deriving :: { LHsDerivingClause GhcPs }
         : 'deriving' deriv_clause_types
               {% let { full_loc = comb2 $1 $> }
-                 in acsA (\cs -> L full_loc $ HsDerivingClause (EpAnn (glEE $1 $>) [mj AnnDeriving $1] cs) Nothing $2) }
+                 in amsA' (L full_loc $ HsDerivingClause [mj AnnDeriving $1] Nothing $2) }
 
         | 'deriving' deriv_strategy_no_via deriv_clause_types
               {% let { full_loc = comb2 $1 $> }
-                 in acsA (\cs -> L full_loc $ HsDerivingClause (EpAnn (glEE $1 $>) [mj AnnDeriving $1] cs) (Just $2) $3) }
+                 in amsA' (L full_loc $ HsDerivingClause [mj AnnDeriving $1] (Just $2) $3) }
 
         | 'deriving' deriv_clause_types deriv_strategy_via
               {% let { full_loc = comb2 $1 $> }
-                 in acsA (\cs -> L full_loc $ HsDerivingClause (EpAnn (glEE $1 $>) [mj AnnDeriving $1] cs) (Just $3) $2) }
+                 in amsA' (L full_loc $ HsDerivingClause [mj AnnDeriving $1] (Just $3) $2) }
 
 deriv_clause_types :: { LDerivClauseTys GhcPs }
         : qtycon              { let { tc = sL1a $1 $ mkHsImplicitSigType $
                                            sL1a $1 $ HsTyVar noAnn NotPromoted $1 } in
                                 sL1a $1 (DctSingle noExtField tc) }
-        | '(' ')'             {% amsrc (sLL $1 $> (DctMulti noExtField []))
-                                       (AnnContext Nothing [glAA $1] [glAA $2]) }
-        | '(' deriv_types ')' {% amsrc (sLL $1 $> (DctMulti noExtField $2))
-                                       (AnnContext Nothing [glAA $1] [glAA $3])}
+        | '(' ')'             {% amsr (sLL $1 $> (DctMulti noExtField []))
+                                      (AnnContext Nothing [glAA $1] [glAA $2]) }
+        | '(' deriv_types ')' {% amsr (sLL $1 $> (DctMulti noExtField $2))
+                                      (AnnContext Nothing [glAA $1] [glAA $3])}
 
 -----------------------------------------------------------------------------
 -- Value definitions
@@ -2562,7 +2558,7 @@ decl_no_th :: { LHsDecl GhcPs }
                                         -- Depending upon what the pattern looks like we might get either
                                         -- a FunBind or PatBind back from checkValDef. See Note
                                         -- [FunBind vs PatBind]
-                                          ; cs <- getCommentsFor l
+                                          ; !cs <- getCommentsFor l
                                           ; return $! (sL (commentsA l cs) $ ValD noExtField r) } }
         | PREFIX_PERCENT atype infixexp     opt_sig rhs  {% runPV (unECP $3) >>= \ $3 ->
                                        do { let { l = comb2 $3 $> }
@@ -2573,7 +2569,7 @@ decl_no_th :: { LHsDecl GhcPs }
                                         -- Depending upon what the pattern looks like we might get either
                                         -- a FunBind or PatBind back from checkValDef. See Note
                                         -- [FunBind vs PatBind]
-                                          ; cs <- getCommentsFor l
+                                          ; !cs <- getCommentsFor l
                                           ; return $! (sL (commentsA l cs) $ ValD noExtField r) } }
         | pattern_synonym_decl  { $1 }
 
@@ -2590,11 +2586,11 @@ rhs     :: { Located (GRHSs GhcPs (LHsExpr GhcPs)) }
                                   do { let L l (bs, csw) = adaptWhereBinds $3
                                      ; let loc = (comb3 $1 $2 (L l bs))
                                      ; let locg = (comb2 $1 $2)
-                                     ; acs (\cs ->
-                                       sL loc (GRHSs csw (unguardedRHS (EpAnn (anc $ rs locg) (GrhsAnn Nothing (mj AnnEqual $1)) cs) locg $2)
+                                     ; acs loc (\loc cs ->
+                                       sL loc (GRHSs csw (unguardedRHS (EpAnn (spanAsAnchor locg) (GrhsAnn Nothing (mj AnnEqual $1)) cs) locg $2)
                                                       bs)) } }
         | gdrhs wherebinds      {% do { let {L l (bs, csw) = adaptWhereBinds $2}
-                                      ; acs (\cs -> sL (comb2 $1 (L l bs))
+                                      ; acs (comb2 $1 (L l bs)) (\loc cs -> L loc
                                                 (GRHSs (cs Semi.<> csw) (reverse (unLoc $1)) bs)) }}
 
 gdrhs :: { Located [LGRHS GhcPs (LHsExpr GhcPs)] }
@@ -2603,7 +2599,7 @@ gdrhs :: { Located [LGRHS GhcPs (LHsExpr GhcPs)] }
 
 gdrh :: { LGRHS GhcPs (LHsExpr GhcPs) }
         : '|' guardquals '=' exp  {% runPV (unECP $4) >>= \ $4 ->
-                                     acsA (\cs -> sL (comb2 $1 $>) $ GRHS (EpAnn (glEE $1 $>) (GrhsAnn (Just $ glAA $1) (mj AnnEqual $3)) cs) (unLoc $2) $4) }
+                                     acsA (comb2 $1 $>) (\loc cs -> L loc $ GRHS (EpAnn (glEE $1 $>) (GrhsAnn (Just $ glAA $1) (mj AnnEqual $3)) cs) (unLoc $2) $4) }
 
 sigdecl :: { LHsDecl GhcPs }
         :
@@ -2611,14 +2607,14 @@ sigdecl :: { LHsDecl GhcPs }
           infixexp     '::' sigtype
                         {% do { $1 <- runPV (unECP $1)
                               ; v <- checkValSigLhs $1
-                              ; acsA (\cs -> (sLL $1 $> $ SigD noExtField $
-                                  TypeSig (EpAnn (glEE $1 $>) (AnnSig (mu AnnDcolon $2) []) cs) [v] (mkHsWildCardBndrs $3)))} }
+                              ; amsA' (sLL $1 $> $ SigD noExtField $
+                                  TypeSig (AnnSig (mu AnnDcolon $2) []) [v] (mkHsWildCardBndrs $3))} }
 
         | var ',' sig_vars '::' sigtype
            {% do { v <- addTrailingCommaN $1 (gl $2)
-                 ; let sig cs = TypeSig (EpAnn (glR $1) (AnnSig (mu AnnDcolon $4) []) cs) (v : reverse (unLoc $3))
+                 ; let sig = TypeSig (AnnSig (mu AnnDcolon $4) []) (v : reverse (unLoc $3))
                                       (mkHsWildCardBndrs $5)
-                 ; acsA (\cs -> sLL $1 $> $ SigD noExtField (sig cs) ) }}
+                 ; amsA' (sLL $1 $> $ SigD noExtField sig ) }}
 
         | infix prec ops
              {% do { mbPrecAnn <- traverse (\l2 -> do { checkPrecP l2 $3
@@ -2629,8 +2625,8 @@ sigdecl :: { LHsDecl GhcPs }
                                                 -- it defaults to maxPrecedence
                                                 Nothing -> (NoSourceText, maxPrecedence)
                                                 Just l2 -> (fst $ unLoc l2, snd $ unLoc l2)
-                   ; acsA (\cs -> sLL $1 $> $ SigD noExtField
-                            (FixSig (EpAnn (glEE $1 $>) (mj AnnInfix $1 : maybeToList mbPrecAnn) cs) (FixitySig noExtField (fromOL $ unLoc $3)
+                   ; amsA' (sLL $1 $> $ SigD noExtField
+                            (FixSig (mj AnnInfix $1 : maybeToList mbPrecAnn) (FixitySig noExtField (fromOL $ unLoc $3)
                                     (Fixity fixText fixPrec (unLoc $1)))))
                    }}
 
@@ -2638,44 +2634,42 @@ sigdecl :: { LHsDecl GhcPs }
 
         | '{-# COMPLETE' qcon_list opt_tyconsig  '#-}'
                 {% let (dcolon, tc) = $3
-                   in acsA
-                       (\cs -> sLL $1 $>
-                         (SigD noExtField (CompleteMatchSig ((EpAnn (glEE $1 $>) ([ mo $1 ] ++ dcolon ++ [mc $4]) cs), (getCOMPLETE_PRAGs $1)) $2 tc))) }
+                   in amsA' (sLL $1 $>
+                         (SigD noExtField (CompleteMatchSig ([ mo $1 ] ++ dcolon ++ [mc $4], (getCOMPLETE_PRAGs $1)) $2 tc))) }
 
         -- This rule is for both INLINE and INLINABLE pragmas
         | '{-# INLINE' activation qvarcon '#-}'
-                {% acsA (\cs -> (sLL $1 $> $ SigD noExtField (InlineSig (EpAnn (glEE $1 $>) ((mo $1:fst $2) ++ [mc $4]) cs) $3
+                {% amsA' (sLL $1 $> $ SigD noExtField (InlineSig ((mo $1:fst $2) ++ [mc $4]) $3
                             (mkInlinePragma (getINLINE_PRAGs $1) (getINLINE $1)
-                                            (snd $2))))) }
+                                            (snd $2)))) }
         | '{-# OPAQUE' qvar '#-}'
-                {% acsA (\cs -> (sLL $1 $> $ SigD noExtField (InlineSig (EpAnn (glEE $1 $>) [mo $1, mc $3] cs) $2
-                            (mkOpaquePragma (getOPAQUE_PRAGs $1))))) }
+                {% amsA' (sLL $1 $> $ SigD noExtField (InlineSig [mo $1, mc $3] $2
+                            (mkOpaquePragma (getOPAQUE_PRAGs $1)))) }
         | '{-# SCC' qvar '#-}'
-          {% acsA (\cs -> sLL $1 $> (SigD noExtField (SCCFunSig ((EpAnn (glEE $1 $>) [mo $1, mc $3] cs), (getSCC_PRAGs $1)) $2 Nothing))) }
+          {% amsA' (sLL $1 $> (SigD noExtField (SCCFunSig ([mo $1, mc $3], (getSCC_PRAGs $1)) $2 Nothing))) }
 
         | '{-# SCC' qvar STRING '#-}'
           {% do { scc <- getSCC $3
                 ; let str_lit = StringLiteral (getSTRINGs $3) scc Nothing
-                ; acsA (\cs -> sLL $1 $> (SigD noExtField (SCCFunSig ((EpAnn (glEE $1 $>) [mo $1, mc $4] cs), (getSCC_PRAGs $1)) $2 (Just ( sL1a $3 str_lit))))) }}
+                ; amsA' (sLL $1 $> (SigD noExtField (SCCFunSig ([mo $1, mc $4], (getSCC_PRAGs $1)) $2 (Just ( sL1a $3 str_lit))))) }}
 
         | '{-# SPECIALISE' activation qvar '::' sigtypes1 '#-}'
-             {% acsA (\cs ->
+             {% amsA' (
                  let inl_prag = mkInlinePragma (getSPEC_PRAGs $1)
                                              (NoUserInlinePrag, FunLike) (snd $2)
-                  in sLL $1 $> $ SigD noExtField (SpecSig (EpAnn (glEE $1 $>) (mo $1:mu AnnDcolon $4:mc $6:(fst $2)) cs) $3 (fromOL $5) inl_prag)) }
+                  in sLL $1 $> $ SigD noExtField (SpecSig (mo $1:mu AnnDcolon $4:mc $6:(fst $2)) $3 (fromOL $5) inl_prag)) }
 
         | '{-# SPECIALISE_INLINE' activation qvar '::' sigtypes1 '#-}'
-             {% acsA (\cs -> sLL $1 $> $ SigD noExtField (SpecSig (EpAnn (glEE $1 $>) (mo $1:mu AnnDcolon $4:mc $6:(fst $2)) cs) $3 (fromOL $5)
+             {% amsA' (sLL $1 $> $ SigD noExtField (SpecSig (mo $1:mu AnnDcolon $4:mc $6:(fst $2)) $3 (fromOL $5)
                                (mkInlinePragma (getSPEC_INLINE_PRAGs $1)
                                                (getSPEC_INLINE $1) (snd $2)))) }
 
         | '{-# SPECIALISE' 'instance' inst_type '#-}'
-                {% acsA (\cs -> sLL $1 $>
-                                  $ SigD noExtField (SpecInstSig ((EpAnn (glEE $1 $>) [mo $1,mj AnnInstance $2,mc $4] cs), (getSPEC_PRAGs $1)) $3)) }
+                {% amsA' (sLL $1 $> $ SigD noExtField (SpecInstSig ([mo $1,mj AnnInstance $2,mc $4], (getSPEC_PRAGs $1)) $3)) }
 
         -- A minimal complete definition
         | '{-# MINIMAL' name_boolformula_opt '#-}'
-            {% acsA (\cs -> sLL $1 $> $ SigD noExtField (MinimalSig ((EpAnn (glEE $1 $>) [mo $1,mc $3] cs), (getMINIMAL_PRAGs $1)) $2)) }
+            {% amsA' (sLL $1 $> $ SigD noExtField (MinimalSig ([mo $1,mc $3], (getMINIMAL_PRAGs $1)) $2)) }
 
 activation :: { ([AddEpAnn],Maybe Activation) }
         -- See Note [%shift: activation -> {- empty -}]
@@ -2712,22 +2706,22 @@ exp   :: { ECP }
         | infixexp '-<' exp     {% runPV (unECP $1) >>= \ $1 ->
                                    runPV (unECP $3) >>= \ $3 ->
                                    fmap ecpFromCmd $
-                                   acsA (\cs -> sLL $1 $> $ HsCmdArrApp (EpAnn (glEE $1 $>) (mu Annlarrowtail $2) cs) $1 $3
+                                   amsA' (sLL $1 $> $ HsCmdArrApp (mu Annlarrowtail $2) $1 $3
                                                         HsFirstOrderApp True) }
         | infixexp '>-' exp     {% runPV (unECP $1) >>= \ $1 ->
                                    runPV (unECP $3) >>= \ $3 ->
                                    fmap ecpFromCmd $
-                                   acsA (\cs -> sLL $1 $> $ HsCmdArrApp (EpAnn (glEE $1 $>) (mu Annrarrowtail $2) cs) $3 $1
+                                   amsA' (sLL $1 $> $ HsCmdArrApp (mu Annrarrowtail $2) $3 $1
                                                       HsFirstOrderApp False) }
         | infixexp '-<<' exp    {% runPV (unECP $1) >>= \ $1 ->
                                    runPV (unECP $3) >>= \ $3 ->
                                    fmap ecpFromCmd $
-                                   acsA (\cs -> sLL $1 $> $ HsCmdArrApp (EpAnn (glEE $1 $>) (mu AnnLarrowtail $2) cs) $1 $3
+                                   amsA' (sLL $1 $> $ HsCmdArrApp (mu AnnLarrowtail $2) $1 $3
                                                       HsHigherOrderApp True) }
         | infixexp '>>-' exp    {% runPV (unECP $1) >>= \ $1 ->
                                    runPV (unECP $3) >>= \ $3 ->
                                    fmap ecpFromCmd $
-                                   acsA (\cs -> sLL $1 $> $ HsCmdArrApp (EpAnn (glEE $1 $>) (mu AnnRarrowtail $2) cs) $3 $1
+                                   amsA' (sLL $1 $> $ HsCmdArrApp (mu AnnRarrowtail $2) $3 $1
                                                       HsHigherOrderApp False) }
         -- See Note [%shift: exp -> infixexp]
         | infixexp %shift       { $1 }
@@ -2758,7 +2752,7 @@ exp_prag(e) :: { ECP }
   : prag_e e  -- See Note [Pragmas and operator fixity]
       {% runPV (unECP $2) >>= \ $2 ->
          fmap ecpFromExp $
-         return $ (sLLa $1 $> $ HsPragE noExtField (unLoc $1) $2) }
+         amsA' $ (sLL $1 $> $ HsPragE noExtField (unLoc $1) $2) }
 
 exp10 :: { ECP }
         -- See Note [%shift: exp10 -> '-' fexp]
@@ -2820,23 +2814,24 @@ may sound unnecessary, but it's actually needed to support a common idiom:
 -}
 prag_e :: { Located (HsPragE GhcPs) }
       : '{-# SCC' STRING '#-}'      {% do { scc <- getSCC $2
-                                          ; acs (\cs -> (sLL $1 $>
+                                          ; return (sLL $1 $>
                                              (HsPragSCC
-                                                ((EpAnn (glEE $1 $>) (AnnPragma (mo $1) (mc $3) [mj AnnValStr $2]) cs),
+                                                (AnnPragma (mo $1) (mc $3) [mj AnnValStr $2],
                                                 (getSCC_PRAGs $1))
-                                                (StringLiteral (getSTRINGs $2) scc Nothing))))} }
-      | '{-# SCC' VARID  '#-}'      {% acs (\cs -> (sLL $1 $>
+                                                (StringLiteral (getSTRINGs $2) scc Nothing)))} }
+      | '{-# SCC' VARID  '#-}'      { sLL $1 $>
                                              (HsPragSCC
-                                               ((EpAnn (glEE $1 $>) (AnnPragma (mo $1) (mc $3) [mj AnnVal $2]) cs),
+                                               (AnnPragma (mo $1) (mc $3) [mj AnnVal $2],
                                                (getSCC_PRAGs $1))
-                                               (StringLiteral NoSourceText (getVARID $2) Nothing)))) }
+                                               (StringLiteral NoSourceText (getVARID $2) Nothing)) }
 
 fexp    :: { ECP }
         : fexp aexp                  { ECP $
                                           superFunArg $
                                           unECP $1 >>= \ $1 ->
                                           unECP $2 >>= \ $2 ->
-                                          mkHsAppPV (noAnnSrcSpan $ comb2 $1 $>) $1 $2 }
+                                          spanWithComments (comb2 $1 $>) >>= \l ->
+                                          mkHsAppPV l $1 $2 }
 
         -- See Note [Whitespace-sensitive operator parsing] in GHC.Parser.Lexer
         | fexp PREFIX_AT atype       { ECP $
@@ -2845,7 +2840,7 @@ fexp    :: { ECP }
 
         | 'static' aexp              {% runPV (unECP $2) >>= \ $2 ->
                                         fmap ecpFromExp $
-                                        acsA (\cs -> sLL $1 $> $ HsStatic (EpAnn (glEE $1 $>) [mj AnnStatic $1] cs) $2) }
+                                        amsA' (sLL $1 $> $ HsStatic [mj AnnStatic $1] $2) }
 
         | aexp                       { $1 }
 
@@ -2876,7 +2871,7 @@ aexp    :: { ECP }
                       mkHsLamPV (comb2 $1 $>) LamSingle
                             (sLLl $1 $>
                             [sLLa $1 $>
-                                         $ Match { m_ext = EpAnn (glEE $1 $>) [] emptyComments
+                                         $ Match { m_ext = []
                                                  , m_ctxt = LamAlt LamSingle
                                                  , m_pats = $2
                                                  , m_grhss = unguardedGRHSs (comb2 $3 $4) $4 (EpAnn (glR $3) (GrhsAnn Nothing (mu AnnRarrow $3)) emptyComments) }])
@@ -2902,7 +2897,7 @@ aexp    :: { ECP }
 
         | 'if' ifgdpats                 {% hintMultiWayIf (getLoc $1) >>= \_ ->
                                            fmap ecpFromExp $
-                                           acsA (\cs -> sLL $1 $> $ HsMultiIf (EpAnn (glEE $1 $>) (mj AnnIf $1:(fst $ unLoc $2)) cs)
+                                           amsA' (sLL $1 $> $ HsMultiIf (mj AnnIf $1:(fst $ unLoc $2))
                                                      (reverse $ snd $ unLoc $2)) }
         | 'case' exp 'of' altslist(pats1) {% runPV (unECP $2) >>= \ ($2 :: LHsExpr GhcPs) ->
                                              return $ ECP $
@@ -2920,16 +2915,16 @@ aexp    :: { ECP }
                                                  (AnnList (Just $ glR $2) Nothing Nothing [mj AnnDo $1] []) }
         | MDO stmtlist             {% hintQualifiedDo $1 >> runPV $2 >>= \ $2 ->
                                        fmap ecpFromExp $
-                                       acsA (\cs -> L (comb2 $1 $2)
+                                       amsA' (L (comb2 $1 $2)
                                               (mkHsDoAnns (MDoExpr $
                                                           fmap mkModuleNameFS (getMDO $1))
                                                           $2
-                                           (EpAnn (glEE $1 $>) (AnnList (Just $ glR $2) Nothing Nothing [mj AnnMdo $1] []) cs) )) }
+                                              (AnnList (Just $ glR $2) Nothing Nothing [mj AnnMdo $1] []) )) }
         | 'proc' aexp '->' exp
                        {% (checkPattern <=< runPV) (unECP $2) >>= \ p ->
                            runPV (unECP $4) >>= \ $4@cmd ->
                            fmap ecpFromExp $
-                           acsA (\cs -> sLL $1 $> $ HsProc (EpAnn (glEE $1 $>) [mj AnnProc $1,mu AnnRarrow $3] cs) p (sLLa $1 $> $ HsCmdTop noExtField cmd)) }
+                           amsA' (sLL $1 $> $ HsProc [mj AnnProc $1,mu AnnRarrow $3] p (sLLa $1 $> $ HsCmdTop noExtField cmd)) }
 
         | aexp1                 { $1 }
 
@@ -2945,9 +2940,9 @@ aexp1   :: { ECP }
         -- See Note [Whitespace-sensitive operator parsing] in GHC.Parser.Lexer
         | aexp1 TIGHT_INFIX_PROJ field
             {% runPV (unECP $1) >>= \ $1 ->
-               fmap ecpFromExp $ acsA (\cs ->
-                 let fl = sLLa $2 $> (DotFieldOcc ((EpAnn (glR $2) (AnnFieldLabel (Just $ glAA $2)) emptyComments)) $3) in
-               sLL $1 $> $ mkRdrGetField $1 fl (EpAnn (glEE $1 $>) NoEpAnns cs))  }
+               fmap ecpFromExp $ amsA' (
+                 let fl = sLLa $2 $> (DotFieldOcc (AnnFieldLabel (Just $ glAA $2)) $3) in
+               sLL $1 $> $ mkRdrGetField $1 fl)  }
 
 
 
@@ -2957,9 +2952,11 @@ aexp2   :: { ECP }
         : qvar                          { ECP $ mkHsVarPV $! $1 }
         | qcon                          { ECP $ mkHsVarPV $! $1 }
         -- See Note [%shift: aexp2 -> ipvar]
-        | ipvar %shift                  {% acsExpr (\cs -> sL1a $1 (HsIPVar (comment (glRR $1) cs) $! unLoc $1)) }
-        | overloaded_label              {% acsExpr (\cs -> sL1a $1 (HsOverLabel (comment (glRR $1) cs) (fst $! unLoc $1) (snd $! unLoc $1))) }
-        | literal                       { ECP $ pvA (mkHsLitPV $! $1) }
+        | ipvar %shift                  {% fmap ecpFromExp
+                                           (ams1 $1 (HsIPVar NoExtField $! unLoc $1)) }
+        | overloaded_label              {% fmap ecpFromExp
+                                           (ams1 $1 (HsOverLabel NoExtField (fst $! unLoc $1) (snd $! unLoc $1))) }
+        | literal                       { ECP $ mkHsLitPV $! $1 }
 -- This will enable overloaded strings permanently.  Normally the renamer turns HsString
 -- into HsOverLit when -XOverloadedStrings is on.
 --      | STRING    { sL (getLoc $1) (HsOverLit $! mkHsIsString (getSTRINGs $1)
@@ -2981,7 +2978,7 @@ aexp2   :: { ECP }
 
         -- This case is only possible when 'OverloadedRecordDotBit' is enabled.
         | '(' projection ')'            { ECP $
-                                            acsA (\cs -> sLL $1 $> $ mkRdrProjection (NE.reverse (unLoc $2)) (EpAnn (glEE $1 $>) (AnnProjection (glAA $1) (glAA $3)) cs))
+                                            amsA' (sLL $1 $> $ mkRdrProjection (NE.reverse (unLoc $2)) (AnnProjection (glAA $1) (glAA $3)) )
                                             >>= ecpFromExp'
                                         }
 
@@ -2995,61 +2992,61 @@ aexp2   :: { ECP }
                                                 [moh $1,mch $3] }
 
         | '[' list ']'      { ECP $ $2 (comb2 $1 $>) (mos $1,mcs $3) }
-        | '_'               { ECP $ pvA $ mkHsWildCardPV (getLoc $1) }
+        | '_'               { ECP $ mkHsWildCardPV (getLoc $1) }
 
         -- Template Haskell Extension
-        | splice_untyped { ECP $ pvA $ mkHsSplicePV $1 }
+        | splice_untyped { ECP $ mkHsSplicePV $1 }
         | splice_typed   { ecpFromExp $ fmap (uncurry HsTypedSplice) (reLoc $1) }
 
-        | SIMPLEQUOTE  qvar     {% fmap ecpFromExp $ acsA (\cs -> sLL $1 $> $ HsUntypedBracket (EpAnn (glEE $1 $>) [mj AnnSimpleQuote $1] cs) (VarBr noExtField True  $2)) }
-        | SIMPLEQUOTE  qcon     {% fmap ecpFromExp $ acsA (\cs -> sLL $1 $> $ HsUntypedBracket (EpAnn (glEE $1 $>) [mj AnnSimpleQuote $1] cs) (VarBr noExtField True  $2)) }
-        | TH_TY_QUOTE tyvar     {% fmap ecpFromExp $ acsA (\cs -> sLL $1 $> $ HsUntypedBracket (EpAnn (glEE $1 $>) [mj AnnThTyQuote $1  ] cs) (VarBr noExtField False $2)) }
-        | TH_TY_QUOTE gtycon    {% fmap ecpFromExp $ acsA (\cs -> sLL $1 $> $ HsUntypedBracket (EpAnn (glEE $1 $>) [mj AnnThTyQuote $1  ] cs) (VarBr noExtField False $2)) }
+        | SIMPLEQUOTE  qvar     {% fmap ecpFromExp $ amsA' (sLL $1 $> $ HsUntypedBracket [mj AnnSimpleQuote $1] (VarBr noExtField True  $2)) }
+        | SIMPLEQUOTE  qcon     {% fmap ecpFromExp $ amsA' (sLL $1 $> $ HsUntypedBracket [mj AnnSimpleQuote $1] (VarBr noExtField True  $2)) }
+        | TH_TY_QUOTE tyvar     {% fmap ecpFromExp $ amsA' (sLL $1 $> $ HsUntypedBracket [mj AnnThTyQuote $1  ] (VarBr noExtField False $2)) }
+        | TH_TY_QUOTE gtycon    {% fmap ecpFromExp $ amsA' (sLL $1 $> $ HsUntypedBracket [mj AnnThTyQuote $1  ] (VarBr noExtField False $2)) }
         -- See Note [%shift: aexp2 -> TH_TY_QUOTE]
         | TH_TY_QUOTE %shift    {% reportEmptyDoubleQuotes (getLoc $1) }
         | '[|' exp '|]'       {% runPV (unECP $2) >>= \ $2 ->
                                  fmap ecpFromExp $
-                                 acsA (\cs -> sLL $1 $> $ HsUntypedBracket (EpAnn (glEE $1 $>) (if (hasE $1) then [mj AnnOpenE $1, mu AnnCloseQ $3]
-                                                                                         else [mu AnnOpenEQ $1,mu AnnCloseQ $3]) cs) (ExpBr noExtField $2)) }
+                                 amsA' (sLL $1 $> $ HsUntypedBracket (if (hasE $1) then [mj AnnOpenE $1, mu AnnCloseQ $3]
+                                                                                         else [mu AnnOpenEQ $1,mu AnnCloseQ $3]) (ExpBr noExtField $2)) }
         | '[||' exp '||]'     {% runPV (unECP $2) >>= \ $2 ->
                                  fmap ecpFromExp $
-                                 acsA (\cs -> sLL $1 $> $ HsTypedBracket (EpAnn (glEE $1 $>) (if (hasE $1) then [mj AnnOpenE $1,mc $3] else [mo $1,mc $3]) cs) $2) }
+                                 amsA' (sLL $1 $> $ HsTypedBracket (if (hasE $1) then [mj AnnOpenE $1,mc $3] else [mo $1,mc $3]) $2) }
         | '[t|' ktype '|]'    {% fmap ecpFromExp $
-                                 acsA (\cs -> sLL $1 $> $ HsUntypedBracket (EpAnn (glEE $1 $>) [mo $1,mu AnnCloseQ $3] cs) (TypBr noExtField $2)) }
+                                 amsA' (sLL $1 $> $ HsUntypedBracket [mo $1,mu AnnCloseQ $3] (TypBr noExtField $2)) }
         | '[p|' infixexp '|]' {% (checkPattern <=< runPV) (unECP $2) >>= \p ->
                                       fmap ecpFromExp $
-                                      acsA (\cs -> sLL $1 $> $ HsUntypedBracket (EpAnn (glEE $1 $>) [mo $1,mu AnnCloseQ $3] cs) (PatBr noExtField p)) }
+                                      amsA' (sLL $1 $> $ HsUntypedBracket [mo $1,mu AnnCloseQ $3] (PatBr noExtField p)) }
         | '[d|' cvtopbody '|]' {% fmap ecpFromExp $
-                                  acsA (\cs -> sLL $1 $> $ HsUntypedBracket (EpAnn (glEE $1 $>) (mo $1:mu AnnCloseQ $3:fst $2) cs) (DecBrL noExtField (snd $2))) }
-        | quasiquote          { ECP $ pvA $ mkHsSplicePV $1 }
+                                  amsA' (sLL $1 $> $ HsUntypedBracket (mo $1:mu AnnCloseQ $3:fst $2) (DecBrL noExtField (snd $2))) }
+        | quasiquote          { ECP $ mkHsSplicePV $1 }
 
         -- arrow notation extension
         | '(|' aexp cmdargs '|)'  {% runPV (unECP $2) >>= \ $2 ->
                                       fmap ecpFromCmd $
-                                      acsA (\cs -> sLL $1 $> $ HsCmdArrForm (EpAnn (glEE $1 $>) (AnnList (glRM $1) (Just $ mu AnnOpenB $1) (Just $ mu AnnCloseB $4) [] []) cs) $2 Prefix
+                                      amsA' (sLL $1 $> $ HsCmdArrForm (AnnList (glRM $1) (Just $ mu AnnOpenB $1) (Just $ mu AnnCloseB $4) [] []) $2 Prefix
                                                            Nothing (reverse $3)) }
 
 projection :: { Located (NonEmpty (LocatedAn NoEpAnns (DotFieldOcc GhcPs))) }
 projection
         -- See Note [Whitespace-sensitive operator parsing] in GHC.Parsing.Lexer
         : projection TIGHT_INFIX_PROJ field
-                             {% acs (\cs -> sLL $1 $> ((sLLa $2 $> $ DotFieldOcc (EpAnn (glEE $1 $>) (AnnFieldLabel (Just $ glAA $2)) cs) $3) `NE.cons` unLoc $1)) }
-        | PREFIX_PROJ field  {% acs (\cs -> sLL $1 $> ((sLLa $1 $> $ DotFieldOcc (EpAnn (glEE $1 $>) (AnnFieldLabel (Just $ glAA $1)) cs) $2) :| [])) }
+                             { sLL $1 $> ((sLLa $2 $> $ DotFieldOcc (AnnFieldLabel (Just $ glAA $2)) $3) `NE.cons` unLoc $1) }
+        | PREFIX_PROJ field  { sLL $1 $> ((sLLa $1 $> $ DotFieldOcc (AnnFieldLabel (Just $ glAA $1)) $2) :| [])}
 
 splice_exp :: { LHsExpr GhcPs }
-        : splice_untyped { fmap (HsUntypedSplice noAnn) (reLoc $1) }
+        : splice_untyped { fmap (HsUntypedSplice noExtField) (reLoc $1) }
         | splice_typed   { fmap (uncurry HsTypedSplice) (reLoc $1) }
 
 splice_untyped :: { Located (HsUntypedSplice GhcPs) }
         -- See Note [Whitespace-sensitive operator parsing] in GHC.Parser.Lexer
         : PREFIX_DOLLAR aexp2   {% runPV (unECP $2) >>= \ $2 ->
-                                   acs (\cs -> sLL $1 $> $ HsUntypedSpliceExpr (EpAnn (glEE $1 $>) [mj AnnDollar $1] cs) $2) }
+                                   return (sLL $1 $> $ HsUntypedSpliceExpr [mj AnnDollar $1] $2) }
 
-splice_typed :: { Located ((EpAnnCO, EpAnn [AddEpAnn]), LHsExpr GhcPs) }
+splice_typed :: { Located ([AddEpAnn], LHsExpr GhcPs) }
         -- See Note [Whitespace-sensitive operator parsing] in GHC.Parser.Lexer
         : PREFIX_DOLLAR_DOLLAR aexp2
                                 {% runPV (unECP $2) >>= \ $2 ->
-                                   acs (\cs -> sLL $1 $> $ ((noAnn, EpAnn (glEE $1 $>) [mj AnnDollarDollar $1] cs), $2)) }
+                                   return (sLL $1 $> $ ([mj AnnDollarDollar $1], $2)) }
 
 cmdargs :: { [LHsCmdTop GhcPs] }
         : cmdargs acmd                  { $2 : $1 }
@@ -3094,12 +3091,12 @@ texp :: { ECP }
                                 runPV (rejectPragmaPV $1) >>
                                 runPV $2 >>= \ $2 ->
                                 return $ ecpFromExp $
-                                sLLa $1 $> $ SectionL noAnn $1 (n2l $2) }
+                                sLLa $1 $> $ SectionL noExtField $1 (n2l $2) }
         | qopm infixexp      { ECP $
                                 superInfixOp $
                                 unECP $2 >>= \ $2 ->
                                 $1 >>= \ $1 ->
-                                pvA $ mkHsSectionR_PV (comb2 $1 $>) (n2l $1) $2 }
+                                mkHsSectionR_PV (comb2 $1 $>) (n2l $1) $2 }
 
        -- View patterns get parenthesized above
         | exp '->' texp   { ECP $
@@ -3119,7 +3116,7 @@ tup_exprs :: { forall b. DisambECP b => PV (SumOrTuple b) }
                                 ; return (Tuple (Right t : snd $2)) } }
            | commas tup_tail
                  { $2 >>= \ $2 ->
-                   do { let {cos = map (\ll -> (Left (EpAnn (anc $ rs ll) True emptyComments))) (fst $1) }
+                   do { let {cos = map (\ll -> (Left (EpAnn (spanAsAnchor ll) True emptyComments))) (fst $1) }
                       ; return (Tuple (cos ++ $2)) } }
 
            | texp bars   { unECP $1 >>= \ $1 -> return $
@@ -3135,7 +3132,7 @@ tup_exprs :: { forall b. DisambECP b => PV (SumOrTuple b) }
 commas_tup_tail :: { forall b. DisambECP b => PV (SrcSpan,[Either (EpAnn Bool) (LocatedA b)]) }
 commas_tup_tail : commas tup_tail
         { $2 >>= \ $2 ->
-          do { let {cos = map (\l -> (Left (EpAnn (anc $ rs l) True emptyComments))) (tail $ fst $1) }
+          do { let {cos = map (\l -> (Left (EpAnn (spanAsAnchor l) True emptyComments))) (tail $ fst $1) }
              ; return ((head $ fst $1, cos ++ $2)) } }
 
 -- Always follows a comma
@@ -3161,29 +3158,29 @@ list :: { forall b. DisambECP b => SrcSpan -> (AddEpAnn, AddEpAnn) -> PV (Locate
         | lexps   { \loc (ao,ac) -> $1 >>= \ $1 ->
                             mkHsExplicitListPV loc (reverse $1) (AnnList Nothing (Just ao) (Just ac) [] []) }
         | texp '..'  { \loc (ao,ac) -> unECP $1 >>= \ $1 ->
-                                  acsA (\cs -> L loc $ ArithSeq (EpAnn (spanAsAnchor loc) [ao,mj AnnDotdot $2,ac] cs) Nothing (From $1))
+                                  amsA' (L loc $ ArithSeq [ao,mj AnnDotdot $2,ac] Nothing (From $1))
                                       >>= ecpFromExp' }
         | texp ',' exp '..' { \loc (ao,ac) ->
                                    unECP $1 >>= \ $1 ->
                                    unECP $3 >>= \ $3 ->
-                                   acsA (\cs -> L loc $ ArithSeq (EpAnn (spanAsAnchor loc) [ao,mj AnnComma $2,mj AnnDotdot $4,ac] cs) Nothing (FromThen $1 $3))
+                                   amsA' (L loc $ ArithSeq [ao,mj AnnComma $2,mj AnnDotdot $4,ac] Nothing (FromThen $1 $3))
                                        >>= ecpFromExp' }
         | texp '..' exp  { \loc (ao,ac) ->
                                    unECP $1 >>= \ $1 ->
                                    unECP $3 >>= \ $3 ->
-                                   acsA (\cs -> L loc $ ArithSeq (EpAnn (spanAsAnchor loc) [ao,mj AnnDotdot $2,ac] cs) Nothing (FromTo $1 $3))
+                                   amsA' (L loc $ ArithSeq [ao,mj AnnDotdot $2,ac] Nothing (FromTo $1 $3))
                                        >>= ecpFromExp' }
         | texp ',' exp '..' exp { \loc (ao,ac) ->
                                    unECP $1 >>= \ $1 ->
                                    unECP $3 >>= \ $3 ->
                                    unECP $5 >>= \ $5 ->
-                                   acsA (\cs -> L loc $ ArithSeq (EpAnn (spanAsAnchor loc) [ao,mj AnnComma $2,mj AnnDotdot $4,ac] cs) Nothing (FromThenTo $1 $3 $5))
+                                   amsA' (L loc $ ArithSeq [ao,mj AnnComma $2,mj AnnDotdot $4,ac] Nothing (FromThenTo $1 $3 $5))
                                        >>= ecpFromExp' }
         | texp '|' flattenedpquals
              { \loc (ao,ac) ->
                 checkMonadComp >>= \ ctxt ->
                 unECP $1 >>= \ $1 -> do { t <- addTrailingVbarA $1 (gl $2)
-                ; acsA (\cs -> L loc $ mkHsCompAnns ctxt (unLoc $3) t (EpAnn (spanAsAnchor loc) (AnnList Nothing (Just ao) (Just ac) [] []) cs))
+                ; amsA' (L loc $ mkHsCompAnns ctxt (unLoc $3) t (AnnList Nothing (Just ao) (Just ac) [] []))
                     >>= ecpFromExp' } }
 
 lexps :: { forall b. DisambECP b => PV [LocatedA b] }
@@ -3228,14 +3225,14 @@ squals :: { Located [LStmt GhcPs (LHsExpr GhcPs)] }   -- In reverse order, becau
              {% case unLoc $1 of
                   (h:t) -> do
                     h' <- addTrailingCommaA h (gl $2)
-                    return (sLL $1 $> [sLLa $1 $> ((unLoc $3) (glRR $1) (reverse (h':t)))]) }
+                    return (sLL $1 $> [sLLa $1 $> ((unLoc $3) (reverse (h':t)))]) }
     | squals ',' qual
              {% runPV $3 >>= \ $3 ->
                 case unLoc $1 of
                   (h:t) -> do
                     h' <- addTrailingCommaA h (gl $2)
                     return (sLL $1 $> ($3 : (h':t))) }
-    | transformqual        {% return (sLL $1 $> [L (getLocAnn $1) ((unLoc $1) (glRR $1) [])]) }
+    | transformqual        { sLL $1 $> [L (getLocAnn $1) ((unLoc $1) [])] }
     | qual                               {% runPV $1 >>= \ $1 ->
                                             return $ sL1 $1 [$1] }
 --  | transformquals1 ',' '{|' pquals '|}'   { sLL $1 $> ($4 : unLoc $1) }
@@ -3246,25 +3243,22 @@ squals :: { Located [LStmt GhcPs (LHsExpr GhcPs)] }   -- In reverse order, becau
 -- consensus on the syntax, this feature is not being used until we
 -- get user demand.
 
-transformqual :: { Located (RealSrcSpan -> [LStmt GhcPs (LHsExpr GhcPs)] -> Stmt GhcPs (LHsExpr GhcPs)) }
+transformqual :: { Located ([LStmt GhcPs (LHsExpr GhcPs)] -> Stmt GhcPs (LHsExpr GhcPs)) }
                         -- Function is applied to a list of stmts *in order*
     : 'then' exp              {% runPV (unECP $2) >>= \ $2 ->
-                                 acs (\cs->
-                                 sLL $1 $> (\r ss -> (mkTransformStmt (EpAnn (anc r) [mj AnnThen $1] cs) ss $2))) }
+                                 return (
+                                 sLL $1 $> (\ss -> (mkTransformStmt [mj AnnThen $1] ss $2))) }
     | 'then' exp 'by' exp     {% runPV (unECP $2) >>= \ $2 ->
                                  runPV (unECP $4) >>= \ $4 ->
-                                 acs (\cs -> sLL $1 $> (
-                                                     \r ss -> (mkTransformByStmt (EpAnn (anc r) [mj AnnThen $1,mj AnnBy $3] cs) ss $2 $4))) }
+                                 return (sLL $1 $> (\ss -> (mkTransformByStmt [mj AnnThen $1,mj AnnBy $3] ss $2 $4))) }
     | 'then' 'group' 'using' exp
             {% runPV (unECP $4) >>= \ $4 ->
-               acs (\cs -> sLL $1 $> (
-                                   \r ss -> (mkGroupUsingStmt (EpAnn (anc r) [mj AnnThen $1,mj AnnGroup $2,mj AnnUsing $3] cs) ss $4))) }
+               return (sLL $1 $> (\ss -> (mkGroupUsingStmt [mj AnnThen $1,mj AnnGroup $2,mj AnnUsing $3] ss $4))) }
 
     | 'then' 'group' 'by' exp 'using' exp
             {% runPV (unECP $4) >>= \ $4 ->
                runPV (unECP $6) >>= \ $6 ->
-               acs (\cs -> sLL $1 $> (
-                                   \r ss -> (mkGroupByUsingStmt (EpAnn (anc r) [mj AnnThen $1,mj AnnGroup $2,mj AnnBy $3,mj AnnUsing $5] cs) ss $4 $6))) }
+               return (sLL $1 $> (\ss -> (mkGroupByUsingStmt [mj AnnThen $1,mj AnnGroup $2,mj AnnBy $3,mj AnnUsing $5] ss $4 $6))) }
 
 -- Note that 'group' is a special_id, which means that you can enable
 -- TransformListComp while still using Data.List.group. However, this
@@ -3290,13 +3284,13 @@ guardquals1 :: { Located [LStmt GhcPs (LHsExpr GhcPs)] }
 -- Case alternatives
 
 altslist(PATS) :: { forall b. DisambECP b => PV (LocatedL [LMatch GhcPs (LocatedA b)]) }
-        : '{'        alts(PATS) '}'    { $2 >>= \ $2 -> amsrl
+        : '{'        alts(PATS) '}'    { $2 >>= \ $2 -> amsr
                                            (sLL $1 $> (reverse (snd $ unLoc $2)))
                                            (AnnList (Just $ glR $2) (Just $ moc $1) (Just $ mcc $3) (fst $ unLoc $2) []) }
-        | vocurly    alts(PATS)  close { $2 >>= \ $2 -> amsrl
+        | vocurly    alts(PATS)  close { $2 >>= \ $2 -> amsr
                                            (L (getLoc $2) (reverse (snd $ unLoc $2)))
                                            (AnnList (Just $ glR $2) Nothing Nothing (fst $ unLoc $2) []) }
-        | '{'              '}'   { amsrl (sLL $1 $> []) (AnnList Nothing (Just $ moc $1) (Just $ mcc $2) [] []) }
+        | '{'              '}'   { amsr (sLL $1 $> []) (AnnList Nothing (Just $ moc $1) (Just $ mcc $2) [] []) }
         | vocurly          close { return $ noLocA [] }
 
 alts(PATS) :: { forall b. DisambECP b => PV (Located ([AddEpAnn],[LMatch GhcPs (LocatedA b)])) }
@@ -3326,8 +3320,8 @@ alts1(PATS) :: { forall b. DisambECP b => PV (Located ([AddEpAnn],[LMatch GhcPs
 
 alt(PATS) :: { forall b. DisambECP b => PV (LMatch GhcPs (LocatedA b)) }
         : PATS alt_rhs { $2 >>= \ $2 ->
-                         acsA (\cs -> sLLAsl $1 $>
-                                         (Match { m_ext = EpAnn (listAsAnchor $1 $>) [] cs
+                         acsA (sLLAsl $1 $> ()) (\loc cs -> L (locA loc)
+                                         (Match { m_ext = []
                                                 , m_ctxt = CaseAlt -- for \case and \cases, this will be changed during post-processing
                                                 , m_pats = $1
                                                 , m_grhss = unLoc $2 }))}
@@ -3335,11 +3329,11 @@ alt(PATS) :: { forall b. DisambECP b => PV (LMatch GhcPs (LocatedA b)) }
 alt_rhs :: { forall b. DisambECP b => PV (Located (GRHSs GhcPs (LocatedA b))) }
         : ralt wherebinds           { $1 >>= \alt ->
                                       do { let {L l (bs, csw) = adaptWhereBinds $2}
-                                         ; acs (\cs -> sLL alt (L l bs) (GRHSs (cs Semi.<> csw) (unLoc alt) bs)) }}
+                                         ; acs (comb2 alt (L l bs)) (\loc cs -> L loc (GRHSs (cs Semi.<> csw) (unLoc alt) bs)) }}
 
 ralt :: { forall b. DisambECP b => PV (Located [LGRHS GhcPs (LocatedA b)]) }
         : '->' exp            { unECP $2 >>= \ $2 ->
-                                acs (\cs -> sLL $1 $> (unguardedRHS (EpAnn (spanAsAnchor $ comb2 $1 $2) (GrhsAnn Nothing (mu AnnRarrow $1)) cs) (comb2 $1 $2) $2)) }
+                                acs (comb2 $1 $>) (\loc cs -> L loc (unguardedRHS (EpAnn (spanAsAnchor $ comb2 $1 $2) (GrhsAnn Nothing (mu AnnRarrow $1)) cs) (comb2 $1 $2) $2)) }
         | gdpats              { $1 >>= \gdpats ->
                                 return $ sL1 gdpats (reverse (unLoc gdpats)) }
 
@@ -3361,7 +3355,7 @@ ifgdpats :: { Located ([AddEpAnn],[LGRHS GhcPs (LHsExpr GhcPs)]) }
 gdpat   :: { forall b. DisambECP b => PV (LGRHS GhcPs (LocatedA b)) }
         : '|' guardquals '->' exp
                                    { unECP $4 >>= \ $4 ->
-                                     acsA (\cs -> sL (comb2 $1 $>) $ GRHS (EpAnn (glEE $1 $>) (GrhsAnn (Just $ glAA $1) (mu AnnRarrow $3)) cs) (unLoc $2) $4) }
+                                     acsA (comb2 $1 $>) (\loc cs -> sL loc $ GRHS (EpAnn (glEE $1 $>) (GrhsAnn (Just $ glAA $1) (mu AnnRarrow $3)) cs) (unLoc $2) $4) }
 
 -- 'pat' recognises a pattern, including one with a bang at the top
 --      e.g.  "!x" or "!(x,y)" or "C a b" etc
@@ -3392,8 +3386,8 @@ apats  :: { [LPat GhcPs] }
 
 stmtlist :: { forall b. DisambECP b => PV (LocatedL [LocatedA (Stmt GhcPs (LocatedA b))]) }
         : '{'           stmts '}'       { $2 >>= \ $2 ->
-                                          amsrl (sLL $1 $> (reverse $ snd $ unLoc $2)) (AnnList (stmtsAnchor $2) (Just $ moc $1) (Just $ mcc $3) (fromOL $ fst $ unLoc $2) []) }
-        |     vocurly   stmts close     { $2 >>= \ $2 -> amsrl
+                                          amsr (sLL $1 $> (reverse $ snd $ unLoc $2)) (AnnList (stmtsAnchor $2) (Just $ moc $1) (Just $ mcc $3) (fromOL $ fst $ unLoc $2) []) }
+        |     vocurly   stmts close     { $2 >>= \ $2 -> amsr
                                           (L (stmtsLoc $2) (reverse $ snd $ unLoc $2)) (AnnList (stmtsAnchor $2) Nothing Nothing (fromOL $ fst $ unLoc $2) []) }
 
 --      do { ;; s ; s ; ; s ;; }
@@ -3436,18 +3430,14 @@ e_stmt :: { LStmt GhcPs (LHsExpr GhcPs) }
 stmt  :: { forall b. DisambECP b => PV (LStmt GhcPs (LocatedA b)) }
         : qual                          { $1 }
         | 'rec' stmtlist                {  $2 >>= \ $2 ->
-                                           acsA (\cs -> (sLL $1 $> $ mkRecStmt
-                                                 (EpAnn (glEE $1 $>) (hsDoAnn $1 $2 AnnRec) cs)
-                                                  $2)) }
+                                           amsA' (sLL $1 $> $ mkRecStmt (hsDoAnn $1 $2 AnnRec) $2) }
 
 qual  :: { forall b. DisambECP b => PV (LStmt GhcPs (LocatedA b)) }
     : bindpat '<-' exp                   { unECP $3 >>= \ $3 ->
-                                           acsA (\cs -> sLL $1 $>
-                                            $ mkPsBindStmt (EpAnn (glEE $1 $>) [mu AnnLarrow $2] cs) $1 $3) }
+                                           amsA' (sLL $1 $> $ mkPsBindStmt [mu AnnLarrow $2] $1 $3) }
     | exp                                { unECP $1 >>= \ $1 ->
                                            return $ sL1a $1 $ mkBodyStmt $1 }
-    | 'let' binds                        { acsA (\cs -> (sLL $1 $>
-                                                $ mkLetStmt (EpAnn (glEE $1 $>) [mj AnnLet $1] cs) (unLoc $2))) }
+    | 'let' binds                        { amsA' (sLL $1 $> $ mkLetStmt [mj AnnLet $1] (unLoc $2)) }
 
 -----------------------------------------------------------------------------
 -- Record Field Update/Construction
@@ -3468,13 +3458,13 @@ fbinds1 :: { forall b. DisambECP b => PV ([Fbind b], Maybe SrcSpan) }
 
 fbind   :: { forall b. DisambECP b => PV (Fbind b) }
         : qvar '=' texp  { unECP $3 >>= \ $3 ->
-                           fmap Left $ acsA (\cs -> sLL $1 $> $ HsFieldBind (EpAnn (glR $1) [mj AnnEqual $2] cs) (sL1a $1 $ mkFieldOcc $1) $3 False) }
+                           fmap Left $ amsA' (sLL $1 $> $ HsFieldBind [mj AnnEqual $2] (sL1a $1 $ mkFieldOcc $1) $3 False) }
                         -- RHS is a 'texp', allowing view patterns (#6038)
                         -- and, incidentally, sections.  Eg
                         -- f (R { x = show -> s }) = ...
 
         | qvar          { placeHolderPunRhs >>= \rhs ->
-                          fmap Left $ acsA (\cs -> sL1 $1 $ HsFieldBind (EpAnn (glR $1) [] cs) (sL1a $1 $ mkFieldOcc $1) rhs True) }
+                          fmap Left $ amsA' (sL1 $1 $ HsFieldBind [] (sL1a $1 $ mkFieldOcc $1) rhs True) }
                         -- In the punning case, use a place-holder
                         -- The renamer fills in the final value
 
@@ -3485,7 +3475,7 @@ fbind   :: { forall b. DisambECP b => PV (Fbind b) }
                             let top = sL1a $1 $ DotFieldOcc noAnn $1
                                 ((L lf (DotFieldOcc _ f)):t) = reverse (unLoc $3)
                                 lf' = comb2 $2 (L lf ())
-                                fields = top : L (noAnnSrcSpan lf') (DotFieldOcc (EpAnn (spanAsAnchor lf') (AnnFieldLabel (Just $ glAA $2)) emptyComments) f) : t
+                                fields = top : L (noAnnSrcSpan lf') (DotFieldOcc (AnnFieldLabel (Just $ glAA $2))  f) : t
                                 final = last fields
                                 l = comb2 $1 $3
                                 isPun = False
@@ -3501,7 +3491,7 @@ fbind   :: { forall b. DisambECP b => PV (Fbind b) }
                             let top =  sL1a $1 $ DotFieldOcc noAnn $1
                                 ((L lf (DotFieldOcc _ f)):t) = reverse (unLoc $3)
                                 lf' = comb2 $2 (L lf ())
-                                fields = top : L (noAnnSrcSpan lf') (DotFieldOcc (EpAnn (spanAsAnchor lf') (AnnFieldLabel (Just $ glAA $2)) emptyComments) f) : t
+                                fields = top : L (noAnnSrcSpan lf') (DotFieldOcc (AnnFieldLabel (Just $ glAA $2)) f) : t
                                 final = last fields
                                 l = comb2 $1 $3
                                 isPun = True
@@ -3512,10 +3502,8 @@ fbind   :: { forall b. DisambECP b => PV (Fbind b) }
 fieldToUpdate :: { Located [LocatedAn NoEpAnns (DotFieldOcc GhcPs)] }
 fieldToUpdate
         -- See Note [Whitespace-sensitive operator parsing] in Lexer.x
-        : fieldToUpdate TIGHT_INFIX_PROJ field   {% getCommentsFor (getLocA $3) >>= \cs ->
-                                                     return (sLL $1 $> ((sLLa $2 $> (DotFieldOcc (EpAnn (glR $2) (AnnFieldLabel $ Just $ glAA $2) cs) $3)) : unLoc $1)) }
-        | field       {% getCommentsFor (getLocA $1) >>= \cs ->
-                        return (sL1 $1 [sL1a $1 (DotFieldOcc (EpAnn (glR $1) (AnnFieldLabel Nothing) cs) $1)]) }
+        : fieldToUpdate TIGHT_INFIX_PROJ field   { sLL $1 $> ((sLLa $2 $> (DotFieldOcc (AnnFieldLabel $ Just $ glAA $2) $3)) : unLoc $1) }
+        | field       { sL1 $1 [sL1a $1 (DotFieldOcc (AnnFieldLabel Nothing) $1)] }
 
 -----------------------------------------------------------------------------
 -- Implicit Parameter Bindings
@@ -3536,7 +3524,7 @@ dbinds  :: { Located [LIPBind GhcPs] } -- reversed
 
 dbind   :: { LIPBind GhcPs }
 dbind   : ipvar '=' exp                {% runPV (unECP $3) >>= \ $3 ->
-                                          acsA (\cs -> sLL $1 $> (IPBind (EpAnn (glEE $1 $>) [mj AnnEqual $2] cs) (reLoc $1) $3)) }
+                                          amsA' (sLL $1 $> (IPBind [mj AnnEqual $2] (reLoc $1) $3)) }
 
 ipvar   :: { Located HsIPName }
         : IPDUPVARID            { sL1 $1 (HsIPName (getIPDUPVARID $1)) }
@@ -3571,7 +3559,7 @@ name_boolformula_and_list :: { [LBooleanFormula (LocatedN RdrName)] }
                   ; return (h : $3) } }
 
 name_boolformula_atom :: { LBooleanFormula (LocatedN RdrName) }
-        : '(' name_boolformula ')'  {% amsrl (sLL $1 $> (Parens $2))
+        : '(' name_boolformula ')'  {% amsr (sLL $1 $> (Parens $2))
                                       (AnnList Nothing (Just (mop $1)) (Just (mcp $3)) [] []) }
         | name_var                  { sL1a $1 (Var $1) }
 
@@ -3599,13 +3587,13 @@ qcon :: { LocatedN RdrName }
 
 gen_qcon :: { LocatedN RdrName }
   : qconid                { $1 }
-  | '(' qconsym ')'       {% amsrn (sLL $1 $> (unLoc $2))
-                                   (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
+  | '(' qconsym ')'       {% amsr (sLL $1 $> (unLoc $2))
+                                  (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
 
 con     :: { LocatedN RdrName }
         : conid                 { $1 }
-        | '(' consym ')'        {% amsrn (sLL $1 $> (unLoc $2))
-                                         (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
+        | '(' consym ')'        {% amsr (sLL $1 $> (unLoc $2))
+                                        (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
         | sysdcon               { L (getLoc $1) $ nameRdrName (dataConName (unLoc $1)) }
 
 con_list :: { Located (NonEmpty (LocatedN RdrName)) }
@@ -3619,27 +3607,27 @@ qcon_list : qcon                  { sL1 $1 [$1] }
 
 -- See Note [ExplicitTuple] in GHC.Hs.Expr
 sysdcon_nolist :: { LocatedN DataCon }  -- Wired in data constructors
-        : '(' ')'               {% amsrn (sLL $1 $> unitDataCon) (NameAnnOnly NameParens (glAA $1) (glAA $2) []) }
-        | '(' commas ')'        {% amsrn (sLL $1 $> $ tupleDataCon Boxed (snd $2 + 1))
+        : '(' ')'               {% amsr (sLL $1 $> unitDataCon) (NameAnnOnly NameParens (glAA $1) (glAA $2) []) }
+        | '(' commas ')'        {% amsr (sLL $1 $> $ tupleDataCon Boxed (snd $2 + 1))
                                        (NameAnnCommas NameParens (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }
-        | '(#' '#)'             {% amsrn (sLL $1 $> $ unboxedUnitDataCon) (NameAnnOnly NameParensHash (glAA $1) (glAA $2) []) }
-        | '(#' commas '#)'      {% amsrn (sLL $1 $> $ tupleDataCon Unboxed (snd $2 + 1))
+        | '(#' '#)'             {% amsr (sLL $1 $> $ unboxedUnitDataCon) (NameAnnOnly NameParensHash (glAA $1) (glAA $2) []) }
+        | '(#' commas '#)'      {% amsr (sLL $1 $> $ tupleDataCon Unboxed (snd $2 + 1))
                                        (NameAnnCommas NameParensHash (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }
 
 -- See Note [Empty lists] in GHC.Hs.Expr
 sysdcon :: { LocatedN DataCon }
         : sysdcon_nolist                 { $1 }
-        | '[' ']'               {% amsrn (sLL $1 $> nilDataCon) (NameAnnOnly NameSquare (glAA $1) (glAA $2) []) }
+        | '[' ']'               {% amsr (sLL $1 $> nilDataCon) (NameAnnOnly NameSquare (glAA $1) (glAA $2) []) }
 
 conop :: { LocatedN RdrName }
         : consym                { $1 }
-        | '`' conid '`'         {% amsrn (sLL $1 $> (unLoc $2))
-                                           (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
+        | '`' conid '`'         {% amsr (sLL $1 $> (unLoc $2))
+                                          (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
 
 qconop :: { LocatedN RdrName }
         : qconsym               { $1 }
-        | '`' qconid '`'        {% amsrn (sLL $1 $> (unLoc $2))
-                                           (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
+        | '`' qconid '`'        {% amsr (sLL $1 $> (unLoc $2))
+                                          (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
 
 ----------------------------------------------------------------------------
 -- Type constructors
@@ -3649,30 +3637,30 @@ qconop :: { LocatedN RdrName }
 -- between gtycon and ntgtycon
 gtycon :: { LocatedN RdrName }  -- A "general" qualified tycon, including unit tuples
         : ntgtycon                     { $1 }
-        | '(' ')'                      {% amsrn (sLL $1 $> $ getRdrName unitTyCon)
-                                                 (NameAnnOnly NameParens (glAA $1) (glAA $2) []) }
-        | '(#' '#)'                    {% amsrn (sLL $1 $> $ getRdrName unboxedUnitTyCon)
-                                                 (NameAnnOnly NameParensHash (glAA $1) (glAA $2) []) }
+        | '(' ')'                      {% amsr (sLL $1 $> $ getRdrName unitTyCon)
+                                                (NameAnnOnly NameParens (glAA $1) (glAA $2) []) }
+        | '(#' '#)'                    {% amsr (sLL $1 $> $ getRdrName unboxedUnitTyCon)
+                                                (NameAnnOnly NameParensHash (glAA $1) (glAA $2) []) }
 
 ntgtycon :: { LocatedN RdrName }  -- A "general" qualified tycon, excluding unit tuples
         : oqtycon               { $1 }
-        | '(' commas ')'        {% amsrn (sLL $1 $> $ getRdrName (tupleTyCon Boxed
-                                                        (snd $2 + 1)))
+        | '(' commas ')'        {% amsr (sLL $1 $> $ getRdrName (tupleTyCon Boxed
+                                                       (snd $2 + 1)))
                                        (NameAnnCommas NameParens (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }
-        | '(#' commas '#)'      {% amsrn (sLL $1 $> $ getRdrName (tupleTyCon Unboxed
-                                                        (snd $2 + 1)))
+        | '(#' commas '#)'      {% amsr (sLL $1 $> $ getRdrName (tupleTyCon Unboxed
+                                                       (snd $2 + 1)))
                                        (NameAnnCommas NameParensHash (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }
-        | '(#' bars '#)'        {% amsrn (sLL $1 $> $ getRdrName (sumTyCon (snd $2 + 1)))
+        | '(#' bars '#)'        {% amsr (sLL $1 $> $ getRdrName (sumTyCon (snd $2 + 1)))
                                        (NameAnnBars NameParensHash (glAA $1) (map srcSpan2e (fst $2)) (glAA $3) []) }
-        | '(' '->' ')'          {% amsrn (sLL $1 $> $ getRdrName unrestrictedFunTyCon)
+        | '(' '->' ')'          {% amsr (sLL $1 $> $ getRdrName unrestrictedFunTyCon)
                                        (NameAnnRArrow (isUnicode $2) (Just $ glAA $1) (glAA $2) (Just $ glAA $3) []) }
-        | '[' ']'               {% amsrn (sLL $1 $> $ listTyCon_RDR)
+        | '[' ']'               {% amsr (sLL $1 $> $ listTyCon_RDR)
                                        (NameAnnOnly NameSquare (glAA $1) (glAA $2) []) }
 
 oqtycon :: { LocatedN RdrName }  -- An "ordinary" qualified tycon;
                                 -- These can appear in export lists
         : qtycon                        { $1 }
-        | '(' qtyconsym ')'             {% amsrn (sLL $1 $> (unLoc $2))
+        | '(' qtyconsym ')'             {% amsr (sLL $1 $> (unLoc $2))
                                                   (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
 
 oqtycon_no_varcon :: { LocatedN RdrName }  -- Type constructor which cannot be mistaken
@@ -3681,13 +3669,13 @@ oqtycon_no_varcon :: { LocatedN RdrName }  -- Type constructor which cannot be m
         :  qtycon            { $1 }
         | '(' QCONSYM ')'    {% let { name :: Located RdrName
                                     ; name = sL1 $2 $! mkQual tcClsName (getQCONSYM $2) }
-                                in amsrn (sLL $1 $> (unLoc name)) (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
+                                in amsr (sLL $1 $> (unLoc name)) (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
         | '(' CONSYM ')'     {% let { name :: Located RdrName
                                     ; name = sL1 $2 $! mkUnqual tcClsName (getCONSYM $2) }
-                                in amsrn (sLL $1 $> (unLoc name)) (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
+                                in amsr (sLL $1 $> (unLoc name)) (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
         | '(' ':' ')'        {% let { name :: Located RdrName
                                     ; name = sL1 $2 $! consDataCon_RDR }
-                                in amsrn (sLL $1 $> (unLoc name)) (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
+                                in amsr (sLL $1 $> (unLoc name)) (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
 
 {- Note [Type constructors in export list]
 ~~~~~~~~~~~~~~~~~~~~~
@@ -3712,8 +3700,8 @@ child.
 qtyconop :: { LocatedN RdrName } -- Qualified or unqualified
         -- See Note [%shift: qtyconop -> qtyconsym]
         : qtyconsym %shift              { $1 }
-        | '`' qtycon '`'                {% amsrn (sLL $1 $> (unLoc $2))
-                                                 (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
+        | '`' qtycon '`'                {% amsr (sLL $1 $> (unLoc $2))
+                                                (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
 
 qtycon :: { LocatedN RdrName }   -- Qualified or unqualified
         : QCONID            { sL1n $1 $! mkQual tcClsName (getQCONID $1) }
@@ -3738,8 +3726,8 @@ tyconsym :: { LocatedN RdrName }
 -- These can appear in `ANN type` declarations (#19374).
 otycon :: { LocatedN RdrName }
         : tycon                 { $1 }
-        | '(' tyconsym ')'      {% amsrn (sLL $1 $> (unLoc $2))
-                                         (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
+        | '(' tyconsym ')'      {% amsr (sLL $1 $> (unLoc $2))
+                                        (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
 
 -----------------------------------------------------------------------------
 -- Operators
@@ -3747,36 +3735,35 @@ otycon :: { LocatedN RdrName }
 op      :: { LocatedN RdrName }   -- used in infix decls
         : varop                 { $1 }
         | conop                 { $1 }
-        | '->'                  {% amsrn (sLL $1 $> $ getRdrName unrestrictedFunTyCon)
+        | '->'                  {% amsr (sLL $1 $> $ getRdrName unrestrictedFunTyCon)
                                      (NameAnnRArrow (isUnicode $1) Nothing (glAA $1) Nothing []) }
 
 varop   :: { LocatedN RdrName }
         : varsym                { $1 }
-        | '`' varid '`'         {% amsrn (sLL $1 $> (unLoc $2))
+        | '`' varid '`'         {% amsr (sLL $1 $> (unLoc $2))
                                            (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
 
 qop     :: { forall b. DisambInfixOp b => PV (LocatedN b) }   -- used in sections
         : qvarop                { mkHsVarOpPV $1 }
         | qconop                { mkHsConOpPV $1 }
-        | hole_op               { pvN $1 }
+        | hole_op               { mkHsInfixHolePV $1 }
 
 qopm    :: { forall b. DisambInfixOp b => PV (LocatedN b) }   -- used in sections
         : qvaropm               { mkHsVarOpPV $1 }
         | qconop                { mkHsConOpPV $1 }
-        | hole_op               { pvN $1 }
+        | hole_op               { mkHsInfixHolePV $1 }
 
-hole_op :: { forall b. DisambInfixOp b => PV (Located b) }   -- used in sections
-hole_op : '`' '_' '`'           { mkHsInfixHolePV (comb2 $1 $>)
-                                         (\cs -> EpAnn (glEE $1 $>) (Just $ EpAnnUnboundVar (glAA $1, glAA $3) (glAA $2)) cs) }
+hole_op :: { LocatedN (HsExpr GhcPs) }   -- used in sections
+hole_op : '`' '_' '`'           { sLLa $1 $> (hsHoleExpr (Just $ EpAnnUnboundVar (glAA $1, glAA $3) (glAA $2))) }
 
 qvarop :: { LocatedN RdrName }
         : qvarsym               { $1 }
-        | '`' qvarid '`'        {% amsrn (sLL $1 $> (unLoc $2))
+        | '`' qvarid '`'        {% amsr (sLL $1 $> (unLoc $2))
                                            (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
 
 qvaropm :: { LocatedN RdrName }
         : qvarsym_no_minus      { $1 }
-        | '`' qvarid '`'        {% amsrn (sLL $1 $> (unLoc $2))
+        | '`' qvarid '`'        {% amsr (sLL $1 $> (unLoc $2))
                                            (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
 
 -----------------------------------------------------------------------------
@@ -3786,7 +3773,7 @@ tyvar   :: { LocatedN RdrName }
 tyvar   : tyvarid               { $1 }
 
 tyvarop :: { LocatedN RdrName }
-tyvarop : '`' tyvarid '`'       {% amsrn (sLL $1 $> (unLoc $2))
+tyvarop : '`' tyvarid '`'       {% amsr (sLL $1 $> (unLoc $2))
                                            (NameAnn NameBackquotes (glAA $1) (glAA $2) (glAA $3) []) }
 
 tyvarid :: { LocatedN RdrName }
@@ -3804,14 +3791,14 @@ tyvarid :: { LocatedN RdrName }
 
 var     :: { LocatedN RdrName }
         : varid                 { $1 }
-        | '(' varsym ')'        {% amsrn (sLL $1 $> (unLoc $2))
+        | '(' varsym ')'        {% amsr (sLL $1 $> (unLoc $2))
                                    (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
 
 qvar    :: { LocatedN RdrName }
         : qvarid                { $1 }
-        | '(' varsym ')'        {% amsrn (sLL $1 $> (unLoc $2))
+        | '(' varsym ')'        {% amsr (sLL $1 $> (unLoc $2))
                                    (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
-        | '(' qvarsym1 ')'      {% amsrn (sLL $1 $> (unLoc $2))
+        | '(' qvarsym1 ')'      {% amsr (sLL $1 $> (unLoc $2))
                                    (NameAnn NameParens (glAA $1) (glAA $2) (glAA $3) []) }
 -- We've inlined qvarsym here so that the decision about
 -- whether it's a qvar or a var can be postponed until
@@ -4120,26 +4107,28 @@ stringLiteralToHsDocWst  = lexStringLiteral parseIdentifier
 
 -- Utilities for combining source spans
 comb2 :: (HasLoc a, HasLoc b) => a -> b -> SrcSpan
-comb2 a b = a `seq` b `seq` combineHasLocs a b
+comb2 !a !b = combineHasLocs a b
 
 comb3 :: (HasLoc a, HasLoc b, HasLoc c) => a -> b -> c -> SrcSpan
-comb3 a b c = a `seq` b `seq` c `seq`
-    combineSrcSpans (getHasLoc a) (combineHasLocs b c)
+comb3 !a !b !c = combineSrcSpans (getHasLoc a) (combineHasLocs b c)
 
 comb4 :: (HasLoc a, HasLoc b, HasLoc c, HasLoc d) => a -> b -> c -> d -> SrcSpan
-comb4 a b c d = a `seq` b `seq` c `seq` d `seq`
-    (combineSrcSpans (getHasLoc a) $ combineSrcSpans (getHasLoc b) $
-                combineSrcSpans (getHasLoc c) (getHasLoc d))
+comb4 !a !b !c !d =
+    combineSrcSpans (getHasLoc a) $
+    combineSrcSpans (getHasLoc b) $
+    combineSrcSpans (getHasLoc c) (getHasLoc d)
 
 comb5 :: (HasLoc a, HasLoc b, HasLoc c, HasLoc d, HasLoc e) => a -> b -> c -> d -> e -> SrcSpan
-comb5 a b c d e = a `seq` b `seq` c `seq` d `seq` e `seq`
-    (combineSrcSpans (getHasLoc a) $ combineSrcSpans (getHasLoc b) $
-       combineSrcSpans (getHasLoc c) $ combineSrcSpans (getHasLoc d) (getHasLoc e))
+comb5 !a !b !c !d !e =
+    combineSrcSpans (getHasLoc a) $
+    combineSrcSpans (getHasLoc b) $
+    combineSrcSpans (getHasLoc c) $
+    combineSrcSpans (getHasLoc d) (getHasLoc e)
 
 -- strict constructor version:
 {-# INLINE sL #-}
 sL :: l -> a -> GenLocated l a
-sL loc a = loc `seq` a `seq` L loc a
+sL !loc !a = L loc a
 
 -- See Note [Adding location info] for how these utility functions are used
 
@@ -4150,32 +4139,32 @@ sL0 = L noSrcSpan       -- #define L0   L noSrcSpan
 
 {-# INLINE sL1 #-}
 sL1 :: HasLoc a => a -> b -> Located b
-sL1 x = sL (getHasLoc x)   -- #define sL1   sL (getLoc $1)
+sL1 !x = sL (getHasLoc x)   -- #define sL1   sL (getLoc $1)
 
 {-# INLINE sL1a #-}
 sL1a :: (HasLoc a, HasAnnotation t) =>  a -> b -> GenLocated t b
-sL1a x = sL (noAnnSrcSpan $ getHasLoc x)   -- #define sL1   sL (getLoc $1)
+sL1a !x = sL (noAnnSrcSpan $ getHasLoc x)   -- #define sL1   sL (getLoc $1)
 
 {-# INLINE sL1n #-}
 sL1n :: HasLoc a => a -> b -> LocatedN b
-sL1n x = L (noAnnSrcSpan $ getHasLoc x)   -- #define sL1   sL (getLoc $1)
+sL1n !x = L (noAnnSrcSpan $ getHasLoc x)   -- #define sL1   sL (getLoc $1)
 
 {-# INLINE sLL #-}
 sLL :: (HasLoc a, HasLoc b) => a -> b -> c -> Located c
-sLL x y = sL (comb2 x y) -- #define LL   sL (comb2 $1 $>)
+sLL !x !y = sL (comb2 x y) -- #define LL   sL (comb2 $1 $>)
 
 {-# INLINE sLLa #-}
 sLLa :: (HasLoc a, HasLoc b, NoAnn t) => a -> b -> c -> LocatedAn t c
-sLLa x y = sL (noAnnSrcSpan $ comb2 x y) -- #define LL   sL (comb2 $1 $>)
+sLLa !x !y = sL (noAnnSrcSpan $ comb2 x y) -- #define LL   sL (comb2 $1 $>)
 
 {-# INLINE sLLl #-}
 sLLl :: (HasLoc a, HasLoc b) => a -> b -> c -> LocatedL c
-sLLl x y = sL (noAnnSrcSpan $ comb2 x y) -- #define LL   sL (comb2 $1 $>)
+sLLl !x !y = sL (noAnnSrcSpan $ comb2 x y) -- #define LL   sL (comb2 $1 $>)
 
 {-# INLINE sLLAsl #-}
 sLLAsl :: (HasLoc a) => [a] -> Located b -> c -> Located c
 sLLAsl [] = sL1
-sLLAsl (x:_) = sLL x
+sLLAsl (!x:_) = sLL x
 
 {- Note [Adding location info]
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -4294,35 +4283,35 @@ in GHC.Parser.Annotation
 -- |Construct an AddEpAnn from the annotation keyword and the location
 -- of the keyword itself
 mj :: AnnKeywordId -> Located e -> AddEpAnn
-mj a l = AddEpAnn a (srcSpan2e $ gl l)
+mj !a !l = AddEpAnn a (srcSpan2e $ gl l)
 
 mjN :: AnnKeywordId -> LocatedN e -> AddEpAnn
-mjN a l = AddEpAnn a (srcSpan2e $ glA l)
+mjN !a !l = AddEpAnn a (srcSpan2e $ glA l)
 
 -- |Construct an AddEpAnn from the annotation keyword and the location
 -- of the keyword itself, provided the span is not zero width
 mz :: AnnKeywordId -> Located e -> [AddEpAnn]
-mz a l = if isZeroWidthSpan (gl l) then [] else [AddEpAnn a (srcSpan2e $ gl l)]
+mz !a !l = if isZeroWidthSpan (gl l) then [] else [AddEpAnn a (srcSpan2e $ gl l)]
 
 msemi :: Located e -> [TrailingAnn]
-msemi l = if isZeroWidthSpan (gl l) then [] else [AddSemiAnn (srcSpan2e $ gl l)]
+msemi !l = if isZeroWidthSpan (gl l) then [] else [AddSemiAnn (srcSpan2e $ gl l)]
 
 msemiA :: Located e -> [AddEpAnn]
-msemiA l = if isZeroWidthSpan (gl l) then [] else [AddEpAnn AnnSemi (srcSpan2e $ gl l)]
+msemiA !l = if isZeroWidthSpan (gl l) then [] else [AddEpAnn AnnSemi (srcSpan2e $ gl l)]
 
 msemim :: Located e -> Maybe EpaLocation
-msemim l = if isZeroWidthSpan (gl l) then Nothing else Just (srcSpan2e $ gl l)
+msemim !l = if isZeroWidthSpan (gl l) then Nothing else Just (srcSpan2e $ gl l)
 
 -- |Construct an AddEpAnn from the annotation keyword and the Located Token. If
 -- the token has a unicode equivalent and this has been used, provide the
 -- unicode variant of the annotation.
 mu :: AnnKeywordId -> Located Token -> AddEpAnn
-mu a lt@(L l t) = AddEpAnn (toUnicodeAnn a lt) (srcSpan2e l)
+mu !a lt@(L l t) = AddEpAnn (toUnicodeAnn a lt) (srcSpan2e l)
 
 -- | If the 'Token' is using its unicode variant return the unicode variant of
 --   the annotation
 toUnicodeAnn :: AnnKeywordId -> Located Token -> AnnKeywordId
-toUnicodeAnn a t = if isUnicode t then unicodeAnn a else a
+toUnicodeAnn !a !t = if isUnicode t then unicodeAnn a else a
 
 toUnicode :: Located Token -> IsUnicodeSyntax
 toUnicode t = if isUnicode t then UnicodeSyntax else NormalSyntax
@@ -4335,36 +4324,26 @@ gl = getLoc
 glA :: HasLoc a => a -> SrcSpan
 glA = getHasLoc
 
-glRR :: Located a -> RealSrcSpan
-glRR = realSrcSpan . getLoc
-
 glR :: HasLoc a => a -> Anchor
-glR la = EpaSpan (getHasLoc la)
-
-glMR :: Maybe (Located a) -> Located b -> Anchor
-glMR (Just la) _ = glR la
-glMR _ la = glR la
+glR !la = EpaSpan (getHasLoc la)
 
 glEE :: (HasLoc a, HasLoc b) => a -> b -> Anchor
-glEE x y = spanAsAnchor $ comb2 x y
-
-anc :: RealSrcSpan -> Anchor
-anc r = EpaSpan (RealSrcSpan r Strict.Nothing)
+glEE !x !y = spanAsAnchor $ comb2 x y
 
 glRM :: Located a -> Maybe Anchor
-glRM (L l _) = Just $ spanAsAnchor l
+glRM (L !l _) = Just $ spanAsAnchor l
 
 glAA :: HasLoc a => a -> EpaLocation
 glAA = srcSpan2e . getHasLoc
 
 n2l :: LocatedN a -> LocatedA a
-n2l (L la a) = L (l2l la) a
+n2l (L !la !a) = L (l2l la) a
 
 -- Called at the very end to pick up the EOF position, as well as any comments not allocated yet.
 acsFinal :: (EpAnnComments -> Maybe (RealSrcSpan, RealSrcSpan) -> Located a) -> P (Located a)
 acsFinal a = do
   let (L l _) = a emptyComments Nothing
-  cs <- getCommentsFor l
+  !cs <- getCommentsFor l
   csf <- getFinalCommentsFor l
   meof <- getEofPos
   let ce = case meof of
@@ -4372,81 +4351,61 @@ acsFinal a = do
              Strict.Just (pos `Strict.And` gap) -> Just (pos,gap)
   return (a (cs Semi.<> csf) ce)
 
-acs :: (HasLoc t, MonadP m) => (EpAnnComments -> GenLocated t a) -> m (GenLocated t a)
-acs a = do
-  let (L l _) = a emptyComments
-  cs <- getCommentsFor (locA l)
-  return (a cs)
+acs :: (HasLoc l, MonadP m) => l -> (l -> EpAnnComments -> GenLocated l a) -> m (GenLocated l a)
+acs !l a = do
+  !cs <- getCommentsFor (locA l)
+  return (a l cs)
 
-acsA :: (HasLoc t, HasAnnotation t, MonadP m) => (EpAnnComments -> Located a) -> m (GenLocated t a)
-acsA a = reLoc <$> acs a
+acsA :: (HasLoc l, HasAnnotation t, MonadP m) => l -> (l -> EpAnnComments -> Located a) -> m (GenLocated t a)
+acsA !l a = do
+  !cs <- getCommentsFor (locA l)
+  return $ reLoc (a l cs)
 
-acsExpr :: (EpAnnComments -> LHsExpr GhcPs) -> P ECP
-acsExpr a = do { expr :: (LHsExpr GhcPs) <- runPV $ acs a
-               ; return (ecpFromExp $ expr) }
+ams1 :: MonadP m => Located a -> b -> m (LocatedA b)
+ams1 (L l a) b = do
+  !cs <- getCommentsFor l
+  return (L (EpAnn (spanAsAnchor l) noAnn cs) b)
+
+amsA' :: (NoAnn t, MonadP m) => Located a -> m (GenLocated (EpAnn t) a)
+amsA' (L l a) = do
+  !cs <- getCommentsFor l
+  return (L (EpAnn (spanAsAnchor l) noAnn cs) a)
 
 amsA :: MonadP m => LocatedA a -> [TrailingAnn] -> m (LocatedA a)
-amsA (L l a) bs = do
-  cs <- getCommentsFor (locA l)
+amsA (L !l a) bs = do
+  !cs <- getCommentsFor (locA l)
   return (L (addAnnsA l bs cs) a)
 
 amsAl :: MonadP m => LocatedA a -> SrcSpan -> [TrailingAnn] -> m (LocatedA a)
 amsAl (L l a) loc bs = do
-  cs <- getCommentsFor loc
+  !cs <- getCommentsFor loc
   return (L (addAnnsA l bs cs) a)
 
-amsrc :: MonadP m => Located a -> AnnContext -> m (LocatedC a)
-amsrc a@(L l _) bs = do
-  cs <- getCommentsFor l
-  return (reAnnC bs cs a)
-
-amsrl :: MonadP m => Located a -> AnnList -> m (LocatedL a)
-amsrl a@(L l _) bs = do
-  cs <- getCommentsFor l
-  return (reAnnL bs cs a)
-
-amsrp :: MonadP m => Located a -> AnnPragma -> m (LocatedP a)
-amsrp a@(L l _) bs = do
-  cs <- getCommentsFor l
-  return (reAnnL bs cs a)
-
-amsrn :: MonadP m => Located a -> NameAnn -> m (LocatedN a)
-amsrn (L l a) an = do
-  cs <- getCommentsFor l
+amsr :: MonadP m => Located a -> an -> m (LocatedAn an a)
+amsr (L l a) an = do
+  !cs <- getCommentsFor l
   return (L (EpAnn (spanAsAnchor l) an cs) a)
 
 -- |Synonyms for AddEpAnn versions of AnnOpen and AnnClose
 mo,mc :: Located Token -> AddEpAnn
-mo ll = mj AnnOpen ll
-mc ll = mj AnnClose ll
+mo !ll = mj AnnOpen ll
+mc !ll = mj AnnClose ll
 
 moc,mcc :: Located Token -> AddEpAnn
-moc ll = mj AnnOpenC ll
-mcc ll = mj AnnCloseC ll
+moc !ll = mj AnnOpenC ll
+mcc !ll = mj AnnCloseC ll
 
 mop,mcp :: Located Token -> AddEpAnn
-mop ll = mj AnnOpenP ll
-mcp ll = mj AnnCloseP ll
+mop !ll = mj AnnOpenP ll
+mcp !ll = mj AnnCloseP ll
 
 moh,mch :: Located Token -> AddEpAnn
-moh ll = mj AnnOpenPH ll
-mch ll = mj AnnClosePH ll
+moh !ll = mj AnnOpenPH ll
+mch !ll = mj AnnClosePH ll
 
 mos,mcs :: Located Token -> AddEpAnn
-mos ll = mj AnnOpenS ll
-mcs ll = mj AnnCloseS ll
-
-pvA :: (MonadP m, NoAnn t) => m (Located a) -> m (LocatedAn t a)
-pvA a = do { av <- a
-           ; return (reLoc av) }
-
-pvN :: MonadP m => m (Located a) -> m (LocatedN a)
-pvN a = do { (L l av) <- a
-           ; return (L (noAnnSrcSpan l) av) }
-
-pvL :: MonadP m => m (LocatedAn t a) -> m (Located a)
-pvL a = do { av <- a
-           ; return (reLoc av) }
+mos !ll = mj AnnOpenS ll
+mcs !ll = mj AnnCloseS ll
 
 -- | Parse a Haskell module with Haddock comments. This is done in two steps:
 --
@@ -4474,18 +4433,19 @@ parseSignature = parseSignatureNoHaddock >>= addHaddockToModule
 commentsA :: (NoAnn ann) => SrcSpan -> EpAnnComments -> EpAnn ann
 commentsA loc cs = EpAnn (EpaSpan loc) noAnn cs
 
+spanWithComments :: (NoAnn ann, MonadP m) => SrcSpan -> m (EpAnn ann)
+spanWithComments l = do
+  !cs <- getCommentsFor l
+  return (commentsA l cs)
+
 -- | Instead of getting the *enclosed* comments, this includes the
 -- *preceding* ones.  It is used at the top level to get comments
 -- between top level declarations.
 commentsPA :: (NoAnn ann) => LocatedAn ann a -> P (LocatedAn ann a)
 commentsPA la@(L l a) = do
-  cs <- getPriorCommentsFor (getLocA la)
+  !cs <- getPriorCommentsFor (getLocA la)
   return (L (addCommentsToEpAnn l cs) a)
 
-rs :: SrcSpan -> RealSrcSpan
-rs (RealSrcSpan l _) = l
-rs _ = panic "Parser should only have RealSrcSpan"
-
 hsDoAnn :: Located a -> LocatedAn t b -> AnnKeywordId -> AnnList
 hsDoAnn (L l _) (L ll _) kw
   = AnnList (Just $ spanAsAnchor (locA ll)) Nothing Nothing [AddEpAnn kw (srcSpan2e l)] []
@@ -4502,15 +4462,15 @@ listAsAnchorM (L l _:_) =
     _                -> Nothing
 
 epTok :: Located Token -> EpToken tok
-epTok (L l _) = EpTok (EpaSpan l)
+epTok (L !l _) = EpTok (EpaSpan l)
 
 epUniTok :: Located Token -> EpUniToken tok utok
-epUniTok t@(L l _) = EpUniTok (EpaSpan l) u
+epUniTok t@(L !l _) = EpUniTok (EpaSpan l) u
   where
     u = if isUnicode t then UnicodeSyntax else NormalSyntax
 
 epExplicitBraces :: Located Token -> Located Token -> EpLayout
-epExplicitBraces t1 t2 = EpExplicitBraces (epTok t1) (epTok t2)
+epExplicitBraces !t1 !t2 = EpExplicitBraces (epTok t1) (epTok t2)
 
 -- -------------------------------------
 
@@ -4547,7 +4507,7 @@ addTrailingCommaL  la span = addTrailingAnnL la (AddCommaAnn (srcSpan2e span))
 
 addTrailingAnnL :: MonadP m => LocatedL a -> TrailingAnn -> m (LocatedL a)
 addTrailingAnnL (L anns a) ta = do
-  cs <- getCommentsFor (locA anns)
+  !cs <- getCommentsFor (locA anns)
   let anns' = addTrailingAnnToL ta cs anns
   return (L anns' a)
 
diff --git a/compiler/GHC/Parser/Annotation.hs b/compiler/GHC/Parser/Annotation.hs
index 3a8a1b364af2..c28f86999136 100644
--- a/compiler/GHC/Parser/Annotation.hs
+++ b/compiler/GHC/Parser/Annotation.hs
@@ -1087,8 +1087,11 @@ instance (HasLoc a) => (HasLoc (Maybe a)) where
   getHasLoc Nothing = noSrcSpan
 
 instance HasLoc (EpAnn a) where
-  getHasLoc (EpAnn (EpaSpan l) _ _) = l
-  getHasLoc (EpAnn (EpaDelta _ _) _ _) = noSrcSpan
+  getHasLoc (EpAnn l _ _) = getHasLoc l
+
+instance HasLoc EpaLocation where
+  getHasLoc (EpaSpan l) = l
+  getHasLoc (EpaDelta _ _) = noSrcSpan
 
 getHasLocList :: HasLoc a => [a] -> SrcSpan
 getHasLocList [] = noSrcSpan
@@ -1187,8 +1190,8 @@ widenLocatedAn (EpAnn anc a cs) _as = EpAnn anc a cs
 epAnnAnns :: EpAnn [AddEpAnn] -> [AddEpAnn]
 epAnnAnns (EpAnn _ anns _) = anns
 
-annParen2AddEpAnn :: EpAnn AnnParen -> [AddEpAnn]
-annParen2AddEpAnn (EpAnn _ (AnnParen pt o c) _)
+annParen2AddEpAnn :: AnnParen -> [AddEpAnn]
+annParen2AddEpAnn (AnnParen pt o c)
   = [AddEpAnn ai o, AddEpAnn ac c]
   where
     (ai,ac) = parenTypeKws pt
diff --git a/compiler/GHC/Parser/PostProcess.hs b/compiler/GHC/Parser/PostProcess.hs
index 7cab30d90591..5725fd13bcca 100644
--- a/compiler/GHC/Parser/PostProcess.hs
+++ b/compiler/GHC/Parser/PostProcess.hs
@@ -105,6 +105,7 @@ module GHC.Parser.PostProcess (
         ecpFromExp,
         ecpFromCmd,
         PatBuilder,
+        hsHoleExpr,
 
         -- Type/datacon ambiguity resolution
         DisambTD(..),
@@ -197,8 +198,7 @@ mkClassDecl loc' (L _ (mcxt, tycl_hdr)) fds where_cls layout annsIn
        ; (binds, sigs, ats, at_defs, _, docs) <- cvBindsAndSigs where_cls
        ; (cls, tparams, fixity, ann) <- checkTyClHdr True tycl_hdr
        ; tyvars <- checkTyVars (text "class") whereDots cls tparams
-       ; cs <- getCommentsFor (locA loc) -- Get any remaining comments
-       ; let anns' = addAnns (EpAnn (spanAsAnchor $ locA loc) annsIn emptyComments) ann cs
+       ; let anns' = annsIn Semi.<> ann
        ; return (L loc (ClassDecl { tcdCExt = (anns', layout, NoAnnSortKey)
                                   , tcdCtxt = mcxt
                                   , tcdLName = cls, tcdTyVars = tyvars
@@ -224,8 +224,7 @@ mkTyData loc' is_type_data new_or_data cType (L _ (mcxt, tycl_hdr))
   = do { let loc = noAnnSrcSpan loc'
        ; (tc, tparams, fixity, ann) <- checkTyClHdr False tycl_hdr
        ; tyvars <- checkTyVars (ppr new_or_data) equalsDots tc tparams
-       ; cs <- getCommentsFor (locA loc) -- Get any remaining comments
-       ; let anns' = addAnns (EpAnn (spanAsAnchor $ locA loc) annsIn emptyComments) ann cs
+       ; let anns' = annsIn Semi.<> ann
        ; data_cons <- checkNewOrData (locA loc) (unLoc tc) is_type_data new_or_data data_cons
        ; defn <- mkDataDefn cType mcxt ksig data_cons maybe_deriv
        ; return (L loc (DataDecl { tcdDExt = anns',
@@ -255,10 +254,8 @@ mkTySynonym :: SrcSpan
             -> P (LTyClDecl GhcPs)
 mkTySynonym loc lhs rhs annsIn
   = do { (tc, tparams, fixity, ann) <- checkTyClHdr False lhs
-       ; cs1 <- getCommentsFor loc -- Add any API Annotations to the top SrcSpan [temp]
        ; tyvars <- checkTyVars (text "type") equalsDots tc tparams
-       ; cs2 <- getCommentsFor loc -- Add any API Annotations to the top SrcSpan [temp]
-       ; let anns' = addAnns (EpAnn (spanAsAnchor loc) annsIn emptyComments) ann (cs1 Semi.<> cs2)
+       ; let anns' = annsIn Semi.<> ann
        ; return (L (noAnnSrcSpan loc) (SynDecl
                                 { tcdSExt = anns'
                                 , tcdLName = tc, tcdTyVars = tyvars
@@ -274,9 +271,8 @@ mkStandaloneKindSig
 mkStandaloneKindSig loc lhs rhs anns =
   do { vs <- mapM check_lhs_name (unLoc lhs)
      ; v <- check_singular_lhs (reverse vs)
-     ; cs <- getCommentsFor loc
      ; return $ L (noAnnSrcSpan loc)
-       $ StandaloneKindSig (EpAnn (spanAsAnchor loc) anns cs) v rhs }
+       $ StandaloneKindSig anns v rhs }
   where
     check_lhs_name v@(unLoc->name) =
       if isUnqual name && isTcOcc (rdrNameOcc name)
@@ -298,9 +294,8 @@ mkTyFamInstEqn :: SrcSpan
                -> P (LTyFamInstEqn GhcPs)
 mkTyFamInstEqn loc bndrs lhs rhs anns
   = do { (tc, tparams, fixity, ann) <- checkTyClHdr False lhs
-       ; cs <- getCommentsFor loc
        ; return (L (noAnnSrcSpan loc) $ FamEqn
-                        { feqn_ext    = EpAnn (spanAsAnchor loc) (anns `mappend` ann) cs
+                        { feqn_ext    = anns `mappend` ann
                         , feqn_tycon  = tc
                         , feqn_bndrs  = bndrs
                         , feqn_pats   = tparams
@@ -320,12 +315,10 @@ mkDataFamInst :: SrcSpan
 mkDataFamInst loc new_or_data cType (mcxt, bndrs, tycl_hdr)
               ksig data_cons (L _ maybe_deriv) anns
   = do { (tc, tparams, fixity, ann) <- checkTyClHdr False tycl_hdr
-       ; cs <- getCommentsFor loc -- Add any API Annotations to the top SrcSpan
-       ; let fam_eqn_ans = addAnns (EpAnn (spanAsAnchor loc) ann cs) anns emptyComments
        ; data_cons <- checkNewOrData loc (unLoc tc) False new_or_data data_cons
        ; defn <- mkDataDefn cType mcxt ksig data_cons maybe_deriv
        ; return (L (noAnnSrcSpan loc) (DataFamInstD noExtField (DataFamInstDecl
-                  (FamEqn { feqn_ext    = fam_eqn_ans
+                  (FamEqn { feqn_ext    = ann Semi.<> anns
                           , feqn_tycon  = tc
                           , feqn_bndrs  = bndrs
                           , feqn_pats   = tparams
@@ -353,9 +346,8 @@ mkTyFamInst :: SrcSpan
             -> [AddEpAnn]
             -> P (LInstDecl GhcPs)
 mkTyFamInst loc eqn anns = do
-  cs <- getCommentsFor loc
   return (L (noAnnSrcSpan loc) (TyFamInstD noExtField
-              (TyFamInstDecl (EpAnn (spanAsAnchor loc) anns cs) eqn)))
+              (TyFamInstDecl anns eqn)))
 
 mkFamDecl :: SrcSpan
           -> FamilyInfo GhcPs
@@ -367,13 +359,10 @@ mkFamDecl :: SrcSpan
           -> P (LTyClDecl GhcPs)
 mkFamDecl loc info topLevel lhs ksig injAnn annsIn
   = do { (tc, tparams, fixity, ann) <- checkTyClHdr False lhs
-       ; cs1 <- getCommentsFor loc -- Add any API Annotations to the top SrcSpan [temp]
        ; tyvars <- checkTyVars (ppr info) equals_or_where tc tparams
-       ; cs2 <- getCommentsFor loc -- Add any API Annotations to the top SrcSpan [temp]
-       ; let anns' = addAnns (EpAnn (spanAsAnchor loc) annsIn emptyComments) ann (cs1 Semi.<> cs2)
        ; return (L (noAnnSrcSpan loc) (FamDecl noExtField
                                          (FamilyDecl
-                                           { fdExt       = anns'
+                                           { fdExt       = annsIn Semi.<> ann
                                            , fdTopLevel  = topLevel
                                            , fdInfo      = info, fdLName = tc
                                            , fdTyVars    = tyvars
@@ -398,7 +387,7 @@ mkSpliceDecl :: LHsExpr GhcPs -> P (LHsDecl GhcPs)
 -- as spliced declaration.  See #10945
 mkSpliceDecl lexpr@(L loc expr)
   | HsUntypedSplice _ splice@(HsUntypedSpliceExpr {}) <- expr = do
-    cs <- getCommentsFor (locA loc)
+    !cs <- getCommentsFor (locA loc)
     return $ L (addCommentsToEpAnn loc cs) $ SpliceD noExtField (SpliceDecl noExtField (L loc splice) DollarSplice)
 
   | HsUntypedSplice _ splice@(HsQuasiQuote {}) <- expr = do
@@ -406,7 +395,7 @@ mkSpliceDecl lexpr@(L loc expr)
     return $ L (addCommentsToEpAnn loc cs) $ SpliceD noExtField (SpliceDecl noExtField (L loc splice) DollarSplice)
 
   | otherwise = do
-    cs <- getCommentsFor (locA loc)
+    !cs <- getCommentsFor (locA loc)
     return $ L (addCommentsToEpAnn loc cs) $ SpliceD noExtField (SpliceDecl noExtField
                                  (L loc (HsUntypedSpliceExpr noAnn lexpr))
                                        BareSplice)
@@ -418,9 +407,9 @@ mkRoleAnnotDecl :: SrcSpan
                 -> P (LRoleAnnotDecl GhcPs)
 mkRoleAnnotDecl loc tycon roles anns
   = do { roles' <- mapM parse_role roles
-       ; cs <- getCommentsFor loc
-       ; return $ L (noAnnSrcSpan loc)
-         $ RoleAnnotDecl (EpAnn (spanAsAnchor loc) anns cs) tycon roles' }
+       ; !cs <- getCommentsFor loc
+       ; return $ L (EpAnn (spanAsAnchor loc) noAnn cs)
+         $ RoleAnnotDecl anns tycon roles' }
   where
     role_data_type = dataTypeOf (undefined :: Role)
     all_roles = map fromConstr $ dataTypeConstrs role_data_type
@@ -778,7 +767,7 @@ recordPatSynErr loc pat =
     addFatalError $ mkPlainErrorMsgEnvelope loc $
       (PsErrRecordSyntaxInPatSynDecl pat)
 
-mkConDeclH98 :: EpAnn [AddEpAnn] -> LocatedN RdrName -> Maybe [LHsTyVarBndr Specificity GhcPs]
+mkConDeclH98 :: [AddEpAnn] -> LocatedN RdrName -> Maybe [LHsTyVarBndr Specificity GhcPs]
                 -> Maybe (LHsContext GhcPs) -> HsConDeclH98Details GhcPs
                 -> ConDecl GhcPs
 
@@ -804,33 +793,30 @@ mkGadtDecl :: SrcSpan
            -> LHsSigType GhcPs
            -> P (LConDecl GhcPs)
 mkGadtDecl loc names dcol ty = do
-  cs <- getCommentsFor loc
-  let l = noAnnSrcSpan loc
 
   (args, res_ty, annsa, csa) <-
     case body_ty of
-     L ll (HsFunTy af hsArr (L _loc' (HsRecTy an rf)) res_ty) -> do
-       let an' = addCommentsToEpAnn an (comments af)
+     L ll (HsFunTy _ hsArr (L (EpAnn anc _ cs) (HsRecTy an rf)) res_ty) -> do
        arr <- case hsArr of
          HsUnrestrictedArrow arr -> return arr
          _ -> do addError $ mkPlainErrorMsgEnvelope (getLocA body_ty) $
                                  (PsErrIllegalGadtRecordMultiplicity hsArr)
                  return noAnn
 
-       return ( RecConGADT arr (L an' rf), res_ty
+       return ( RecConGADT arr (L (EpAnn anc an cs) rf), res_ty
               , [], epAnnComments ll)
      _ -> do
        let (anns, cs, arg_types, res_type) = splitHsFunType body_ty
        return (PrefixConGADT noExtField arg_types, res_type, anns, cs)
 
-  let an = EpAnn (spanAsAnchor loc) annsa (cs Semi.<> csa)
-
   let bndrs_loc = case outer_bndrs of
         HsOuterImplicit{} -> getLoc ty
         HsOuterExplicit an _ -> EpAnn (entry an) noAnn emptyComments
 
+  let l = EpAnn (spanAsAnchor loc) noAnn csa
+
   pure $ L l ConDeclGADT
-                     { con_g_ext  = (dcol, an)
+                     { con_g_ext  = (dcol, annsa)
                      , con_names  = names
                      , con_bndrs  = L bndrs_loc outer_bndrs
                      , con_mb_cxt = mcxt
@@ -939,39 +925,37 @@ checkTyVars pp_what equals_or_where tc tparms
   = do { tvs <- mapM check tparms
        ; return (mkHsQTvs tvs) }
   where
-    check (HsTypeArg at ki) = chkParens [] [] emptyComments (HsBndrInvisible at) ki
-    check (HsValArg _ ty) = chkParens [] [] emptyComments (HsBndrRequired noExtField) ty
+    check (HsTypeArg at ki) = chkParens [] [] (HsBndrInvisible at) ki
+    check (HsValArg _ ty) = chkParens [] [] (HsBndrRequired noExtField) ty
     check (HsArgPar sp) = addFatalError $ mkPlainErrorMsgEnvelope sp $
                             (PsErrMalformedDecl pp_what (unLoc tc))
         -- Keep around an action for adjusting the annotations of extra parens
-    chkParens :: [AddEpAnn] -> [AddEpAnn] -> EpAnnComments -> HsBndrVis GhcPs -> LHsType GhcPs
+    chkParens :: [AddEpAnn] -> [AddEpAnn] -> HsBndrVis GhcPs -> LHsType GhcPs
               -> P (LHsTyVarBndr (HsBndrVis GhcPs) GhcPs)
-    chkParens ops cps cs bvis (L l (HsParTy an ty))
+    chkParens ops cps bvis (L l (HsParTy _ ty))
       = let
           (o,c) = mkParensEpAnn (realSrcSpan $ locA l)
         in
-          chkParens (o:ops) (c:cps) (cs Semi.<> epAnnComments an) bvis ty
-    chkParens ops cps cs bvis ty = chk ops cps cs bvis ty
+          chkParens (o:ops) (c:cps) bvis ty
+    chkParens ops cps bvis ty = chk ops cps bvis ty
 
         -- Check that the name space is correct!
-    chk :: [AddEpAnn] -> [AddEpAnn] -> EpAnnComments -> HsBndrVis GhcPs -> LHsType GhcPs -> P (LHsTyVarBndr (HsBndrVis GhcPs) GhcPs)
-    chk ops cps cs bvis (L l (HsKindSig annk (L annt (HsTyVar ann _ (L lv tv))) k))
+    chk :: [AddEpAnn] -> [AddEpAnn] -> HsBndrVis GhcPs -> LHsType GhcPs -> P (LHsTyVarBndr (HsBndrVis GhcPs) GhcPs)
+    chk ops cps bvis (L l (HsKindSig annk (L annt (HsTyVar ann _ (L lv tv))) k))
         | isRdrTyVar tv
             = let
                 an = (reverse ops) ++ cps
               in
                 return (L (widenLocatedAn (l Semi.<> annt) (for_widening bvis:an))
-                       (KindedTyVar (addAnns (annk Semi.<> ann Semi.<> for_widening_ann bvis) an cs)
-                                    bvis (L lv tv) k))
-    chk ops cps cs bvis (L l (HsTyVar ann _ (L ltv tv)))
+                       (KindedTyVar (an ++ annk ++ ann) bvis (L lv tv) k))
+    chk ops cps bvis (L l (HsTyVar ann _ (L ltv tv)))
         | isRdrTyVar tv
             = let
                 an = (reverse ops) ++ cps
               in
                 return (L (widenLocatedAn l (for_widening bvis:an))
-                                     (UserTyVar (addAnns (ann Semi.<> for_widening_ann bvis) an cs)
-                                                bvis (L ltv tv)))
-    chk _ _ _ _ t@(L loc _)
+                                     (UserTyVar (an ++ ann) bvis (L ltv tv)))
+    chk _ _ _ t@(L loc _)
         = addFatalError $ mkPlainErrorMsgEnvelope (locA loc) $
             (PsErrUnexpectedTypeInDecl t pp_what (unLoc tc) tparms equals_or_where)
 
@@ -980,11 +964,6 @@ checkTyVars pp_what equals_or_where tc tparms
     for_widening (HsBndrInvisible (EpTok loc)) = AddEpAnn AnnAnyclass loc
     for_widening  _                            = AddEpAnn AnnAnyclass (EpaDelta (SameLine 0) [])
 
-    for_widening_ann :: HsBndrVis GhcPs -> EpAnn [AddEpAnn]
-    for_widening_ann (HsBndrInvisible (EpTok (EpaSpan (RealSrcSpan r _mb))))
-      = EpAnn (realSpanAsAnchor r) [] emptyComments
-    for_widening_ann  _ = noAnn
-
 
 whereDots, equalsDots :: SDoc
 -- Second argument to checkTyVars
@@ -999,7 +978,7 @@ checkDatatypeContext (Just c)
                                        (PsErrIllegalDataTypeContext c)
 
 type LRuleTyTmVar = LocatedAn NoEpAnns RuleTyTmVar
-data RuleTyTmVar = RuleTyTmVar (EpAnn [AddEpAnn]) (LocatedN RdrName) (Maybe (LHsType GhcPs))
+data RuleTyTmVar = RuleTyTmVar [AddEpAnn] (LocatedN RdrName) (Maybe (LHsType GhcPs))
 -- ^ Essentially a wrapper for a @RuleBndr GhcPs@
 
 -- turns RuleTyTmVars into RuleBnrs - this is straightforward
@@ -1065,10 +1044,10 @@ checkTyClHdr is_cls ty
     goL (L l ty) acc ops cps fix = go (locA l) ty acc ops cps fix
 
     -- workaround to define '*' despite StarIsType
-    go _ (HsParTy an (L l (HsStarTy _ isUni))) acc ops' cps' fix
+    go ll (HsParTy an (L l (HsStarTy _ isUni))) acc ops' cps' fix
       = do { addPsMessage (locA l) PsWarnStarBinder
            ; let name = mkOccNameFS tcClsName (starSym isUni)
-           ; let a' = newAnns l an
+           ; let a' = newAnns ll l an
            ; return (L a' (Unqual name), acc, fix
                     , (reverse ops') ++ cps') }
 
@@ -1097,12 +1076,12 @@ checkTyClHdr is_cls ty
 
     -- Combine the annotations from the HsParTy and HsStarTy into a
     -- new one for the LocatedN RdrName
-    newAnns :: SrcSpanAnnA -> EpAnn AnnParen -> SrcSpanAnnN
-    newAnns (EpAnn ap (AnnListItem ta) csp) (EpAnn as (AnnParen _ o c) cs) =
+    newAnns :: SrcSpan -> SrcSpanAnnA -> AnnParen -> SrcSpanAnnN
+    newAnns l (EpAnn ap (AnnListItem ta) csp) (AnnParen _ o c) =
       let
-        lr = RealSrcSpan (combineRealSrcSpans (anchor ap) (anchor as)) Strict.Nothing
+        lr = combineSrcSpans (RealSrcSpan (anchor ap) Strict.Nothing) l
       in
-        EpAnn (EpaSpan lr) (NameAnn NameParens o ap c ta) (csp Semi.<> cs)
+        EpAnn (EpaSpan lr) (NameAnn NameParens o ap c ta) csp
 
 -- | Yield a parse error if we have a function applied directly to a do block
 -- etc. and BlockArguments is not enabled.
@@ -1154,19 +1133,13 @@ checkContext orig_t@(L (EpAnn l _ _) _orig_t) =
     -- (Eq a, Ord b) shows up as a tuple type. Only boxed tuples can
     -- be used as context constraints.
     -- Ditto ()
-    = do
-        let (op,cp,cs') = case ann' of
-              EpAnn _ (AnnParen _ o c) cs -> ([o],[c],cs)
-        return (L (EpAnn l
-                          -- Append parens so that the original order in the source is maintained
-                           (AnnContext Nothing (oparens ++ op) (cp ++ cparens)) (cs Semi.<> cs')) ts)
+    = return (L (EpAnn l
+                  -- Append parens so that the original order in the source is maintained
+                  (AnnContext Nothing (oparens ++ [ap_open ann']) (ap_close ann':cparens)) cs) ts)
 
   check (opi,cpi,csi) (L _lp1 (HsParTy ann' ty))
                                   -- to be sure HsParTy doesn't get into the way
-    = do
-        let (op,cp,cs') = case ann' of
-                    EpAnn _ (AnnParen _ open close ) cs -> ([open],[close],cs)
-        check (op++opi,cp++cpi,cs' Semi.<> csi) ty
+    = check (ap_open ann':opi, ap_close ann':cpi, csi) ty
 
   -- No need for anns, returning original
   check (_opi,_cpi,_csi) _t =
@@ -1254,10 +1227,10 @@ checkAPat loc e0 = do
            (L _ (PatBuilderVar (L nloc n)))
            (L l plus)
            (L lloc (PatBuilderOverLit lit@(OverLit {ol_val = HsIntegral {}})))
-           (EpAnn anc _ cs)
+           _
                      | nPlusKPatterns && (plus == plus_RDR)
                      -> return (mkNPlusKPat (L nloc n) (L (l2l lloc) lit)
-                                (EpAnn anc (entry l) cs))
+                                (entry l))
 
    -- Improve error messages for the @-operator when the user meant an @-pattern
    PatBuilderOpApp _ op _ _ | opIsAt (unLoc op) -> do
@@ -1345,9 +1318,8 @@ checkFunBind :: SrcStrictness
 checkFunBind strictness locF ann fun is_infix pats (L _ grhss)
   = do  ps <- runPV_details extraDetails (mapM checkLPat pats)
         let match_span = noAnnSrcSpan $ locF
-        cs <- getCommentsFor locF
         return (makeFunBind fun (L (noAnnSrcSpan $ locA match_span)
-                 [L match_span (Match { m_ext = EpAnn (spanAsAnchor locF) ann cs
+                 [L match_span (Match { m_ext = ann
                                       , m_ctxt = FunRhs
                                           { mc_fun    = fun
                                           , mc_fixity = is_infix
@@ -1376,10 +1348,10 @@ checkPatBind :: SrcSpan
              -> Located (GRHSs GhcPs (LHsExpr GhcPs))
              -> HsMultAnn GhcPs
              -> P (HsBind GhcPs)
-checkPatBind loc annsIn (L _ (BangPat (EpAnn _ ans cs) (L _ (VarPat _ v))))
+checkPatBind loc annsIn (L _ (BangPat ans (L _ (VarPat _ v))))
                         (L _match_span grhss) (HsNoMultAnn _)
       = return (makeFunBind v (L (noAnnSrcSpan loc)
-                [L (noAnnSrcSpan loc) (m (EpAnn (spanAsAnchor loc) (ans++annsIn) cs) v)]))
+                [L (noAnnSrcSpan loc) (m (ans++annsIn) v)]))
   where
     m a v = Match { m_ext = a
                   , m_ctxt = FunRhs { mc_fun    = v
@@ -1388,9 +1360,8 @@ checkPatBind loc annsIn (L _ (BangPat (EpAnn _ ans cs) (L _ (VarPat _ v))))
                   , m_pats = []
                  , m_grhss = grhss }
 
-checkPatBind loc annsIn lhs (L _ grhss) mult = do
-  cs <- getCommentsFor loc
-  return (PatBind (EpAnn (spanAsAnchor loc) annsIn cs) lhs mult grhss)
+checkPatBind _loc annsIn lhs (L _ grhss) mult = do
+  return (PatBind annsIn lhs mult grhss)
 
 
 checkValSigLhs :: LHsExpr GhcPs -> P (LocatedN RdrName)
@@ -1432,7 +1403,7 @@ isFunLhs e = go e [] [] []
                                           (o,c) = mkParensEpAnn (realSrcSpan $ locA l)
                                         in
                                           go e es (o:ops) (c:cps)
-   go (L loc (PatBuilderOpApp l (L loc' op) r (EpAnn loca anns cs))) es ops cps
+   go (L loc (PatBuilderOpApp l (L loc' op) r anns)) es ops cps
         | not (isRdrDataCon op)         -- We have found the function!
         = return (Just (L loc' op, Infix, (l:r:es), (anns ++ reverse ops ++ cps)))
         | otherwise                     -- Infix data con; keep going
@@ -1442,11 +1413,11 @@ isFunLhs e = go e [] [] []
                    -> return (Just (op', Infix, j : op_app : es', anns'))
                    where
                      op_app = L loc (PatBuilderOpApp k
-                               (L loc' op) r (EpAnn loca (reverse ops++cps) cs))
+                               (L loc' op) r (reverse ops++cps))
                  _ -> return Nothing }
    go _ _ _ _ = return Nothing
 
-mkBangTy :: EpAnn [AddEpAnn] -> SrcStrictness -> LHsType GhcPs -> HsType GhcPs
+mkBangTy :: [AddEpAnn] -> SrcStrictness -> LHsType GhcPs -> HsType GhcPs
 mkBangTy anns strictness =
   HsBangTy anns (HsSrcBang NoSourceText NoSrcUnpack strictness)
 
@@ -1458,9 +1429,7 @@ data UnpackednessPragma =
 addUnpackednessP :: MonadP m => Located UnpackednessPragma -> LHsType GhcPs -> m (LHsType GhcPs)
 addUnpackednessP (L lprag (UnpackednessPragma anns prag unpk)) ty = do
     let l' = combineSrcSpans lprag (getLocA ty)
-    cs <- getCommentsFor l'
-    let an = EpAnn (spanAsAnchor l') anns cs
-        t' = addUnpackedness an ty
+    let t' = addUnpackedness anns ty
     return (L (noAnnSrcSpan l') t')
   where
     -- If we have a HsBangTy that only has a strictness annotation,
@@ -1469,7 +1438,7 @@ addUnpackednessP (L lprag (UnpackednessPragma anns prag unpk)) ty = do
     -- Otherwise, wrap the type in a new HsBangTy constructor.
     addUnpackedness an (L _ (HsBangTy x bang t))
       | HsSrcBang NoSourceText NoSrcUnpack strictness <- bang
-      = HsBangTy (addAnns an (epAnnAnns x) (epAnnComments x)) (HsSrcBang prag unpk strictness) t
+      = HsBangTy (an Semi.<> x) (HsSrcBang prag unpk strictness) t
     addUnpackedness an t
       = HsBangTy an (HsSrcBang prag unpk NoSrcStrict) t
 
@@ -1521,22 +1490,20 @@ type Fbind b = Either (LHsRecField GhcPs (LocatedA b)) (LHsRecProj GhcPs (Locate
 class DisambInfixOp b where
   mkHsVarOpPV :: LocatedN RdrName -> PV (LocatedN b)
   mkHsConOpPV :: LocatedN RdrName -> PV (LocatedN b)
-  mkHsInfixHolePV :: SrcSpan -> (EpAnnComments -> EpAnn (Maybe EpAnnUnboundVar)) -> PV (Located b)
+  mkHsInfixHolePV :: LocatedN (HsExpr GhcPs) -> PV (LocatedN b)
 
 instance DisambInfixOp (HsExpr GhcPs) where
   mkHsVarOpPV v = return $ L (getLoc v) (HsVar noExtField v)
   mkHsConOpPV v = return $ L (getLoc v) (HsVar noExtField v)
-  mkHsInfixHolePV l ann = do
-    cs <- getCommentsFor l
-    return $ L l (hsHoleExpr (ann cs))
+  mkHsInfixHolePV h = return h
 
 instance DisambInfixOp RdrName where
   mkHsConOpPV (L l v) = return $ L l v
   mkHsVarOpPV (L l v) = return $ L l v
-  mkHsInfixHolePV l _ = addFatalError $ mkPlainErrorMsgEnvelope l $ PsErrInvalidInfixHole
+  mkHsInfixHolePV (L l _) = addFatalError $ mkPlainErrorMsgEnvelope (getHasLoc l) $ PsErrInvalidInfixHole
 
 type AnnoBody b
-  = ( Anno (GRHS GhcPs (LocatedA (Body b GhcPs))) ~ EpAnn NoEpAnns
+  = ( Anno (GRHS GhcPs (LocatedA (Body b GhcPs))) ~ EpAnnCO
     , Anno [LocatedA (Match GhcPs (LocatedA (Body b GhcPs)))] ~ SrcSpanAnnL
     , Anno (Match GhcPs (LocatedA (Body b GhcPs))) ~ SrcSpanAnnA
     , Anno (StmtLR GhcPs GhcPs (LocatedA (Body (Body b GhcPs) GhcPs))) ~ SrcSpanAnnA
@@ -1610,18 +1577,18 @@ class (b ~ (Body b) GhcPs, AnnoBody b) => DisambECP b where
   -- | Disambiguate a variable "f" or a data constructor "MkF".
   mkHsVarPV :: LocatedN RdrName -> PV (LocatedA b)
   -- | Disambiguate a monomorphic literal
-  mkHsLitPV :: Located (HsLit GhcPs) -> PV (Located b)
+  mkHsLitPV :: Located (HsLit GhcPs) -> PV (LocatedA b)
   -- | Disambiguate an overloaded literal
   mkHsOverLitPV :: LocatedAn a (HsOverLit GhcPs) -> PV (LocatedAn a b)
   -- | Disambiguate a wildcard
-  mkHsWildCardPV :: SrcSpan -> PV (Located b)
+  mkHsWildCardPV :: (NoAnn a) => SrcSpan -> PV (LocatedAn a b)
   -- | Disambiguate "a :: t" (type annotation)
   mkHsTySigPV
     :: SrcSpanAnnA -> LocatedA b -> LHsType GhcPs -> [AddEpAnn] -> PV (LocatedA b)
   -- | Disambiguate "[a,b,c]" (list syntax)
   mkHsExplicitListPV :: SrcSpan -> [LocatedA b] -> AnnList -> PV (LocatedA b)
   -- | Disambiguate "$(...)" and "[quasi|...|]" (TH splices)
-  mkHsSplicePV :: Located (HsUntypedSplice GhcPs) -> PV (Located b)
+  mkHsSplicePV :: Located (HsUntypedSplice GhcPs) -> PV (LocatedA b)
   -- | Disambiguate "f { a = b, ... }" syntax (record construction and record updates)
   mkHsRecordPV ::
     Bool -> -- Is OverloadedRecordUpdate in effect?
@@ -1635,7 +1602,7 @@ class (b ~ (Body b) GhcPs, AnnoBody b) => DisambECP b where
   mkHsNegAppPV :: SrcSpan -> LocatedA b -> [AddEpAnn] -> PV (LocatedA b)
   -- | Disambiguate "(# a)" (right operator section)
   mkHsSectionR_PV
-    :: SrcSpan -> LocatedA (InfixOp b) -> LocatedA b -> PV (Located b)
+    :: SrcSpan -> LocatedA (InfixOp b) -> LocatedA b -> PV (LocatedA b)
   -- | Disambiguate "(a -> b)" (view pattern)
   mkHsViewPatPV
     :: SrcSpan -> LHsExpr GhcPs -> LocatedA b -> [AddEpAnn] -> PV (LocatedA b)
@@ -1705,12 +1672,12 @@ instance DisambECP (HsCmd GhcPs) where
   mkHsProjUpdatePV l _ _ _ _ = addFatalError $ mkPlainErrorMsgEnvelope l $
                                                  PsErrOverloadedRecordDotInvalid
   mkHsLamPV l lam_variant (L lm m) anns = do
-    cs <- getCommentsFor l
+    !cs <- getCommentsFor l
     let mg = mkLamCaseMatchGroup FromSource lam_variant (L lm m)
-    return $ L (noAnnSrcSpan l) (HsCmdLam (EpAnn (spanAsAnchor l) anns cs) lam_variant mg)
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsCmdLam anns lam_variant mg)
 
   mkHsLetPV l tkLet bs tkIn e = do
-    cs <- getCommentsFor l
+    !cs <- getCommentsFor l
     return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsCmdLet (tkLet, tkIn) bs e)
 
   type InfixOp (HsCmd GhcPs) = HsExpr GhcPs
@@ -1719,32 +1686,31 @@ instance DisambECP (HsCmd GhcPs) where
 
   mkHsOpAppPV l c1 op c2 = do
     let cmdArg c = L (l2l $ getLoc c) $ HsCmdTop noExtField c
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) $ HsCmdArrForm (EpAnn (spanAsAnchor l) (AnnList Nothing Nothing Nothing [] []) cs) (reLoc op) Infix Nothing [cmdArg c1, cmdArg c2]
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) $ HsCmdArrForm (AnnList Nothing Nothing Nothing [] []) (reLoc op) Infix Nothing [cmdArg c1, cmdArg c2]
 
   mkHsCasePV l c (L lm m) anns = do
-    cs <- getCommentsFor l
+    !cs <- getCommentsFor l
     let mg = mkMatchGroup FromSource (L lm m)
-    return $ L (noAnnSrcSpan l) (HsCmdCase (EpAnn (spanAsAnchor l) anns cs) c mg)
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsCmdCase anns c mg)
 
   type FunArg (HsCmd GhcPs) = HsExpr GhcPs
   superFunArg m = m
   mkHsAppPV l c e = do
-    cs <- getCommentsFor (locA l)
     checkCmdBlockArguments c
     checkExpBlockArguments e
-    return $ L l (HsCmdApp (comment (realSrcSpan $ locA l) cs) c e)
+    return $ L l (HsCmdApp noExtField c e)
   mkHsAppTypePV l c _ t = cmdFail (locA l) (ppr c <+> text "@" <> ppr t)
   mkHsIfPV l c semi1 a semi2 b anns = do
     checkDoAndIfThenElse PsErrSemiColonsInCondCmd c semi1 a semi2 b
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) (mkHsCmdIf c a b (EpAnn (spanAsAnchor l) anns cs))
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (mkHsCmdIf c a b anns)
   mkHsDoPV l Nothing stmts anns = do
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) (HsCmdDo (EpAnn (spanAsAnchor l) anns cs) stmts)
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsCmdDo anns stmts)
   mkHsDoPV l (Just m)    _ _ = addFatalError $ mkPlainErrorMsgEnvelope l $ PsErrQualifiedDoInCmd m
   mkHsParPV l lpar c rpar = do
-    cs <- getCommentsFor l
+    !cs <- getCommentsFor l
     return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsCmdPar (lpar, rpar) c)
   mkHsVarPV (L l v) = cmdFail (locA l) (ppr v)
   mkHsLitPV (L l a) = cmdFail l (ppr a)
@@ -1791,72 +1757,73 @@ instance DisambECP (HsExpr GhcPs) where
     return (L l (hsHoleExpr noAnn))
   ecpFromExp' = return
   mkHsProjUpdatePV l fields arg isPun anns = do
-    cs <- getCommentsFor l
-    return $ mkRdrProjUpdate (noAnnSrcSpan l) fields arg isPun (EpAnn (spanAsAnchor l) anns cs)
+    !cs <- getCommentsFor l
+    return $ mkRdrProjUpdate (EpAnn (spanAsAnchor l) noAnn cs) fields arg isPun anns
   mkHsLetPV l tkLet bs tkIn c = do
-    cs <- getCommentsFor l
+    !cs <- getCommentsFor l
     return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsLet (tkLet, tkIn) bs c)
   type InfixOp (HsExpr GhcPs) = HsExpr GhcPs
   superInfixOp m = m
   mkHsOpAppPV l e1 op e2 = do
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) $ OpApp (EpAnn (spanAsAnchor l) [] cs) e1 (reLoc op) e2
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) $ OpApp [] e1 (reLoc op) e2
   mkHsCasePV l e (L lm m) anns = do
-    cs <- getCommentsFor l
+    !cs <- getCommentsFor l
     let mg = mkMatchGroup FromSource (L lm m)
-    return $ L (noAnnSrcSpan l) (HsCase (EpAnn (spanAsAnchor l) anns cs) e mg)
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsCase anns e mg)
   mkHsLamPV l lam_variant (L lm m) anns = do
-    cs <- getCommentsFor l
+    !cs <- getCommentsFor l
     let mg = mkLamCaseMatchGroup FromSource lam_variant (L lm m)
     checkLamMatchGroup l lam_variant mg
-    return $ L (noAnnSrcSpan l) (HsLam (EpAnn (spanAsAnchor l) anns cs) lam_variant mg)
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsLam anns lam_variant mg)
   type FunArg (HsExpr GhcPs) = HsExpr GhcPs
   superFunArg m = m
   mkHsAppPV l e1 e2 = do
-    cs <- getCommentsFor (locA l)
     checkExpBlockArguments e1
     checkExpBlockArguments e2
-    return $ L l (HsApp (comment (realSrcSpan $ locA l) cs) e1 e2)
+    return $ L l (HsApp noExtField e1 e2)
   mkHsAppTypePV l e at t = do
     checkExpBlockArguments e
     return $ L l (HsAppType at e (mkHsWildCardBndrs t))
   mkHsIfPV l c semi1 a semi2 b anns = do
     checkDoAndIfThenElse PsErrSemiColonsInCondExpr c semi1 a semi2 b
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) (mkHsIf c a b (EpAnn (spanAsAnchor l) anns cs))
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (mkHsIf c a b anns)
   mkHsDoPV l mod stmts anns = do
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) (HsDo (EpAnn (spanAsAnchor l) anns cs) (DoExpr mod) stmts)
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsDo anns (DoExpr mod) stmts)
   mkHsParPV l lpar e rpar = do
-    cs <- getCommentsFor l
+    !cs <- getCommentsFor l
     return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsPar (lpar, rpar) e)
-  mkHsVarPV v@(L l _) = return $ L (l2l l) (HsVar noExtField v)
+  mkHsVarPV v@(L l@(EpAnn anc _ _) _) = do
+    !cs <- getCommentsFor (getHasLoc l)
+    return $ L (EpAnn anc noAnn cs) (HsVar noExtField v)
   mkHsLitPV (L l a) = do
-    cs <- getCommentsFor l
-    return $ L l (HsLit (comment (realSrcSpan l) cs) a)
-  mkHsOverLitPV (L l a) = do
-    cs <- getCommentsFor (locA l)
-    return $ L l (HsOverLit (comment (realSrcSpan (locA l)) cs) a)
-  mkHsWildCardPV l = return $ L l (hsHoleExpr noAnn)
-  mkHsTySigPV l a sig anns = do
-    cs <- getCommentsFor (locA l)
-    return $ L l (ExprWithTySig (EpAnn (spanAsAnchor $ locA l) anns cs) a (hsTypeToHsSigWcType sig))
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (HsLit noExtField a)
+  mkHsOverLitPV (L (EpAnn l an csIn) a) = do
+    !cs <- getCommentsFor (locA l)
+    return $ L (EpAnn  l an (cs Semi.<> csIn)) (HsOverLit NoExtField a)
+  mkHsWildCardPV l = return $ L (noAnnSrcSpan l) (hsHoleExpr noAnn)
+  mkHsTySigPV l@(EpAnn anc an csIn) a sig anns = do
+    !cs <- getCommentsFor (locA l)
+    return $ L (EpAnn anc an (csIn Semi.<> cs)) (ExprWithTySig anns a (hsTypeToHsSigWcType sig))
   mkHsExplicitListPV l xs anns = do
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) (ExplicitList (EpAnn (spanAsAnchor l) anns cs) xs)
-  mkHsSplicePV sp@(L l _) = do
-    cs <- getCommentsFor l
-    return $ fmap (HsUntypedSplice (EpAnn (spanAsAnchor l) NoEpAnns cs)) sp
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (ExplicitList anns xs)
+  mkHsSplicePV (L l a) = do
+    !cs <- getCommentsFor l
+    return $ fmap (HsUntypedSplice NoExtField) (L (EpAnn (spanAsAnchor l) noAnn cs) a)
   mkHsRecordPV opts l lrec a (fbinds, ddLoc) anns = do
-    cs <- getCommentsFor l
-    r <- mkRecConstrOrUpdate opts a lrec (fbinds, ddLoc) (EpAnn (spanAsAnchor l) anns cs)
-    checkRecordSyntax (L (noAnnSrcSpan l) r)
+    !cs <- getCommentsFor l
+    r <- mkRecConstrOrUpdate opts a lrec (fbinds, ddLoc) anns
+    checkRecordSyntax (L (EpAnn (spanAsAnchor l) noAnn cs) r)
   mkHsNegAppPV l a anns = do
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) (NegApp (EpAnn (spanAsAnchor l) anns cs) a noSyntaxExpr)
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (NegApp anns a noSyntaxExpr)
   mkHsSectionR_PV l op e = do
-    cs <- getCommentsFor l
-    return $ L l (SectionR (comment (realSrcSpan l) cs) op e)
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (SectionR noExtField op e)
   mkHsViewPatPV l a b _ = addError (mkPlainErrorMsgEnvelope l $ PsErrViewPatInExpr a b)
                           >> return (L (noAnnSrcSpan l) (hsHoleExpr noAnn))
   mkHsAsPatPV l v _ e   = addError (mkPlainErrorMsgEnvelope l $ PsErrTypeAppWithoutSpace (unLoc v) e)
@@ -1876,7 +1843,7 @@ instance DisambECP (HsExpr GhcPs) where
                                                          (PsErrUnallowedPragma prag)
   rejectPragmaPV _                        = return ()
 
-hsHoleExpr :: EpAnn (Maybe EpAnnUnboundVar) -> HsExpr GhcPs
+hsHoleExpr :: Maybe EpAnnUnboundVar -> HsExpr GhcPs
 hsHoleExpr anns = HsUnboundVar anns (mkRdrUnqual (mkVarOccFS (fsLit "_")))
 
 instance DisambECP (PatBuilder GhcPs) where
@@ -1888,9 +1855,8 @@ instance DisambECP (PatBuilder GhcPs) where
   type InfixOp (PatBuilder GhcPs) = RdrName
   superInfixOp m = m
   mkHsOpAppPV l p1 op p2 = do
-    cs <- getCommentsFor l
-    let anns = EpAnn (spanAsAnchor l) [] cs
-    return $ L (noAnnSrcSpan l) $ PatBuilderOpApp p1 op p2 anns
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) $ PatBuilderOpApp p1 op p2 []
 
   mkHsLamPV l lam_variant _ _     = addFatalError $ mkPlainErrorMsgEnvelope l (PsErrLambdaInPat lam_variant)
 
@@ -1899,7 +1865,7 @@ instance DisambECP (PatBuilder GhcPs) where
   superFunArg m = m
   mkHsAppPV l p1 p2      = return $ L l (PatBuilderApp p1 p2)
   mkHsAppTypePV l p at t = do
-    cs <- getCommentsFor (locA l)
+    !cs <- getCommentsFor (locA l)
     let anns = EpAnn (spanAsAnchor (getLocA t)) NoEpAnns cs
     return $ L l (PatBuilderAppType p at (mkHsTyPat anns t))
   mkHsIfPV l _ _ _ _ _ _ = addFatalError $ mkPlainErrorMsgEnvelope l PsErrIfThenElseInPat
@@ -1908,52 +1874,53 @@ instance DisambECP (PatBuilder GhcPs) where
   mkHsVarPV v@(getLoc -> l) = return $ L (l2l l) (PatBuilderVar v)
   mkHsLitPV lit@(L l a) = do
     checkUnboxedLitPat lit
-    return $ L l (PatBuilderPat (LitPat noExtField a))
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (PatBuilderPat (LitPat noExtField a))
   mkHsOverLitPV (L l a) = return $ L l (PatBuilderOverLit a)
-  mkHsWildCardPV l = return $ L l (PatBuilderPat (WildPat noExtField))
+  mkHsWildCardPV l = return $ L (noAnnSrcSpan l) (PatBuilderPat (WildPat noExtField))
   mkHsTySigPV l b sig anns = do
     p <- checkLPat b
-    cs <- getCommentsFor (locA l)
-    return $ L l (PatBuilderPat (SigPat (EpAnn (spanAsAnchor $ locA l) anns cs) p (mkHsPatSigType noAnn sig)))
+    return $ L l (PatBuilderPat (SigPat anns p (mkHsPatSigType noAnn sig)))
   mkHsExplicitListPV l xs anns = do
     ps <- traverse checkLPat xs
-    cs <- getCommentsFor l
-    return (L (noAnnSrcSpan l) (PatBuilderPat (ListPat (EpAnn (spanAsAnchor l) anns cs) ps)))
-  mkHsSplicePV (L l sp) = return $ L l (PatBuilderPat (SplicePat noExtField sp))
+    !cs <- getCommentsFor l
+    return (L (EpAnn (spanAsAnchor l) noAnn cs) (PatBuilderPat (ListPat anns ps)))
+  mkHsSplicePV (L l sp) = do
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (PatBuilderPat (SplicePat noExtField sp))
   mkHsRecordPV _ l _ a (fbinds, ddLoc) anns = do
     let (fs, ps) = partitionEithers fbinds
     if not (null ps)
      then addFatalError $ mkPlainErrorMsgEnvelope l PsErrOverloadedRecordDotInvalid
      else do
-       cs <- getCommentsFor l
-       r <- mkPatRec a (mk_rec_fields fs ddLoc) (EpAnn (spanAsAnchor l) anns cs)
-       checkRecordSyntax (L (noAnnSrcSpan l) r)
+       !cs <- getCommentsFor l
+       r <- mkPatRec a (mk_rec_fields fs ddLoc) anns
+       checkRecordSyntax (L (EpAnn (spanAsAnchor l) noAnn cs) r)
   mkHsNegAppPV l (L lp p) anns = do
     lit <- case p of
       PatBuilderOverLit pos_lit -> return (L (l2l lp) pos_lit)
       _ -> patFail l $ PsErrInPat p PEIP_NegApp
-    cs <- getCommentsFor l
-    let an = EpAnn (spanAsAnchor l) anns cs
-    return $ L (noAnnSrcSpan l) (PatBuilderPat (mkNPat lit (Just noSyntaxExpr) an))
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (PatBuilderPat (mkNPat lit (Just noSyntaxExpr) anns))
   mkHsSectionR_PV l op p = patFail l (PsErrParseRightOpSectionInPat (unLoc op) (unLoc p))
   mkHsViewPatPV l a b anns = do
     p <- checkLPat b
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) (PatBuilderPat (ViewPat (EpAnn (spanAsAnchor l) anns cs) a p))
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (PatBuilderPat (ViewPat anns a p))
   mkHsAsPatPV l v at e = do
     p <- checkLPat e
-    cs <- getCommentsFor l
+    !cs <- getCommentsFor l
     return $ L (EpAnn (spanAsAnchor l) noAnn cs) (PatBuilderPat (AsPat at v p))
   mkHsLazyPatPV l e a = do
     p <- checkLPat e
-    cs <- getCommentsFor l
-    return $ L (noAnnSrcSpan l) (PatBuilderPat (LazyPat (EpAnn (spanAsAnchor l) a cs) p))
+    !cs <- getCommentsFor l
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (PatBuilderPat (LazyPat a p))
   mkHsBangPatPV l e an = do
     p <- checkLPat e
-    cs <- getCommentsFor l
-    let pb = BangPat (EpAnn (spanAsAnchor l) an cs) p
+    !cs <- getCommentsFor l
+    let pb = BangPat an p
     hintBangPat l pb
-    return $ L (noAnnSrcSpan l) (PatBuilderPat pb)
+    return $ L (EpAnn (spanAsAnchor l) noAnn cs) (PatBuilderPat pb)
   mkSumOrTuplePV = mkSumOrTuplePat
   mkHsEmbTyPV l toktype ty =
     return $ L (noAnnSrcSpan l) $
@@ -1989,7 +1956,7 @@ checkUnboxedLitPat (L loc lit) =
 mkPatRec ::
   LocatedA (PatBuilder GhcPs) ->
   HsRecFields GhcPs (LocatedA (PatBuilder GhcPs)) ->
-  EpAnn [AddEpAnn] ->
+  [AddEpAnn] ->
   PV (PatBuilder GhcPs)
 mkPatRec (unLoc -> PatBuilderVar c) (HsRecFields fs dd) anns
   | isRdrDataCon (unLoc c)
@@ -2040,8 +2007,8 @@ dataConBuilderDetails :: DataConBuilder -> HsConDeclH98Details GhcPs
 -- Detect when the record syntax is used:
 --   data T = MkT { ... }
 dataConBuilderDetails (PrefixDataConBuilder flds _)
-  | [L _ (HsRecTy an fields)] <- toList flds
-  = RecCon (L an fields)
+  | [L (EpAnn anc _ cs) (HsRecTy an fields)] <- toList flds
+  = RecCon (L (EpAnn anc an cs) fields)
 
 -- Normal prefix constructor, e.g.  data T = MkT A B C
 dataConBuilderDetails (PrefixDataConBuilder flds _)
@@ -2567,7 +2534,7 @@ mkRecConstrOrUpdate
         -> LHsExpr GhcPs
         -> SrcSpan
         -> ([Fbind (HsExpr GhcPs)], Maybe SrcSpan)
-        -> EpAnn [AddEpAnn]
+        -> [AddEpAnn]
         -> PV (HsExpr GhcPs)
 mkRecConstrOrUpdate _ (L _ (HsVar _ (L l c))) _lrec (fbinds,dd) anns
   | isRdrDataCon c
@@ -2582,7 +2549,7 @@ mkRecConstrOrUpdate overloaded_update exp _ (fs,dd) anns
                                           PsErrDotsInRecordUpdate
   | otherwise = mkRdrRecordUpd overloaded_update exp fs anns
 
-mkRdrRecordUpd :: Bool -> LHsExpr GhcPs -> [Fbind (HsExpr GhcPs)] -> EpAnn [AddEpAnn] -> PV (HsExpr GhcPs)
+mkRdrRecordUpd :: Bool -> LHsExpr GhcPs -> [Fbind (HsExpr GhcPs)] -> [AddEpAnn] -> PV (HsExpr GhcPs)
 mkRdrRecordUpd overloaded_on exp@(L loc _) fbinds anns = do
   -- We do not need to know if OverloadedRecordDot is in effect. We do
   -- however need to know if OverloadedRecordUpdate (passed in
@@ -2643,7 +2610,7 @@ mkRdrRecordUpd overloaded_on exp@(L loc _) fbinds anns = do
           punnedVar f  = if not pun then arg else noLocA . HsVar noExtField . noLocA . mkRdrUnqual . mkVarOccFS $ f
 
 mkRdrRecordCon
-  :: LocatedN RdrName -> HsRecordBinds GhcPs -> EpAnn [AddEpAnn] -> HsExpr GhcPs
+  :: LocatedN RdrName -> HsRecordBinds GhcPs -> [AddEpAnn] -> HsExpr GhcPs
 mkRdrRecordCon con flds anns
   = RecordCon { rcon_ext = anns, rcon_con = con, rcon_flds = flds }
 
@@ -2718,7 +2685,7 @@ checkNewOrData span name is_type_data = curry $ \ case
 mkImport :: Located CCallConv
          -> Located Safety
          -> (Located StringLiteral, LocatedN RdrName, LHsSigType GhcPs)
-         -> P (EpAnn [AddEpAnn] -> HsDecl GhcPs)
+         -> P ([AddEpAnn] -> HsDecl GhcPs)
 mkImport cconv safety (L loc (StringLiteral esrc entity _), v, ty) =
     case unLoc cconv of
       CCallConv          -> returnSpec =<< mkCImport
@@ -2828,7 +2795,7 @@ parseCImport cconv safety nm str sourceText =
 --
 mkExport :: Located CCallConv
          -> (Located StringLiteral, LocatedN RdrName, LHsSigType GhcPs)
-         -> P (EpAnn [AddEpAnn] -> HsDecl GhcPs)
+         -> P ([AddEpAnn] -> HsDecl GhcPs)
 mkExport (L lc cconv) (L le (StringLiteral esrc entity _), v, ty)
  = return $ \ann -> ForD noExtField $
    ForeignExport { fd_e_ext = ann, fd_name = v, fd_sig_ty = ty
@@ -2861,17 +2828,15 @@ data ImpExpQcSpec = ImpExpQcName (LocatedN RdrName)
 mkModuleImpExp :: Maybe (LWarningTxt GhcPs) -> [AddEpAnn] -> LocatedA ImpExpQcSpec
                -> ImpExpSubSpec -> P (IE GhcPs)
 mkModuleImpExp warning anns (L l specname) subs = do
-  cs <- getCommentsFor (locA l) -- AZ: IEVar can discard comments
-  let ann = EpAnn (spanAsAnchor $ maybe (locA l) getLocA warning) anns cs
   case subs of
     ImpExpAbs
       | isVarNameSpace (rdrNameSpace name)
                        -> return $ IEVar warning
                            (L l (ieNameFromSpec specname))
-      | otherwise      -> IEThingAbs (warning, ann) . L l <$> nameT
-    ImpExpAll          -> IEThingAll (warning, ann) . L l <$> nameT
+      | otherwise      -> IEThingAbs (warning, anns) . L l <$> nameT
+    ImpExpAll          -> IEThingAll (warning, anns) . L l <$> nameT
     ImpExpList xs      ->
-      (\newName -> IEThingWith (warning, ann) (L l newName)
+      (\newName -> IEThingWith (warning, anns) (L l newName)
         NoIEWildcard (wrapped xs)) <$> nameT
     ImpExpAllWith xs                       ->
       do allowed <- getBit PatternSynonymsBit
@@ -2883,7 +2848,7 @@ mkModuleImpExp warning anns (L l specname) subs = do
                 ies :: [LocatedA (IEWrappedName GhcPs)]
                 ies   = wrapped $ filter (not . isImpExpQcWildcard . unLoc) xs
             in (\newName
-                        -> IEThingWith (warning, ann) (L l newName) pos ies)
+                        -> IEThingWith (warning, anns) (L l newName) pos ies)
                <$> nameT
           else addFatalError $ mkPlainErrorMsgEnvelope (locA l) $
                  PsErrIllegalPatSynExport
@@ -3135,9 +3100,9 @@ mkSumOrTupleExpr :: SrcSpanAnnA -> Boxity -> SumOrTuple (HsExpr GhcPs)
                  -> PV (LHsExpr GhcPs)
 
 -- Tuple
-mkSumOrTupleExpr l boxity (Tuple es) anns = do
-    cs <- getCommentsFor (locA l)
-    return $ L l (ExplicitTuple (EpAnn (spanAsAnchor $ locA l) anns cs) (map toTupArg es) boxity)
+mkSumOrTupleExpr l@(EpAnn anc an csIn) boxity (Tuple es) anns = do
+    !cs <- getCommentsFor (locA l)
+    return $ L (EpAnn anc an (csIn Semi.<> cs)) (ExplicitTuple anns (map toTupArg es) boxity)
   where
     toTupArg :: Either (EpAnn Bool) (LHsExpr GhcPs) -> HsTupArg GhcPs
     toTupArg (Left ann) = missingTupArg ann
@@ -3146,13 +3111,13 @@ mkSumOrTupleExpr l boxity (Tuple es) anns = do
 -- Sum
 -- mkSumOrTupleExpr l Unboxed (Sum alt arity e) =
 --     return $ L l (ExplicitSum noExtField alt arity e)
-mkSumOrTupleExpr l Unboxed (Sum alt arity e barsp barsa) anns = do
+mkSumOrTupleExpr l@(EpAnn anc anIn csIn) Unboxed (Sum alt arity e barsp barsa) anns = do
     let an = case anns of
                [AddEpAnn AnnOpenPH o, AddEpAnn AnnClosePH c] ->
                  AnnExplicitSum o barsp barsa c
                _ -> panic "mkSumOrTupleExpr"
-    cs <- getCommentsFor (locA l)
-    return $ L l (ExplicitSum (EpAnn (spanAsAnchor $ locA l) an cs) alt arity e)
+    !cs <- getCommentsFor (locA l)
+    return $ L (EpAnn anc anIn (csIn Semi.<> cs)) (ExplicitSum an alt arity e)
 mkSumOrTupleExpr l Boxed a@Sum{} _ =
     addFatalError $ mkPlainErrorMsgEnvelope (locA l) $ PsErrUnsupportedBoxedSumExpr a
 
@@ -3163,8 +3128,7 @@ mkSumOrTuplePat
 -- Tuple
 mkSumOrTuplePat l boxity (Tuple ps) anns = do
   ps' <- traverse toTupPat ps
-  cs <- getCommentsFor (locA l)
-  return $ L l (PatBuilderPat (TuplePat (EpAnn (spanAsAnchor $ locA l) anns cs) ps' boxity))
+  return $ L l (PatBuilderPat (TuplePat anns ps' boxity))
   where
     toTupPat :: Either (EpAnn Bool) (LocatedA (PatBuilder GhcPs)) -> PV (LPat GhcPs)
     -- Ignore the element location so that the error message refers to the
@@ -3177,8 +3141,7 @@ mkSumOrTuplePat l boxity (Tuple ps) anns = do
 -- Sum
 mkSumOrTuplePat l Unboxed (Sum alt arity p barsb barsa) anns = do
    p' <- checkLPat p
-   cs <- getCommentsFor (locA l)
-   let an = EpAnn (spanAsAnchor $ locA l) (EpAnnSumPat anns barsb barsa) cs
+   let an = EpAnnSumPat anns barsb barsa
    return $ L l (PatBuilderPat (SumPat an p' alt arity))
 mkSumOrTuplePat l Boxed a@Sum{} _ =
     addFatalError $
@@ -3233,15 +3196,15 @@ starSym False = fsLit "*"
 -- Bits and pieces for RecordDotSyntax.
 
 mkRdrGetField :: LHsExpr GhcPs -> LocatedAn NoEpAnns (DotFieldOcc GhcPs)
-  -> EpAnnCO -> HsExpr GhcPs
-mkRdrGetField arg field anns =
+  -> HsExpr GhcPs
+mkRdrGetField arg field =
   HsGetField {
-      gf_ext = anns
+      gf_ext = NoExtField
     , gf_expr = arg
     , gf_field = field
     }
 
-mkRdrProjection :: NonEmpty (LocatedAn NoEpAnns (DotFieldOcc GhcPs)) -> EpAnn AnnProjection -> HsExpr GhcPs
+mkRdrProjection :: NonEmpty (LocatedAn NoEpAnns (DotFieldOcc GhcPs)) -> AnnProjection -> HsExpr GhcPs
 mkRdrProjection flds anns =
   HsProjection {
       proj_ext = anns
@@ -3249,7 +3212,7 @@ mkRdrProjection flds anns =
     }
 
 mkRdrProjUpdate :: SrcSpanAnnA -> Located [LocatedAn NoEpAnns (DotFieldOcc GhcPs)]
-                -> LHsExpr GhcPs -> Bool -> EpAnn [AddEpAnn]
+                -> LHsExpr GhcPs -> Bool -> [AddEpAnn]
                 -> LHsRecProj GhcPs (LHsExpr GhcPs)
 mkRdrProjUpdate _ (L _ []) _ _ _ = panic "mkRdrProjUpdate: The impossible has happened!"
 mkRdrProjUpdate loc (L l flds) arg isPun anns =
diff --git a/compiler/GHC/Parser/Types.hs b/compiler/GHC/Parser/Types.hs
index 110c5e982d6f..b09132a48bf3 100644
--- a/compiler/GHC/Parser/Types.hs
+++ b/compiler/GHC/Parser/Types.hs
@@ -57,12 +57,12 @@ data PatBuilder p
   | PatBuilderApp (LocatedA (PatBuilder p)) (LocatedA (PatBuilder p))
   | PatBuilderAppType (LocatedA (PatBuilder p)) (EpToken "@") (HsTyPat GhcPs)
   | PatBuilderOpApp (LocatedA (PatBuilder p)) (LocatedN RdrName)
-                    (LocatedA (PatBuilder p)) (EpAnn [AddEpAnn])
+                    (LocatedA (PatBuilder p)) [AddEpAnn]
   | PatBuilderVar (LocatedN RdrName)
   | PatBuilderOverLit (HsOverLit GhcPs)
 
 -- These instances are here so that they are not orphans
-type instance Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs)))             = EpAnn NoEpAnns
+type instance Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs)))             = EpAnnCO
 type instance Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnL
 type instance Anno (Match GhcPs (LocatedA (PatBuilder GhcPs)))            = SrcSpanAnnA
 type instance Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))     = SrcSpanAnnA
diff --git a/compiler/GHC/Rename/Bind.hs b/compiler/GHC/Rename/Bind.hs
index 51839e3a4395..a47b5a06b330 100644
--- a/compiler/GHC/Rename/Bind.hs
+++ b/compiler/GHC/Rename/Bind.hs
@@ -1248,8 +1248,8 @@ type AnnoBody body
     , Anno [LocatedA (Match GhcPs (LocatedA (body GhcPs)))] ~ SrcSpanAnnL
     , Anno (Match GhcRn (LocatedA (body GhcRn))) ~ SrcSpanAnnA
     , Anno (Match GhcPs (LocatedA (body GhcPs))) ~ SrcSpanAnnA
-    , Anno (GRHS GhcRn (LocatedA (body GhcRn))) ~ EpAnn NoEpAnns
-    , Anno (GRHS GhcPs (LocatedA (body GhcPs))) ~ EpAnn NoEpAnns
+    , Anno (GRHS GhcRn (LocatedA (body GhcRn))) ~ EpAnnCO
+    , Anno (GRHS GhcPs (LocatedA (body GhcPs))) ~ EpAnnCO
     , Outputable (body GhcPs)
     )
 
diff --git a/compiler/GHC/Rename/Expr.hs b/compiler/GHC/Rename/Expr.hs
index 4f95d37354e2..3cb07c394c18 100644
--- a/compiler/GHC/Rename/Expr.hs
+++ b/compiler/GHC/Rename/Expr.hs
@@ -359,7 +359,7 @@ rnExpr (HsUnboundVar _ v)
 -- HsOverLabel: see Note [Handling overloaded and rebindable constructs]
 rnExpr (HsOverLabel _ src v)
   = do { (from_label, fvs) <- lookupSyntaxName fromLabelClassOpName
-       ; return ( mkExpandedExpr (HsOverLabel noAnn src v) $
+       ; return ( mkExpandedExpr (HsOverLabel noExtField src v) $
                   HsAppType noExtField (genLHsVar from_label) hs_ty_arg
                 , fvs ) }
   where
@@ -383,7 +383,7 @@ rnExpr (HsOverLit x lit)
        ; case mb_neg of
               Nothing -> return (HsOverLit x lit', fvs)
               Just neg ->
-                 return (HsApp noComments (noLocA neg) (noLocA (HsOverLit x lit'))
+                 return (HsApp noExtField (noLocA neg) (noLocA (HsOverLit x lit'))
                         , fvs ) }
 
 rnExpr (HsApp x fun arg)
@@ -688,9 +688,9 @@ rnSection section@(SectionL x expr op)
                         -- Note [Left and right sections]
         ; let rn_section = SectionL x expr' op'
               ds_section
-                | postfix_ops = HsApp noAnn op' expr'
+                | postfix_ops = HsApp noExtField op' expr'
                 | otherwise   = genHsApps leftSectionName
-                                   [wrapGenSpan $ HsApp noAnn op' expr']
+                                   [wrapGenSpan $ HsApp noExtField op' expr']
         ; return ( mkExpandedExpr rn_section ds_section
                  , fvs_op `plusFV` fvs_expr) }
 
@@ -2235,7 +2235,7 @@ stmtTreeToStmts monad_names ctxt (StmtTreeApplicative trees) tail tail_fvs = do
              -- Need 'pureAName' and not 'returnMName' here, so that it requires
              -- 'Applicative' and not 'Monad' whenever possible (until #20540 is fixed).
              (ret, _) <- lookupQualifiedDoExpr (HsDoStmt ctxt) pureAName
-             let expr = HsApp noComments (noLocA ret) tup
+             let expr = HsApp noExtField (noLocA ret) tup
              return (expr, emptyFVs)
      return ( ApplicativeArgMany
               { xarg_app_arg_many = noExtField
diff --git a/compiler/GHC/Rename/Splice.hs b/compiler/GHC/Rename/Splice.hs
index 58160a5543c2..2f36448f226b 100644
--- a/compiler/GHC/Rename/Splice.hs
+++ b/compiler/GHC/Rename/Splice.hs
@@ -419,15 +419,15 @@ mkQuasiQuoteExpr :: UntypedSpliceFlavour -> Name
 -- Return the expression (quoter "...quote...")
 -- which is what we must run in a quasi-quote
 mkQuasiQuoteExpr flavour quoter (L q_span' quote)
-  = L q_span $ HsApp noComments (L q_span
-             $ HsApp noComments (L q_span
+  = L q_span $ HsApp noExtField (L q_span
+             $ HsApp noExtField (L q_span
                     (HsVar noExtField (L (l2l q_span) quote_selector)))
                                 quoterExpr)
                     quoteExpr
   where
     q_span = noAnnSrcSpan (locA q_span')
     quoterExpr = L q_span $! HsVar noExtField $! (L (l2l q_span) quoter)
-    quoteExpr  = L q_span $! HsLit noComments $! HsString NoSourceText quote
+    quoteExpr  = L q_span $! HsLit noExtField $! HsString NoSourceText quote
     quote_selector = case flavour of
                        UntypedExpSplice  -> quoteExpName
                        UntypedPatSplice  -> quotePatName
diff --git a/compiler/GHC/Rename/Utils.hs b/compiler/GHC/Rename/Utils.hs
index 88807e5821c1..1c827a06d625 100644
--- a/compiler/GHC/Rename/Utils.hs
+++ b/compiler/GHC/Rename/Utils.hs
@@ -727,7 +727,7 @@ genHsExpApps :: HsExpr GhcRn -> [LHsExpr GhcRn] -> HsExpr GhcRn
 genHsExpApps fun arg = foldl genHsApp fun arg
 
 genHsApp :: HsExpr GhcRn -> LHsExpr GhcRn -> HsExpr GhcRn
-genHsApp fun arg = HsApp noAnn (wrapGenSpan fun) arg
+genHsApp fun arg = HsApp noExtField (wrapGenSpan fun) arg
 
 genLHsApp :: HsExpr GhcRn -> LHsExpr GhcRn -> LHsExpr GhcRn
 genLHsApp fun arg = wrapGenSpan (genHsApp fun arg)
@@ -742,7 +742,7 @@ genAppType :: HsExpr GhcRn -> HsType (NoGhcTc GhcRn) -> HsExpr GhcRn
 genAppType expr ty = HsAppType noExtField (wrapGenSpan expr) (mkEmptyWildCardBndrs (wrapGenSpan ty))
 
 genLHsLit :: (NoAnn an) => HsLit GhcRn -> LocatedAn an (HsExpr GhcRn)
-genLHsLit = wrapGenSpan . HsLit noAnn
+genLHsLit = wrapGenSpan . HsLit noExtField
 
 genHsIntegralLit :: (NoAnn an) => IntegralLit -> LocatedAn an (HsExpr GhcRn)
 genHsIntegralLit = genLHsLit . HsInt noExtField
diff --git a/compiler/GHC/Tc/Deriv/Generate.hs b/compiler/GHC/Tc/Deriv/Generate.hs
index ac40a1d1bcea..0cc3ac1f71f4 100644
--- a/compiler/GHC/Tc/Deriv/Generate.hs
+++ b/compiler/GHC/Tc/Deriv/Generate.hs
@@ -515,7 +515,7 @@ gen_Ord_binds loc dit@(DerivInstTys{ dit_rep_tc = tycon
       where
         tag     = get_tag data_con
         tag_lit
-             = noLocA (HsLit noComments (HsIntPrim NoSourceText (toInteger tag)))
+             = noLocA (HsLit noExtField (HsIntPrim NoSourceText (toInteger tag)))
 
     mkInnerEqAlt :: OrdOp -> DataCon -> LMatch GhcPs (LHsExpr GhcPs)
     -- First argument 'a' known to be built with K
@@ -1655,8 +1655,8 @@ gen_Lift_binds loc (DerivInstTys{ dit_rep_tc = tycon
     mk_untyped_bracket = HsUntypedBracket noAnn . ExpBr noExtField
     mk_typed_bracket = HsTypedBracket noAnn
 
-    mk_tsplice = HsTypedSplice (noAnn, noAnn)
-    mk_usplice = HsUntypedSplice noAnn . HsUntypedSpliceExpr noAnn
+    mk_tsplice = HsTypedSplice []
+    mk_usplice = HsUntypedSplice noExtField . HsUntypedSpliceExpr noAnn
     data_cons = getPossibleDataCons tycon tycon_args
 
     pats_etc mk_bracket mk_splice lift_name data_con
diff --git a/compiler/GHC/Tc/Gen/Expr.hs b/compiler/GHC/Tc/Gen/Expr.hs
index d944d9e72fbd..971db16e26db 100644
--- a/compiler/GHC/Tc/Gen/Expr.hs
+++ b/compiler/GHC/Tc/Gen/Expr.hs
@@ -293,7 +293,7 @@ tcExpr e@(HsOverLit _ lit) res_ty
   = do { mb_res <- tcShortCutLit lit res_ty
          -- See Note [Short cut for overloaded literals] in GHC.Tc.Zonk.Type
        ; case mb_res of
-           Just lit' -> return (HsOverLit noAnn lit')
+           Just lit' -> return (HsOverLit noExtField lit')
            Nothing   -> tcApp e res_ty }
 
 -- Typecheck an occurrence of an unbound Id
@@ -536,7 +536,7 @@ tcExpr (HsStatic fvs expr) res_ty
         ; let wrap = mkWpEvVarApps [typeable_ev] <.> mkWpTyApps [expr_ty]
         ; loc <- getSrcSpanM
         ; static_ptr_ty_con <- tcLookupTyCon staticPtrTyConName
-        ; return $ mkHsWrapCo co $ HsApp noComments
+        ; return $ mkHsWrapCo co $ HsApp noExtField
                             (L (noAnnSrcSpan loc) $ mkHsWrap wrap fromStaticPtr)
                             (L (noAnnSrcSpan loc) (HsStatic (fvs, mkTyConApp static_ptr_ty_con [expr_ty]) expr'))
         }
diff --git a/compiler/GHC/Tc/Gen/Head.hs b/compiler/GHC/Tc/Gen/Head.hs
index 88ec0ae7a75c..9ae7328f54e7 100644
--- a/compiler/GHC/Tc/Gen/Head.hs
+++ b/compiler/GHC/Tc/Gen/Head.hs
@@ -396,7 +396,7 @@ rebuild_hs_apps fun _ [] = fun
 rebuild_hs_apps fun ctxt (arg : args)
   = case arg of
       EValArg { eva_arg = ValArg arg, eva_ctxt = ctxt' }
-        -> rebuild_hs_apps (HsApp noAnn lfun arg) ctxt' args
+        -> rebuild_hs_apps (HsApp noExtField lfun arg) ctxt' args
       ETypeArg { eva_hs_ty = hs_ty, eva_ty = ty, eva_ctxt = ctxt' }
         -> rebuild_hs_apps (HsAppType ty lfun hs_ty) ctxt' args
       EPrag ctxt' p
@@ -1096,20 +1096,20 @@ tcInferOverLit lit@(OverLit { ol_val = val
        ; let
            thing    = NameThing from_name
            mb_thing = Just thing
-           herald   = ExpectedFunTyArg thing (HsLit noAnn hs_lit)
+           herald   = ExpectedFunTyArg thing (HsLit noExtField hs_lit)
        ; (wrap2, sarg_ty, res_ty) <- matchActualFunTy herald mb_thing (1, from_ty) from_ty
 
        ; co <- unifyType mb_thing (hsLitType hs_lit) (scaledThing sarg_ty)
        -- See Note [Source locations for implicit function calls] in GHC.Iface.Ext.Ast
        ; let lit_expr = L (l2l loc) $ mkHsWrapCo co $
-                        HsLit noAnn hs_lit
+                        HsLit noExtField hs_lit
              from_expr = mkHsWrap (wrap2 <.> wrap1) $
                          HsVar noExtField (L loc from_id)
-             witness = HsApp noAnn (L (l2l loc) from_expr) lit_expr
+             witness = HsApp noExtField (L (l2l loc) from_expr) lit_expr
              lit' = lit { ol_ext = OverLitTc { ol_rebindable = rebindable
                                              , ol_witness = witness
                                              , ol_type = res_ty } }
-       ; return (HsOverLit noAnn lit', res_ty) }
+       ; return (HsOverLit noExtField lit', res_ty) }
 
 {- *********************************************************************
 *                                                                      *
diff --git a/compiler/GHC/Tc/Gen/HsType.hs b/compiler/GHC/Tc/Gen/HsType.hs
index d2f4f790ab93..2ec7a76c5d0e 100644
--- a/compiler/GHC/Tc/Gen/HsType.hs
+++ b/compiler/GHC/Tc/Gen/HsType.hs
@@ -1378,14 +1378,14 @@ tc_fun_type mode mult ty1 ty2 exp_kind = case mode_tyki mode of
        ; ty1'  <- tc_lhs_type mode ty1 arg_k
        ; ty2'  <- tc_lhs_type mode ty2 res_k
        ; mult' <- tc_mult mode mult
-       ; checkExpectedKind (HsFunTy noAnn mult ty1 ty2)
+       ; checkExpectedKind (HsFunTy noExtField mult ty1 ty2)
                            (tcMkVisFunTy mult' ty1' ty2')
                            liftedTypeKind exp_kind }
   KindLevel ->  -- no representation polymorphism in kinds. yet.
     do { ty1'  <- tc_lhs_type mode ty1 liftedTypeKind
        ; ty2'  <- tc_lhs_type mode ty2 liftedTypeKind
        ; mult' <- tc_mult mode mult
-       ; checkExpectedKind (HsFunTy noAnn mult ty1 ty2)
+       ; checkExpectedKind (HsFunTy noExtField mult ty1 ty2)
                            (tcMkVisFunTy mult' ty1' ty2')
                            liftedTypeKind exp_kind }
 
diff --git a/compiler/GHC/Tc/Gen/Match.hs b/compiler/GHC/Tc/Gen/Match.hs
index 83ff2e511914..fbc925168991 100644
--- a/compiler/GHC/Tc/Gen/Match.hs
+++ b/compiler/GHC/Tc/Gen/Match.hs
@@ -215,8 +215,8 @@ type AnnoBody body
     , Anno (Match GhcTc (LocatedA (body GhcTc))) ~ SrcSpanAnnA
     , Anno [LocatedA (Match GhcRn (LocatedA (body GhcRn)))] ~ SrcSpanAnnL
     , Anno [LocatedA (Match GhcTc (LocatedA (body GhcTc)))] ~ SrcSpanAnnL
-    , Anno (GRHS GhcRn (LocatedA (body GhcRn))) ~ EpAnn NoEpAnns
-    , Anno (GRHS GhcTc (LocatedA (body GhcTc))) ~ EpAnn NoEpAnns
+    , Anno (GRHS GhcRn (LocatedA (body GhcRn))) ~ EpAnnCO
+    , Anno (GRHS GhcTc (LocatedA (body GhcTc))) ~ EpAnnCO
     , Anno (StmtLR GhcRn GhcRn (LocatedA (body GhcRn))) ~ SrcSpanAnnA
     , Anno (StmtLR GhcTc GhcTc (LocatedA (body GhcTc))) ~ SrcSpanAnnA
     )
diff --git a/compiler/GHC/Tc/Gen/Splice.hs b/compiler/GHC/Tc/Gen/Splice.hs
index 45640c16c5ae..4450d743baad 100644
--- a/compiler/GHC/Tc/Gen/Splice.hs
+++ b/compiler/GHC/Tc/Gen/Splice.hs
@@ -971,7 +971,7 @@ stubNestedSplice :: HsExpr GhcTc
 -- do a debug-print.  The warning is because this should never happen
 -- /except/ when doing debug prints.
 stubNestedSplice = warnPprTrace True "stubNestedSplice" empty $
-                   HsLit noComments (mkHsString "stubNestedSplice")
+                   HsLit noExtField (mkHsString "stubNestedSplice")
 
 
 {-
@@ -1002,7 +1002,7 @@ runAnnotation target expr = do
               ; let specialised_to_annotation_wrapper_expr
                       = L loc' (mkHsWrap wrapper
                                  (HsVar noExtField (L (noAnnSrcSpan loc) to_annotation_wrapper_id)))
-              ; return (L loc' (HsApp noComments
+              ; return (L loc' (HsApp noExtField
                                 specialised_to_annotation_wrapper_expr expr'))
                                 })
 
diff --git a/compiler/GHC/Tc/TyCl/Instance.hs b/compiler/GHC/Tc/TyCl/Instance.hs
index 0966d5de0c85..f555eda53b22 100644
--- a/compiler/GHC/Tc/TyCl/Instance.hs
+++ b/compiler/GHC/Tc/TyCl/Instance.hs
@@ -1332,7 +1332,7 @@ tcInstDecl2 (InstInfo { iSpec = ispec, iBinds = ibinds })
              con_app_args = foldl' app_to_meth con_app_tys sc_meth_ids
 
              app_to_meth :: HsExpr GhcTc -> Id -> HsExpr GhcTc
-             app_to_meth fun meth_id = HsApp noComments (L loc' fun)
+             app_to_meth fun meth_id = HsApp noExtField (L loc' fun)
                                             (L loc' (wrapId arg_wrapper meth_id))
 
              inst_tv_tys = mkTyVarTys inst_tyvars
@@ -1869,13 +1869,13 @@ tcMethods skol_info dfun_id clas tyvars dfun_ev_vars inst_tys
       where
         inst_loc' = noAnnSrcSpan inst_loc
         error_rhs dflags = L inst_loc'
-                         $ HsApp noComments error_fun (error_msg dflags)
+                         $ HsApp noExtField error_fun (error_msg dflags)
         error_fun    = L inst_loc' $
                        wrapId (mkWpTyApps
                                 [ getRuntimeRep meth_tau, meth_tau])
                               nO_METHOD_BINDING_ERROR_ID
         error_msg dflags = L inst_loc'
-                                    (HsLit noComments (HsStringPrim NoSourceText
+                                    (HsLit noExtField (HsStringPrim NoSourceText
                                               (unsafeMkByteString (error_string dflags))))
         meth_tau     = classMethodInstTy sel_id inst_tys
         error_string dflags = showSDoc dflags
diff --git a/compiler/GHC/Tc/TyCl/PatSyn.hs b/compiler/GHC/Tc/TyCl/PatSyn.hs
index 69e9faa68ddd..714719deaa5c 100644
--- a/compiler/GHC/Tc/TyCl/PatSyn.hs
+++ b/compiler/GHC/Tc/TyCl/PatSyn.hs
@@ -1042,12 +1042,12 @@ tcPatToExpr args pat = go pat
                                          ; return $ ExplicitSum noExtField alt arity
                                                                    (noLocA expr)
                                          }
-    go1 (LitPat _ lit)              = return $ HsLit noComments lit
+    go1 (LitPat _ lit)              = return $ HsLit noExtField lit
     go1 (NPat _ (L _ n) mb_neg _)
         | Just (SyntaxExprRn neg) <- mb_neg
                                     = return $ unLoc $ foldl' nlHsApp (noLocA neg)
-                                                       [noLocA (HsOverLit noAnn n)]
-        | otherwise                 = return $ HsOverLit noAnn n
+                                                       [noLocA (HsOverLit noExtField n)]
+        | otherwise                 = return $ HsOverLit noExtField n
     go1 (SplicePat (HsUntypedSpliceTop _ pat) _) = go1 pat
     go1 (SplicePat (HsUntypedSpliceNested _) _)  = panic "tcPatToExpr: invalid nested splice"
     go1 (EmbTyPat _ tp) = return $ HsEmbTy noExtField (hstp_to_hswc tp)
@@ -1061,7 +1061,7 @@ tcPatToExpr args pat = go pat
       Nothing      -> notInvertible p
       Just inverse ->
         fmap
-          (\ expr -> HsApp noAnn (wrapGenSpan inverse) (wrapGenSpan expr))
+          (\ expr -> HsApp noExtField (wrapGenSpan inverse) (wrapGenSpan expr))
           (go1 (unLoc pat))
 
     -- The following patterns are not invertible.
diff --git a/compiler/GHC/Tc/Utils/TcMType.hs b/compiler/GHC/Tc/Utils/TcMType.hs
index 8b34b54adb8c..90706a594f7b 100644
--- a/compiler/GHC/Tc/Utils/TcMType.hs
+++ b/compiler/GHC/Tc/Utils/TcMType.hs
@@ -2371,11 +2371,11 @@ shortCutLit platform val res_ty
   where
     go_integral int@(IL src neg i)
       | isIntTy res_ty  && platformInIntRange  platform i
-      = Just (HsLit noAnn (HsInt noExtField int))
+      = Just (HsLit noExtField (HsInt noExtField int))
       | isWordTy res_ty && platformInWordRange platform i
       = Just (mkLit wordDataCon (HsWordPrim src i))
       | isIntegerTy res_ty
-      = Just (HsLit noAnn (HsInteger src i res_ty))
+      = Just (HsLit noExtField (HsInteger src i res_ty))
       | otherwise
       = go_fractional (integralFractionalLit neg i)
         -- The 'otherwise' case is important
@@ -2396,11 +2396,11 @@ shortCutLit platform val res_ty
             -- is less than 100, which ensures desugaring isn't slow.
 
     go_string src s
-      | isStringTy res_ty = Just (HsLit noAnn (HsString src s))
+      | isStringTy res_ty = Just (HsLit noExtField (HsString src s))
       | otherwise         = Nothing
 
 mkLit :: DataCon -> HsLit GhcTc -> HsExpr GhcTc
-mkLit con lit = HsApp noComments (nlHsDataCon con) (nlHsLit lit)
+mkLit con lit = HsApp noExtField (nlHsDataCon con) (nlHsLit lit)
 
 ------------------------------
 hsOverLitName :: OverLitVal -> Name
diff --git a/compiler/GHC/Tc/Zonk/Type.hs b/compiler/GHC/Tc/Zonk/Type.hs
index 0ac35fce036f..3cee66490243 100644
--- a/compiler/GHC/Tc/Zonk/Type.hs
+++ b/compiler/GHC/Tc/Zonk/Type.hs
@@ -864,7 +864,7 @@ zonkLTcSpecPrags ps
 ************************************************************************
 -}
 
-zonkMatchGroup :: Anno (GRHS GhcTc (LocatedA (body GhcTc))) ~ EpAnn NoEpAnns
+zonkMatchGroup :: Anno (GRHS GhcTc (LocatedA (body GhcTc))) ~ EpAnnCO
                => (LocatedA (body GhcTc) -> ZonkTcM (LocatedA (body GhcTc)))
                -> MatchGroup GhcTc (LocatedA (body GhcTc))
                -> ZonkTcM (MatchGroup GhcTc (LocatedA (body GhcTc)))
@@ -878,7 +878,7 @@ zonkMatchGroup zBody (MG { mg_alts = L l ms
                      , mg_ext = MatchGroupTc arg_tys' res_ty' origin
                      }) }
 
-zonkMatch :: Anno (GRHS GhcTc (LocatedA (body GhcTc))) ~ EpAnn NoEpAnns
+zonkMatch :: Anno (GRHS GhcTc (LocatedA (body GhcTc))) ~ EpAnnCO
           => (LocatedA (body GhcTc) -> ZonkTcM (LocatedA (body GhcTc)))
           -> LMatch GhcTc (LocatedA (body GhcTc))
           -> ZonkTcM (LMatch GhcTc (LocatedA (body GhcTc)))
@@ -889,7 +889,7 @@ zonkMatch zBody (L loc match@(Match { m_pats = pats
       ; return (L loc (match { m_pats = new_pats, m_grhss = new_grhss })) }
 
 -------------------------------------------------------------------------
-zonkGRHSs :: Anno (GRHS GhcTc (LocatedA (body GhcTc))) ~ EpAnn NoEpAnns
+zonkGRHSs :: Anno (GRHS GhcTc (LocatedA (body GhcTc))) ~ EpAnnCO
           => (LocatedA (body GhcTc) -> ZonkTcM (LocatedA (body GhcTc)))
           -> GRHSs GhcTc (LocatedA (body GhcTc))
           -> ZonkTcM (GRHSs GhcTc (LocatedA (body GhcTc)))
diff --git a/compiler/GHC/ThToHs.hs b/compiler/GHC/ThToHs.hs
index 1936b5bb17f8..d2ae5f8085a8 100644
--- a/compiler/GHC/ThToHs.hs
+++ b/compiler/GHC/ThToHs.hs
@@ -1028,9 +1028,9 @@ cvtl e = wrapLA (cvt e)
     cvt (VarE s)   = do { s' <- vName s; wrapParLA (HsVar noExtField) s' }
     cvt (ConE s)   = do { s' <- cName s; wrapParLA (HsVar noExtField) s' }
     cvt (LitE l)
-      | overloadedLit l = go cvtOverLit (HsOverLit noComments)
+      | overloadedLit l = go cvtOverLit (HsOverLit noExtField)
                              (hsOverLitNeedsParens appPrec)
-      | otherwise       = go cvtLit (HsLit noComments)
+      | otherwise       = go cvtLit (HsLit noExtField)
                              (hsLitNeedsParens appPrec)
       where
         go :: (Lit -> CvtM (l GhcPs))
@@ -1043,7 +1043,7 @@ cvtl e = wrapLA (cvt e)
           if is_compound_lit l' then wrapParLA gHsPar e' else pure e'
     cvt (AppE e1 e2)   = do { e1' <- parenthesizeHsExpr opPrec <$> cvtl e1
                             ; e2' <- parenthesizeHsExpr appPrec <$> cvtl e2
-                            ; return $ HsApp noComments e1' e2' }
+                            ; return $ HsApp noExtField e1' e2' }
     cvt (AppTypeE e t) = do { e' <- parenthesizeHsExpr opPrec <$> cvtl e
                             ; t' <- parenthesizeHsType appPrec <$> cvtType t
                             ; return $ HsAppType noAnn e'
@@ -1090,7 +1090,7 @@ cvtl e = wrapLA (cvt e)
                             ; return $ ArithSeq noAnn Nothing dd' }
     cvt (ListE xs)
       | Just s <- allCharLs xs       = do { l' <- cvtLit (StringL s)
-                                          ; return (HsLit noComments l') }
+                                          ; return (HsLit noExtField l') }
              -- Note [Converting strings]
       | otherwise       = do { xs' <- mapM cvtl xs
                              ; return $ ExplicitList noAnn xs'
@@ -1112,12 +1112,12 @@ cvtl e = wrapLA (cvt e)
     cvt (InfixE Nothing  s (Just y)) = ensureValidOpExp s $
                                        do { s' <- cvtl s; y' <- cvtl y
                                           ; wrapParLA gHsPar $
-                                                          SectionR noComments s' y' }
+                                                          SectionR noExtField s' y' }
                                             -- See Note [Sections in HsSyn] in GHC.Hs.Expr
     cvt (InfixE (Just x) s Nothing ) = ensureValidOpExp s $
                                        do { x' <- cvtl x; s' <- cvtl s
                                           ; wrapParLA gHsPar $
-                                                          SectionL noComments x' s' }
+                                                          SectionL noExtField x' s' }
 
     cvt (InfixE Nothing  s Nothing ) = ensureValidOpExp s $
                                        do { s' <- cvtl s
@@ -1153,15 +1153,15 @@ cvtl e = wrapLA (cvt e)
                               -- constructor names - see #14627.
                               { s' <- vcName s
                               ; wrapParLA (HsVar noExtField) s' }
-    cvt (LabelE s)       = return $ HsOverLabel noComments NoSourceText (fsLit s)
-    cvt (ImplicitParamVarE n) = do { n' <- ipName n; return $ HsIPVar noComments n' }
+    cvt (LabelE s)       = return $ HsOverLabel noExtField NoSourceText (fsLit s)
+    cvt (ImplicitParamVarE n) = do { n' <- ipName n; return $ HsIPVar noExtField n' }
     cvt (GetFieldE exp f) = do { e' <- cvtl exp
-                               ; return $ HsGetField noComments e'
+                               ; return $ HsGetField noExtField e'
                                          (L noSrcSpanA (DotFieldOcc noAnn (L noSrcSpanA (FieldLabelString (fsLit f))))) }
     cvt (ProjectionE xs) = return $ HsProjection noAnn $ fmap
                                          (L noSrcSpanA . DotFieldOcc noAnn . L noSrcSpanA . FieldLabelString  . fsLit) xs
     cvt (TypedSpliceE e) = do { e' <- parenthesizeHsExpr appPrec <$> cvtl e
-                              ; return $ HsTypedSplice (noAnn, noAnn) e' }
+                              ; return $ HsTypedSplice [] e' }
     cvt (TypedBracketE e) = do { e' <- cvtl e
                                ; return $ HsTypedBracket noAnn e' }
     cvt (TypeE t) = do { t' <- cvtType t
@@ -1641,7 +1641,7 @@ cvtTypeKind typeOrKind ty
                           _            -> return $
                                           parenthesizeHsType sigPrec x'
                  let y'' = parenthesizeHsType sigPrec y'
-                 returnLA (HsFunTy noAnn (HsUnrestrictedArrow noAnn) x'' y'')
+                 returnLA (HsFunTy noExtField (HsUnrestrictedArrow noAnn) x'' y'')
              | otherwise
              -> do { fun_tc <- returnLA $ getRdrName unrestrictedFunTyCon
                    ; mk_apps (HsTyVar noAnn NotPromoted fun_tc) tys' }
@@ -1656,7 +1656,7 @@ cvtTypeKind typeOrKind ty
                                           parenthesizeHsType sigPrec x'
                  let y'' = parenthesizeHsType sigPrec y'
                      w'' = hsTypeToArrow w'
-                 returnLA (HsFunTy noAnn w'' x'' y'')
+                 returnLA (HsFunTy noExtField w'' x'' y'')
              | otherwise
              -> do { fun_tc <- returnLA $ getRdrName fUNTyCon
                    ; mk_apps (HsTyVar noAnn NotPromoted fun_tc) tys' }
diff --git a/testsuite/tests/ghc-api/exactprint/T22919.stderr b/testsuite/tests/ghc-api/exactprint/T22919.stderr
index 510337bfd8d1..82684b25faa8 100644
--- a/testsuite/tests/ghc-api/exactprint/T22919.stderr
+++ b/testsuite/tests/ghc-api/exactprint/T22919.stderr
@@ -80,11 +80,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { T22919.hs:2:1-9 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -124,11 +120,7 @@
                  (EpaComments
                   []))
                 (HsLit
-                 (EpAnn
-                  (EpaSpan { T22919.hs:2:7-9 })
-                  (NoEpAnns)
-                  (EpaComments
-                   []))
+                 (NoExtField)
                  (HsChar
                   (SourceText 's')
                   ('s'))))))]
diff --git a/testsuite/tests/ghc-api/exactprint/Test20239.stderr b/testsuite/tests/ghc-api/exactprint/Test20239.stderr
index f309eda6e2e6..763d7a095ce4 100644
--- a/testsuite/tests/ghc-api/exactprint/Test20239.stderr
+++ b/testsuite/tests/ghc-api/exactprint/Test20239.stderr
@@ -58,26 +58,23 @@
         (EpaComment
          (EpaLineComment
           "-- Running over two lines")
-         { Test20239.hs:3:1-28 }))]))
+         { Test20239.hs:3:1-28 }))
+      ,(L
+        (EpaSpan
+         { Test20239.hs:6:34-70 })
+        (EpaComment
+         (EpaLineComment
+          "-- ^ Run a query against the database")
+         { Test20239.hs:5:51-55 }))]))
     (InstD
      (NoExtField)
      (DataFamInstD
       (NoExtField)
       (DataFamInstDecl
        (FamEqn
-        (EpAnn
-         (EpaSpan { Test20239.hs:(5,1)-(7,86) })
-         [(AddEpAnn AnnData (EpaSpan { Test20239.hs:5:1-4 }))
-         ,(AddEpAnn AnnInstance (EpaSpan { Test20239.hs:5:6-13 }))
-         ,(AddEpAnn AnnEqual (EpaSpan { Test20239.hs:5:34 }))]
-         (EpaComments
-          [(L
-            (EpaSpan
-             { Test20239.hs:6:34-70 })
-            (EpaComment
-             (EpaLineComment
-              "-- ^ Run a query against the database")
-             { Test20239.hs:5:51-55 }))]))
+        [(AddEpAnn AnnData (EpaSpan { Test20239.hs:5:1-4 }))
+        ,(AddEpAnn AnnInstance (EpaSpan { Test20239.hs:5:6-13 }))
+        ,(AddEpAnn AnnEqual (EpaSpan { Test20239.hs:5:34 }))]
         (L
          (EpAnn
           (EpaSpan { Test20239.hs:5:15-20 })
@@ -99,11 +96,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { Test20239.hs:5:22-32 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -131,11 +124,7 @@
              (EpaComments
               []))
             (ConDeclH98
-             (EpAnn
-              (EpaSpan { Test20239.hs:5:36-55 })
-              []
-              (EpaComments
-               []))
+             []
              (L
               (EpAnn
                (EpaSpan { Test20239.hs:5:36-49 })
@@ -163,11 +152,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { Test20239.hs:5:51-55 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -187,11 +172,7 @@
              (EpaComments
               []))
             (ConDeclH98
-             (EpAnn
-              (EpaSpan { Test20239.hs:7:36-86 })
-              []
-              (EpaComments
-               []))
+             []
              (L
               (EpAnn
                (EpaSpan { Test20239.hs:7:36-48 })
@@ -219,14 +200,10 @@
                   (EpaComments
                    []))
                  (HsParTy
-                  (EpAnn
-                   (EpaSpan { Test20239.hs:7:50-86 })
-                   (AnnParen
-                    (AnnParens)
-                    (EpaSpan { Test20239.hs:7:50 })
-                    (EpaSpan { Test20239.hs:7:86 }))
-                   (EpaComments
-                    []))
+                  (AnnParen
+                   (AnnParens)
+                   (EpaSpan { Test20239.hs:7:50 })
+                   (EpaSpan { Test20239.hs:7:86 }))
                   (L
                    (EpAnn
                     (EpaSpan { Test20239.hs:7:51-85 })
@@ -235,11 +212,7 @@
                     (EpaComments
                      []))
                    (HsFunTy
-                    (EpAnn
-                     (EpaSpan { Test20239.hs:7:51-85 })
-                     (NoEpAnns)
-                     (EpaComments
-                      []))
+                    (NoExtField)
                     (HsUnrestrictedArrow
                      (EpUniTok
                       (EpaSpan { Test20239.hs:7:62-63 })
@@ -252,11 +225,7 @@
                       (EpaComments
                        []))
                      (HsTyVar
-                      (EpAnn
-                       (EpaSpan { Test20239.hs:7:51-60 })
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (NotPromoted)
                       (L
                        (EpAnn
@@ -284,11 +253,7 @@
                         (EpaComments
                          []))
                        (HsTyVar
-                        (EpAnn
-                         (EpaSpan { Test20239.hs:7:65-66 })
-                         []
-                         (EpaComments
-                          []))
+                        []
                         (NotPromoted)
                         (L
                          (EpAnn
@@ -307,14 +272,10 @@
                         (EpaComments
                          []))
                        (HsParTy
-                        (EpAnn
-                         (EpaSpan { Test20239.hs:7:68-85 })
-                         (AnnParen
-                          (AnnParens)
-                          (EpaSpan { Test20239.hs:7:68 })
-                          (EpaSpan { Test20239.hs:7:85 }))
-                         (EpaComments
-                          []))
+                        (AnnParen
+                         (AnnParens)
+                         (EpaSpan { Test20239.hs:7:68 })
+                         (EpaSpan { Test20239.hs:7:85 }))
                         (L
                          (EpAnn
                           (EpaSpan { Test20239.hs:7:69-84 })
@@ -341,11 +302,7 @@
                               (EpaComments
                                []))
                              (HsTyVar
-                              (EpAnn
-                               (EpaSpan { Test20239.hs:7:69-74 })
-                               []
-                               (EpaComments
-                                []))
+                              []
                               (NotPromoted)
                               (L
                                (EpAnn
@@ -364,11 +321,7 @@
                               (EpaComments
                                []))
                              (HsTyVar
-                              (EpAnn
-                               (EpaSpan { Test20239.hs:7:76-81 })
-                               []
-                               (EpaComments
-                                []))
+                              []
                               (NotPromoted)
                               (L
                                (EpAnn
@@ -387,14 +340,10 @@
                             (EpaComments
                              []))
                            (HsTupleTy
-                            (EpAnn
-                             (EpaSpan { Test20239.hs:7:83-84 })
-                             (AnnParen
-                              (AnnParens)
-                              (EpaSpan { Test20239.hs:7:83 })
-                              (EpaSpan { Test20239.hs:7:84 }))
-                             (EpaComments
-                              []))
+                            (AnnParen
+                             (AnnParens)
+                             (EpaSpan { Test20239.hs:7:83 })
+                             (EpaSpan { Test20239.hs:7:84 }))
                             (HsBoxedOrConstraintTuple)
                             [])))))))))))))])
              (Nothing)))])
diff --git a/testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr b/testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr
index dd302e531e9f..98069a691e54 100644
--- a/testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr
+++ b/testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr
@@ -92,11 +92,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { ZeroWidthSemi.hs:6:1-5 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -136,11 +132,7 @@
                  (EpaComments
                   []))
                 (HsOverLit
-                 (EpAnn
-                  (EpaSpan { ZeroWidthSemi.hs:6:5 })
-                  (NoEpAnns)
-                  (EpaComments
-                   []))
+                 (NoExtField)
                  (OverLit
                   (NoExtField)
                   (HsIntegral
diff --git a/testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr b/testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr
index 5038369a76a0..5782d6f3b521 100644
--- a/testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr
+++ b/testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr
@@ -44,12 +44,8 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:(5,1)-(6,16) })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:5:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:5:12-16 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:5:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:5:12-16 }))]
        (EpVirtualBraces
         (3))
        (NoAnnSortKey))
@@ -73,11 +69,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:5:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -99,13 +91,9 @@
          (EpaComments
           []))
         (ClassOpSig
-         (EpAnn
-          (EpaSpan { T17544.hs:6:3-16 })
-          (AnnSig
-           (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:6:6-7 }))
-           [])
-          (EpaComments
-           []))
+         (AnnSig
+          (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:6:6-7 }))
+          [])
          (False)
          [(L
            (EpAnn
@@ -135,11 +123,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { T17544.hs:6:9-16 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { T17544.hs:6:11-12 })
@@ -152,11 +136,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:6:9 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -175,11 +155,7 @@
                (EpaComments
                 []))
               (HsDocTy
-               (EpAnn
-                (EpaDelta (SameLine 0) [])
-                []
-                (EpaComments
-                 []))
+               []
                (L
                 (EpAnn
                  (EpaSpan { T17544.hs:6:14-16 })
@@ -188,11 +164,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { T17544.hs:6:14-16 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -231,12 +203,8 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:(9,1)-(10,16) })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:9:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:9:12-16 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:9:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:9:12-16 }))]
        (EpVirtualBraces
         (3))
        (NoAnnSortKey))
@@ -260,11 +228,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:9:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -286,13 +250,9 @@
          (EpaComments
           []))
         (ClassOpSig
-         (EpAnn
-          (EpaSpan { T17544.hs:10:3-16 })
-          (AnnSig
-           (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:10:6-7 }))
-           [])
-          (EpaComments
-           []))
+         (AnnSig
+          (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:10:6-7 }))
+          [])
          (False)
          [(L
            (EpAnn
@@ -322,11 +282,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { T17544.hs:10:9-16 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { T17544.hs:10:11-12 })
@@ -339,11 +295,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:10:9 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -362,11 +314,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:10:14-16 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -412,12 +360,8 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:(13,1)-(14,16) })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:13:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:13:12-16 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:13:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:13:12-16 }))]
        (EpVirtualBraces
         (3))
        (NoAnnSortKey))
@@ -441,11 +385,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:13:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -467,13 +407,9 @@
          (EpaComments
           []))
         (ClassOpSig
-         (EpAnn
-          (EpaSpan { T17544.hs:14:3-16 })
-          (AnnSig
-           (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:14:6-7 }))
-           [])
-          (EpaComments
-           []))
+         (AnnSig
+          (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:14:6-7 }))
+          [])
          (False)
          [(L
            (EpAnn
@@ -503,11 +439,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { T17544.hs:14:9-16 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { T17544.hs:14:11-12 })
@@ -520,11 +452,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:14:9 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -543,11 +471,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:14:14-16 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -596,12 +520,8 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:(17,1)-(20,16) })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:17:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:17:12-16 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:17:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:17:12-16 }))]
        (EpVirtualBraces
         (3))
        (NoAnnSortKey))
@@ -625,11 +545,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:17:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -651,13 +567,9 @@
          (EpaComments
           []))
         (ClassOpSig
-         (EpAnn
-          (EpaSpan { T17544.hs:18:3-16 })
-          (AnnSig
-           (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:18:6-7 }))
-           [])
-          (EpaComments
-           []))
+         (AnnSig
+          (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:18:6-7 }))
+          [])
          (False)
          [(L
            (EpAnn
@@ -687,11 +599,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { T17544.hs:18:9-16 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { T17544.hs:18:11-12 })
@@ -704,11 +612,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:18:9 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -727,11 +631,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:18:14-16 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -750,13 +650,9 @@
          (EpaComments
           []))
         (ClassOpSig
-         (EpAnn
-          (EpaSpan { T17544.hs:20:3-16 })
-          (AnnSig
-           (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:20:6-7 }))
-           [])
-          (EpaComments
-           []))
+         (AnnSig
+          (AddEpAnn AnnDcolon (EpaSpan { T17544.hs:20:6-7 }))
+          [])
          (False)
          [(L
            (EpAnn
@@ -786,11 +682,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { T17544.hs:20:9-16 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { T17544.hs:20:11-12 })
@@ -803,11 +695,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:20:9 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -826,11 +714,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:20:14-16 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -857,14 +741,10 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:22:1-30 })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:22:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:22:12-16 }))
-        ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:22:18 }))
-        ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:22:30 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:22:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:22:12-16 }))
+       ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:22:18 }))
+       ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:22:30 }))]
        (EpExplicitBraces
         (EpTok
          (EpaSpan { T17544.hs:22:18 }))
@@ -891,11 +771,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:22:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -920,11 +796,7 @@
          (EpaComments
           []))
         (FamilyDecl
-         (EpAnn
-          (EpaSpan { T17544.hs:22:20-28 })
-          [(AddEpAnn AnnData (EpaSpan { T17544.hs:22:20-23 }))]
-          (EpaComments
-           []))
+         [(AddEpAnn AnnData (EpaSpan { T17544.hs:22:20-23 }))]
          (DataFamily)
          (NotTopLevel)
          (L
@@ -946,11 +818,7 @@
              (EpaComments
               []))
             (UserTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:22:28 })
-              []
-              (EpaComments
-               []))
+             []
              (HsBndrRequired
               (NoExtField))
              (L
@@ -988,12 +856,8 @@
       (ClsInstDecl
        ((,,)
         (Nothing)
-        (EpAnn
-         (EpaSpan { T17544.hs:(23,1)-(25,18) })
-         [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:23:1-8 }))
-         ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:23:17-21 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:23:1-8 }))
+        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:23:17-21 }))]
         (NoAnnSortKey))
        (L
         (EpAnn
@@ -1023,11 +887,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:23:10-11 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1046,11 +906,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:23:13-15 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1074,12 +930,8 @@
            []))
          (DataFamInstDecl
           (FamEqn
-           (EpAnn
-            (EpaSpan { T17544.hs:(24,3)-(25,18) })
-            [(AddEpAnn AnnData (EpaSpan { T17544.hs:24:3-6 }))
-            ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:24:15-19 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnData (EpaSpan { T17544.hs:24:3-6 }))
+           ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:24:15-19 }))]
            (L
             (EpAnn
              (EpaSpan { T17544.hs:24:8-9 })
@@ -1101,11 +953,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:24:11-13 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1136,11 +984,7 @@
                  (EpUniTok
                   (EpaSpan { T17544.hs:25:10-11 })
                   (NormalSyntax))
-                 (EpAnn
-                  (EpaSpan { T17544.hs:25:5-18 })
-                  []
-                  (EpaComments
-                   [])))
+                 [])
                 (:|
                  (L
                   (EpAnn
@@ -1182,11 +1026,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:25:13-14 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1205,11 +1045,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:25:16-18 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1234,14 +1070,10 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:28:1-30 })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:28:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:28:12-16 }))
-        ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:28:18 }))
-        ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:28:30 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:28:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:28:12-16 }))
+       ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:28:18 }))
+       ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:28:30 }))]
        (EpExplicitBraces
         (EpTok
          (EpaSpan { T17544.hs:28:18 }))
@@ -1268,11 +1100,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:28:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -1297,11 +1125,7 @@
          (EpaComments
           []))
         (FamilyDecl
-         (EpAnn
-          (EpaSpan { T17544.hs:28:20-28 })
-          [(AddEpAnn AnnData (EpaSpan { T17544.hs:28:20-23 }))]
-          (EpaComments
-           []))
+         [(AddEpAnn AnnData (EpaSpan { T17544.hs:28:20-23 }))]
          (DataFamily)
          (NotTopLevel)
          (L
@@ -1323,11 +1147,7 @@
              (EpaComments
               []))
             (UserTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:28:28 })
-              []
-              (EpaComments
-               []))
+             []
              (HsBndrRequired
               (NoExtField))
              (L
@@ -1365,12 +1185,8 @@
       (ClsInstDecl
        ((,,)
         (Nothing)
-        (EpAnn
-         (EpaSpan { T17544.hs:(29,1)-(31,18) })
-         [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:29:1-8 }))
-         ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:29:17-21 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:29:1-8 }))
+        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:29:17-21 }))]
         (NoAnnSortKey))
        (L
         (EpAnn
@@ -1400,11 +1216,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:29:10-11 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1423,11 +1235,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:29:13-15 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1451,12 +1259,8 @@
            []))
          (DataFamInstDecl
           (FamEqn
-           (EpAnn
-            (EpaSpan { T17544.hs:(30,3)-(31,18) })
-            [(AddEpAnn AnnData (EpaSpan { T17544.hs:30:3-6 }))
-            ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:30:15-19 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnData (EpaSpan { T17544.hs:30:3-6 }))
+           ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:30:15-19 }))]
            (L
             (EpAnn
              (EpaSpan { T17544.hs:30:8-9 })
@@ -1478,11 +1282,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:30:11-13 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1513,11 +1313,7 @@
                  (EpUniTok
                   (EpaSpan { T17544.hs:31:10-11 })
                   (NormalSyntax))
-                 (EpAnn
-                  (EpaSpan { T17544.hs:31:5-18 })
-                  []
-                  (EpaComments
-                   [])))
+                 [])
                 (:|
                  (L
                   (EpAnn
@@ -1559,11 +1355,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:31:13-14 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1582,11 +1374,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:31:16-18 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1611,14 +1399,10 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:34:1-30 })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:34:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:34:12-16 }))
-        ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:34:18 }))
-        ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:34:30 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:34:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:34:12-16 }))
+       ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:34:18 }))
+       ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:34:30 }))]
        (EpExplicitBraces
         (EpTok
          (EpaSpan { T17544.hs:34:18 }))
@@ -1645,11 +1429,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:34:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -1674,11 +1454,7 @@
          (EpaComments
           []))
         (FamilyDecl
-         (EpAnn
-          (EpaSpan { T17544.hs:34:20-28 })
-          [(AddEpAnn AnnData (EpaSpan { T17544.hs:34:20-23 }))]
-          (EpaComments
-           []))
+         [(AddEpAnn AnnData (EpaSpan { T17544.hs:34:20-23 }))]
          (DataFamily)
          (NotTopLevel)
          (L
@@ -1700,11 +1476,7 @@
              (EpaComments
               []))
             (UserTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:34:28 })
-              []
-              (EpaComments
-               []))
+             []
              (HsBndrRequired
               (NoExtField))
              (L
@@ -1742,12 +1514,8 @@
       (ClsInstDecl
        ((,,)
         (Nothing)
-        (EpAnn
-         (EpaSpan { T17544.hs:(35,1)-(37,18) })
-         [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:35:1-8 }))
-         ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:35:17-21 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:35:1-8 }))
+        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:35:17-21 }))]
         (NoAnnSortKey))
        (L
         (EpAnn
@@ -1777,11 +1545,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:35:10-11 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1800,11 +1564,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:35:13-15 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1828,12 +1588,8 @@
            []))
          (DataFamInstDecl
           (FamEqn
-           (EpAnn
-            (EpaSpan { T17544.hs:(36,3)-(37,18) })
-            [(AddEpAnn AnnData (EpaSpan { T17544.hs:36:3-6 }))
-            ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:36:15-19 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnData (EpaSpan { T17544.hs:36:3-6 }))
+           ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:36:15-19 }))]
            (L
             (EpAnn
              (EpaSpan { T17544.hs:36:8-9 })
@@ -1855,11 +1611,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:36:11-13 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1890,11 +1642,7 @@
                  (EpUniTok
                   (EpaSpan { T17544.hs:37:10-11 })
                   (NormalSyntax))
-                 (EpAnn
-                  (EpaSpan { T17544.hs:37:5-18 })
-                  []
-                  (EpaComments
-                   [])))
+                 [])
                 (:|
                  (L
                   (EpAnn
@@ -1936,11 +1684,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:37:13-14 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1959,11 +1703,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:37:16-18 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1988,14 +1728,10 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:40:1-30 })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:40:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:40:12-16 }))
-        ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:40:18 }))
-        ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:40:30 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:40:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:40:12-16 }))
+       ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:40:18 }))
+       ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:40:30 }))]
        (EpExplicitBraces
         (EpTok
          (EpaSpan { T17544.hs:40:18 }))
@@ -2022,11 +1758,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:40:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -2051,11 +1783,7 @@
          (EpaComments
           []))
         (FamilyDecl
-         (EpAnn
-          (EpaSpan { T17544.hs:40:20-28 })
-          [(AddEpAnn AnnData (EpaSpan { T17544.hs:40:20-23 }))]
-          (EpaComments
-           []))
+         [(AddEpAnn AnnData (EpaSpan { T17544.hs:40:20-23 }))]
          (DataFamily)
          (NotTopLevel)
          (L
@@ -2077,11 +1805,7 @@
              (EpaComments
               []))
             (UserTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:40:28 })
-              []
-              (EpaComments
-               []))
+             []
              (HsBndrRequired
               (NoExtField))
              (L
@@ -2119,12 +1843,8 @@
       (ClsInstDecl
        ((,,)
         (Nothing)
-        (EpAnn
-         (EpaSpan { T17544.hs:(41,1)-(43,18) })
-         [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:41:1-8 }))
-         ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:41:17-21 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:41:1-8 }))
+        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:41:17-21 }))]
         (NoAnnSortKey))
        (L
         (EpAnn
@@ -2154,11 +1874,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:41:10-11 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -2177,11 +1893,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:41:13-15 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -2205,12 +1917,8 @@
            []))
          (DataFamInstDecl
           (FamEqn
-           (EpAnn
-            (EpaSpan { T17544.hs:(42,3)-(43,18) })
-            [(AddEpAnn AnnData (EpaSpan { T17544.hs:42:3-6 }))
-            ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:42:15-19 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnData (EpaSpan { T17544.hs:42:3-6 }))
+           ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:42:15-19 }))]
            (L
             (EpAnn
              (EpaSpan { T17544.hs:42:8-9 })
@@ -2232,11 +1940,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:42:11-13 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -2267,11 +1971,7 @@
                  (EpUniTok
                   (EpaSpan { T17544.hs:43:10-11 })
                   (NormalSyntax))
-                 (EpAnn
-                  (EpaSpan { T17544.hs:43:5-18 })
-                  []
-                  (EpaComments
-                   [])))
+                 [])
                 (:|
                  (L
                   (EpAnn
@@ -2313,11 +2013,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:43:13-14 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -2336,11 +2032,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:43:16-18 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -2365,14 +2057,10 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:46:1-30 })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:46:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:46:12-16 }))
-        ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:46:18 }))
-        ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:46:30 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:46:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:46:12-16 }))
+       ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:46:18 }))
+       ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:46:30 }))]
        (EpExplicitBraces
         (EpTok
          (EpaSpan { T17544.hs:46:18 }))
@@ -2399,11 +2087,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:46:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -2428,11 +2112,7 @@
          (EpaComments
           []))
         (FamilyDecl
-         (EpAnn
-          (EpaSpan { T17544.hs:46:20-28 })
-          [(AddEpAnn AnnData (EpaSpan { T17544.hs:46:20-23 }))]
-          (EpaComments
-           []))
+         [(AddEpAnn AnnData (EpaSpan { T17544.hs:46:20-23 }))]
          (DataFamily)
          (NotTopLevel)
          (L
@@ -2454,11 +2134,7 @@
              (EpaComments
               []))
             (UserTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:46:28 })
-              []
-              (EpaComments
-               []))
+             []
              (HsBndrRequired
               (NoExtField))
              (L
@@ -2496,12 +2172,8 @@
       (ClsInstDecl
        ((,,)
         (Nothing)
-        (EpAnn
-         (EpaSpan { T17544.hs:(47,1)-(49,18) })
-         [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:47:1-8 }))
-         ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:47:17-21 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:47:1-8 }))
+        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:47:17-21 }))]
         (NoAnnSortKey))
        (L
         (EpAnn
@@ -2531,11 +2203,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:47:10-11 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -2554,11 +2222,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:47:13-15 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -2582,12 +2246,8 @@
            []))
          (DataFamInstDecl
           (FamEqn
-           (EpAnn
-            (EpaSpan { T17544.hs:(48,3)-(49,18) })
-            [(AddEpAnn AnnData (EpaSpan { T17544.hs:48:3-6 }))
-            ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:48:15-19 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnData (EpaSpan { T17544.hs:48:3-6 }))
+           ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:48:15-19 }))]
            (L
             (EpAnn
              (EpaSpan { T17544.hs:48:8-9 })
@@ -2609,11 +2269,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:48:11-13 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -2644,11 +2300,7 @@
                  (EpUniTok
                   (EpaSpan { T17544.hs:49:10-11 })
                   (NormalSyntax))
-                 (EpAnn
-                  (EpaSpan { T17544.hs:49:5-18 })
-                  []
-                  (EpaComments
-                   [])))
+                 [])
                 (:|
                  (L
                   (EpAnn
@@ -2690,11 +2342,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:49:13-14 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -2713,11 +2361,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:49:16-18 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -2742,14 +2386,10 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544.hs:52:1-32 })
-        [(AddEpAnn AnnClass (EpaSpan { T17544.hs:52:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:52:13-17 }))
-        ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:52:19 }))
-        ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:52:32 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544.hs:52:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:52:13-17 }))
+       ,(AddEpAnn AnnOpenC (EpaSpan { T17544.hs:52:19 }))
+       ,(AddEpAnn AnnCloseC (EpaSpan { T17544.hs:52:32 }))]
        (EpExplicitBraces
         (EpTok
          (EpaSpan { T17544.hs:52:19 }))
@@ -2776,11 +2416,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544.hs:52:11 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -2805,11 +2441,7 @@
          (EpaComments
           []))
         (FamilyDecl
-         (EpAnn
-          (EpaSpan { T17544.hs:52:21-30 })
-          [(AddEpAnn AnnData (EpaSpan { T17544.hs:52:21-24 }))]
-          (EpaComments
-           []))
+         [(AddEpAnn AnnData (EpaSpan { T17544.hs:52:21-24 }))]
          (DataFamily)
          (NotTopLevel)
          (L
@@ -2831,11 +2463,7 @@
              (EpaComments
               []))
             (UserTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:52:30 })
-              []
-              (EpaComments
-               []))
+             []
              (HsBndrRequired
               (NoExtField))
              (L
@@ -2873,12 +2501,8 @@
       (ClsInstDecl
        ((,,)
         (Nothing)
-        (EpAnn
-         (EpaSpan { T17544.hs:(53,1)-(55,20) })
-         [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:53:1-8 }))
-         ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:53:18-22 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnInstance (EpaSpan { T17544.hs:53:1-8 }))
+        ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:53:18-22 }))]
         (NoAnnSortKey))
        (L
         (EpAnn
@@ -2908,11 +2532,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:53:10-12 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -2931,11 +2551,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544.hs:53:14-16 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -2959,12 +2575,8 @@
            []))
          (DataFamInstDecl
           (FamEqn
-           (EpAnn
-            (EpaSpan { T17544.hs:(54,3)-(55,20) })
-            [(AddEpAnn AnnData (EpaSpan { T17544.hs:54:3-6 }))
-            ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:54:16-20 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnData (EpaSpan { T17544.hs:54:3-6 }))
+           ,(AddEpAnn AnnWhere (EpaSpan { T17544.hs:54:16-20 }))]
            (L
             (EpAnn
              (EpaSpan { T17544.hs:54:8-10 })
@@ -2986,11 +2598,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T17544.hs:54:12-14 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -3021,11 +2629,7 @@
                  (EpUniTok
                   (EpaSpan { T17544.hs:55:11-12 })
                   (NormalSyntax))
-                 (EpAnn
-                  (EpaSpan { T17544.hs:55:5-20 })
-                  []
-                  (EpaComments
-                   [])))
+                 [])
                 (:|
                  (L
                   (EpAnn
@@ -3067,11 +2671,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:55:14-16 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -3090,11 +2690,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T17544.hs:55:18-20 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
diff --git a/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr b/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr
index 76bd8bb57985..4b58f6488448 100644
--- a/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr
+++ b/testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr
@@ -55,12 +55,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T17544_kw.hs:(15,1)-(16,20) })
-       [(AddEpAnn AnnData (EpaSpan { T17544_kw.hs:15:1-4 }))
-       ,(AddEpAnn AnnWhere (EpaSpan { T17544_kw.hs:16:3-7 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T17544_kw.hs:15:1-4 }))
+      ,(AddEpAnn AnnWhere (EpaSpan { T17544_kw.hs:16:3-7 }))]
       (L
        (EpAnn
         (EpaSpan { T17544_kw.hs:15:6-8 })
@@ -93,11 +89,7 @@
             (EpUniTok
              (EpaSpan { T17544_kw.hs:16:15-16 })
              (NormalSyntax))
-            (EpAnn
-             (EpaSpan { T17544_kw.hs:16:9-20 })
-             []
-             (EpaComments
-              [])))
+            [])
            (:|
             (L
              (EpAnn
@@ -130,11 +122,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544_kw.hs:16:18-20 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -169,12 +157,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T17544_kw.hs:(18,1)-(19,26) })
-       [(AddEpAnn AnnNewtype (EpaSpan { T17544_kw.hs:18:1-7 }))
-       ,(AddEpAnn AnnWhere (EpaSpan { T17544_kw.hs:19:3-7 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnNewtype (EpaSpan { T17544_kw.hs:18:1-7 }))
+      ,(AddEpAnn AnnWhere (EpaSpan { T17544_kw.hs:19:3-7 }))]
       (L
        (EpAnn
         (EpaSpan { T17544_kw.hs:18:9-11 })
@@ -206,11 +190,7 @@
            (EpUniTok
             (EpaSpan { T17544_kw.hs:19:15-16 })
             (NormalSyntax))
-           (EpAnn
-            (EpaSpan { T17544_kw.hs:19:9-26 })
-            []
-            (EpaComments
-             [])))
+           [])
           (:|
            (L
             (EpAnn
@@ -247,14 +227,10 @@
                (EpaComments
                 []))
               (HsTupleTy
-               (EpAnn
-                (EpaSpan { T17544_kw.hs:19:18-19 })
-                (AnnParen
-                 (AnnParens)
-                 (EpaSpan { T17544_kw.hs:19:18 })
-                 (EpaSpan { T17544_kw.hs:19:19 }))
-                (EpaComments
-                 []))
+               (AnnParen
+                (AnnParens)
+                (EpaSpan { T17544_kw.hs:19:18 })
+                (EpaSpan { T17544_kw.hs:19:19 }))
                (HsBoxedOrConstraintTuple)
                [])))])
           (L
@@ -265,11 +241,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { T17544_kw.hs:19:24-26 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -305,12 +277,8 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T17544_kw.hs:(21,1)-(24,18) })
-        [(AddEpAnn AnnClass (EpaSpan { T17544_kw.hs:21:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T17544_kw.hs:23:3-7 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T17544_kw.hs:21:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T17544_kw.hs:23:3-7 }))]
        (EpVirtualBraces
         (5))
        (NoAnnSortKey))
@@ -334,11 +302,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T17544_kw.hs:21:11 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -360,13 +324,9 @@
          (EpaComments
           []))
         (ClassOpSig
-         (EpAnn
-          (EpaSpan { T17544_kw.hs:24:5-18 })
-          (AnnSig
-           (AddEpAnn AnnDcolon (EpaSpan { T17544_kw.hs:24:15-16 }))
-           [])
-          (EpaComments
-           []))
+         (AnnSig
+          (AddEpAnn AnnDcolon (EpaSpan { T17544_kw.hs:24:15-16 }))
+          [])
          (False)
          [(L
            (EpAnn
@@ -396,11 +356,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T17544_kw.hs:24:18 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
diff --git a/testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr b/testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr
index 0ee892b06d89..1e0e33d80cff 100644
--- a/testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr
+++ b/testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr
@@ -43,12 +43,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T24221.hs:(3,1)-(9,15) })
-       [(AddEpAnn AnnData (EpaSpan { T24221.hs:3:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:5:3 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T24221.hs:3:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:5:3 }))]
       (L
        (EpAnn
         (EpaSpan { T24221.hs:3:6-9 })
@@ -78,11 +74,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T24221.hs:5:5-12 })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T24221.hs:5:5-8 })
@@ -110,11 +102,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { T24221.hs:5:10-12 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -147,11 +135,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T24221.hs:7:5-12 })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T24221.hs:7:5-8 })
@@ -179,11 +163,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { T24221.hs:7:10-12 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -215,11 +195,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T24221.hs:9:5-15 })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T24221.hs:9:9-10 })
@@ -246,11 +222,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T24221.hs:9:5-7 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -274,11 +246,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T24221.hs:9:12-15 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -313,12 +281,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T24221.hs:(11,1)-(12,13) })
-       [(AddEpAnn AnnData (EpaSpan { T24221.hs:11:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:11:11 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T24221.hs:11:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:11:11 }))]
       (L
        (EpAnn
         (EpaSpan { T24221.hs:11:6-9 })
@@ -347,11 +311,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T24221.hs:12:3-13 })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T24221.hs:12:7-8 })
@@ -378,11 +338,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T24221.hs:12:3-5 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -406,11 +362,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T24221.hs:12:10-13 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -445,12 +397,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T24221.hs:(14,1)-(17,6) })
-       [(AddEpAnn AnnData (EpaSpan { T24221.hs:14:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:14:11 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T24221.hs:14:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:14:11 }))]
       (L
        (EpAnn
         (EpaSpan { T24221.hs:14:6-9 })
@@ -479,11 +427,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T24221.hs:(15,3)-(17,6) })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T24221.hs:16:3-4 })
@@ -510,11 +454,7 @@
                (EpaComments
                 []))
               (HsDocTy
-               (EpAnn
-                (EpaDelta (SameLine 0) [])
-                []
-                (EpaComments
-                 []))
+               []
                (L
                 (EpAnn
                  (EpaSpan { T24221.hs:15:3-5 })
@@ -523,11 +463,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { T24221.hs:15:3-5 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -563,11 +499,7 @@
                (EpaComments
                 []))
               (HsDocTy
-               (EpAnn
-                (EpaDelta (SameLine 0) [])
-                []
-                (EpaComments
-                 []))
+               []
                (L
                 (EpAnn
                  (EpaSpan { T24221.hs:17:3-6 })
@@ -576,11 +508,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { T24221.hs:17:3-6 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -627,12 +555,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T24221.hs:(19,1)-(25,6) })
-       [(AddEpAnn AnnData (EpaSpan { T24221.hs:19:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:19:11 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T24221.hs:19:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:19:11 }))]
       (L
        (EpAnn
         (EpaSpan { T24221.hs:19:6-9 })
@@ -661,11 +585,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T24221.hs:(21,3)-(25,6) })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T24221.hs:23:3-4 })
@@ -692,11 +612,7 @@
                (EpaComments
                 []))
               (HsDocTy
-               (EpAnn
-                (EpaDelta (SameLine 0) [])
-                []
-                (EpaComments
-                 []))
+               []
                (L
                 (EpAnn
                  (EpaSpan { T24221.hs:21:3-5 })
@@ -705,11 +621,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { T24221.hs:21:3-5 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -745,11 +657,7 @@
                (EpaComments
                 []))
               (HsDocTy
-               (EpAnn
-                (EpaDelta (SameLine 0) [])
-                []
-                (EpaComments
-                 []))
+               []
                (L
                 (EpAnn
                  (EpaSpan { T24221.hs:25:3-6 })
@@ -758,11 +666,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { T24221.hs:25:3-6 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -809,12 +713,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T24221.hs:(27,1)-(29,22) })
-       [(AddEpAnn AnnData (EpaSpan { T24221.hs:27:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:27:11 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T24221.hs:27:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:27:11 }))]
       (L
        (EpAnn
         (EpaSpan { T24221.hs:27:6-9 })
@@ -843,11 +743,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T24221.hs:(28,3)-(29,22) })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T24221.hs:28:3-8 })
@@ -884,11 +780,7 @@
                 (EpaComments
                  []))
                (ConDeclField
-                (EpAnn
-                 (EpaSpan { T24221.hs:28:12-20 })
-                 [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:28:15-16 }))]
-                 (EpaComments
-                  []))
+                [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:28:15-16 }))]
                 [(L
                   (EpAnn
                    (EpaSpan { T24221.hs:28:12-13 })
@@ -915,11 +807,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { T24221.hs:28:18-20 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -951,11 +839,7 @@
                 (EpaComments
                  []))
                (ConDeclField
-                (EpAnn
-                 (EpaSpan { T24221.hs:29:12-20 })
-                 [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:29:15-16 }))]
-                 (EpaComments
-                  []))
+                [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:29:15-16 }))]
                 [(L
                   (EpAnn
                    (EpaSpan { T24221.hs:29:12-13 })
@@ -982,11 +866,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { T24221.hs:29:18-20 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1022,12 +902,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T24221.hs:(31,1)-(34,17) })
-       [(AddEpAnn AnnData (EpaSpan { T24221.hs:31:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:31:11 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T24221.hs:31:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:31:11 }))]
       (L
        (EpAnn
         (EpaSpan { T24221.hs:31:6-9 })
@@ -1056,11 +932,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T24221.hs:(32,3)-(34,17) })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T24221.hs:32:3-8 })
@@ -1097,11 +969,7 @@
                 (EpaComments
                  []))
                (ConDeclField
-                (EpAnn
-                 (EpaSpan { T24221.hs:33:7-15 })
-                 [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:33:10-11 }))]
-                 (EpaComments
-                  []))
+                [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:33:10-11 }))]
                 [(L
                   (EpAnn
                    (EpaSpan { T24221.hs:33:7-8 })
@@ -1128,11 +996,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { T24221.hs:33:13-15 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1164,11 +1028,7 @@
                 (EpaComments
                  []))
                (ConDeclField
-                (EpAnn
-                 (EpaSpan { T24221.hs:34:7-15 })
-                 [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:34:10-11 }))]
-                 (EpaComments
-                  []))
+                [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:34:10-11 }))]
                 [(L
                   (EpAnn
                    (EpaSpan { T24221.hs:34:7-8 })
@@ -1195,11 +1055,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { T24221.hs:34:13-15 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1247,12 +1103,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T24221.hs:(36,1)-(43,3) })
-       [(AddEpAnn AnnData (EpaSpan { T24221.hs:36:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:36:11 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T24221.hs:36:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { T24221.hs:36:11 }))]
       (L
        (EpAnn
         (EpaSpan { T24221.hs:36:6-9 })
@@ -1281,11 +1133,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T24221.hs:(38,3)-(43,3) })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T24221.hs:38:3-8 })
@@ -1322,11 +1170,7 @@
                 (EpaComments
                  []))
                (ConDeclField
-                (EpAnn
-                 (EpaSpan { T24221.hs:40:5-13 })
-                 [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:40:8-9 }))]
-                 (EpaComments
-                  []))
+                [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:40:8-9 }))]
                 [(L
                   (EpAnn
                    (EpaSpan { T24221.hs:40:5-6 })
@@ -1353,11 +1197,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { T24221.hs:40:11-13 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1389,11 +1229,7 @@
                 (EpaComments
                  []))
                (ConDeclField
-                (EpAnn
-                 (EpaSpan { T24221.hs:42:5-13 })
-                 [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:42:8-9 }))]
-                 (EpaComments
-                  []))
+                [(AddEpAnn AnnDcolon (EpaSpan { T24221.hs:42:8-9 }))]
                 [(L
                   (EpAnn
                    (EpaSpan { T24221.hs:42:5-6 })
@@ -1420,11 +1256,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { T24221.hs:42:11-13 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
diff --git a/testsuite/tests/module/mod185.stderr b/testsuite/tests/module/mod185.stderr
index ea36d59b7027..038059ad34b1 100644
--- a/testsuite/tests/module/mod185.stderr
+++ b/testsuite/tests/module/mod185.stderr
@@ -101,11 +101,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { mod185.hs:5:1-24 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
diff --git a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
index 5fc349913805..a4b04cd55998 100644
--- a/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
+++ b/testsuite/tests/parser/should_compile/DumpParsedAst.stderr
@@ -78,12 +78,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { DumpParsedAst.hs:7:1-30 })
-       [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:7:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:7:12 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:7:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:7:12 }))]
       (L
        (EpAnn
         (EpaSpan { DumpParsedAst.hs:7:6-10 })
@@ -113,11 +109,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:7:14-17 })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { DumpParsedAst.hs:7:14-17 })
@@ -142,11 +134,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:7:21-30 })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { DumpParsedAst.hs:7:21-24 })
@@ -174,11 +162,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:7:26-30 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -201,12 +185,8 @@
     (KindSigD
      (NoExtField)
      (StandaloneKindSig
-      (EpAnn
-       (EpaSpan { DumpParsedAst.hs:9:1-27 })
-       [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:9:1-4 }))
-       ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:9:13-14 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:9:1-4 }))
+      ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:9:13-14 }))]
       (L
        (EpAnn
         (EpaSpan { DumpParsedAst.hs:9:6-11 })
@@ -235,11 +215,7 @@
           (EpaComments
            []))
          (HsFunTy
-          (EpAnn
-           (EpaSpan { DumpParsedAst.hs:9:16-27 })
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           (HsUnrestrictedArrow
            (EpUniTok
             (EpaSpan { DumpParsedAst.hs:9:20-21 })
@@ -252,14 +228,10 @@
             (EpaComments
              []))
            (HsListTy
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:9:16-18 })
-             (AnnParen
-              (AnnParensSquare)
-              (EpaSpan { DumpParsedAst.hs:9:16 })
-              (EpaSpan { DumpParsedAst.hs:9:18 }))
-             (EpaComments
-              []))
+            (AnnParen
+             (AnnParensSquare)
+             (EpaSpan { DumpParsedAst.hs:9:16 })
+             (EpaSpan { DumpParsedAst.hs:9:18 }))
             (L
              (EpAnn
               (EpaSpan { DumpParsedAst.hs:9:17 })
@@ -268,11 +240,7 @@
               (EpaComments
                []))
              (HsTyVar
-              (EpAnn
-               (EpaSpan { DumpParsedAst.hs:9:17 })
-               []
-               (EpaComments
-                []))
+              []
               (NotPromoted)
               (L
                (EpAnn
@@ -291,11 +259,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:9:23-27 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -318,14 +282,10 @@
      (FamDecl
       (NoExtField)
       (FamilyDecl
-       (EpAnn
-        (EpaSpan { DumpParsedAst.hs:(10,1)-(12,24) })
-        [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:10:1-4 }))
-        ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:10:6-11 }))
-        ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:10:32-33 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:10:41-45 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:10:1-4 }))
+       ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:10:6-11 }))
+       ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:10:32-33 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:10:41-45 }))]
        (ClosedTypeFamily
         (Just
          [(L
@@ -336,11 +296,7 @@
             (EpaComments
              []))
            (FamEqn
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:11:3-36 })
-             [(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:11:19 }))]
-             (EpaComments
-              []))
+            [(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:11:19 }))]
             (L
              (EpAnn
               (EpaSpan { DumpParsedAst.hs:11:3-8 })
@@ -362,14 +318,10 @@
                 (EpaComments
                  []))
                (HsParTy
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:11:10-17 })
-                 (AnnParen
-                  (AnnParens)
-                  (EpaSpan { DumpParsedAst.hs:11:10 })
-                  (EpaSpan { DumpParsedAst.hs:11:17 }))
-                 (EpaComments
-                  []))
+                (AnnParen
+                 (AnnParens)
+                 (EpaSpan { DumpParsedAst.hs:11:10 })
+                 (EpaSpan { DumpParsedAst.hs:11:17 }))
                 (L
                  (EpAnn
                   (EpaSpan { DumpParsedAst.hs:11:11-16 })
@@ -378,11 +330,7 @@
                   (EpaComments
                    []))
                  (HsOpTy
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -392,11 +340,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { DumpParsedAst.hs:11:11 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -424,11 +368,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { DumpParsedAst.hs:11:15-16 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -457,11 +397,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:11:21-24 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -480,14 +416,10 @@
                 (EpaComments
                  []))
                (HsParTy
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:11:26-36 })
-                 (AnnParen
-                  (AnnParens)
-                  (EpaSpan { DumpParsedAst.hs:11:26 })
-                  (EpaSpan { DumpParsedAst.hs:11:36 }))
-                 (EpaComments
-                  []))
+                (AnnParen
+                 (AnnParens)
+                 (EpaSpan { DumpParsedAst.hs:11:26 })
+                 (EpaSpan { DumpParsedAst.hs:11:36 }))
                 (L
                  (EpAnn
                   (EpaSpan { DumpParsedAst.hs:11:27-35 })
@@ -505,11 +437,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { DumpParsedAst.hs:11:27-32 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -528,11 +456,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { DumpParsedAst.hs:11:34-35 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -551,11 +475,7 @@
             (EpaComments
              []))
            (FamEqn
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:12:3-24 })
-             [(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:12:19 }))]
-             (EpaComments
-              []))
+            [(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:12:19 }))]
             (L
              (EpAnn
               (EpaSpan { DumpParsedAst.hs:12:3-8 })
@@ -577,13 +497,9 @@
                 (EpaComments
                  []))
                (HsExplicitListTy
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:12:10-12 })
-                 [(AddEpAnn AnnSimpleQuote (EpaSpan { DumpParsedAst.hs:12:10 }))
-                 ,(AddEpAnn AnnOpenS (EpaSpan { DumpParsedAst.hs:12:11 }))
-                 ,(AddEpAnn AnnCloseS (EpaSpan { DumpParsedAst.hs:12:12 }))]
-                 (EpaComments
-                  []))
+                [(AddEpAnn AnnSimpleQuote (EpaSpan { DumpParsedAst.hs:12:10 }))
+                ,(AddEpAnn AnnOpenS (EpaSpan { DumpParsedAst.hs:12:11 }))
+                ,(AddEpAnn AnnCloseS (EpaSpan { DumpParsedAst.hs:12:12 }))]
                 (IsPromoted)
                 [])))]
             (Prefix)
@@ -595,11 +511,7 @@
               (EpaComments
                []))
              (HsTyVar
-              (EpAnn
-               (EpaSpan { DumpParsedAst.hs:12:21-24 })
-               []
-               (EpaComments
-                []))
+              []
               (NotPromoted)
               (L
                (EpAnn
@@ -630,13 +542,9 @@
            (EpaComments
             []))
           (KindedTyVar
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:10:20-30 })
-            [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:10:24-25 }))
-            ,(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:10:20 }))
-            ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:10:30 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:10:20 }))
+           ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:10:30 }))
+           ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:10:24-25 }))]
            (HsBndrRequired
             (NoExtField))
            (L
@@ -656,14 +564,10 @@
              (EpaComments
               []))
             (HsListTy
-             (EpAnn
-              (EpaSpan { DumpParsedAst.hs:10:27-29 })
-              (AnnParen
-               (AnnParensSquare)
-               (EpaSpan { DumpParsedAst.hs:10:27 })
-               (EpaSpan { DumpParsedAst.hs:10:29 }))
-              (EpaComments
-               []))
+             (AnnParen
+              (AnnParensSquare)
+              (EpaSpan { DumpParsedAst.hs:10:27 })
+              (EpaSpan { DumpParsedAst.hs:10:29 }))
              (L
               (EpAnn
                (EpaSpan { DumpParsedAst.hs:10:28 })
@@ -672,11 +576,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { DumpParsedAst.hs:10:28 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -704,11 +604,7 @@
            (EpaComments
             []))
           (HsTyVar
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:10:35-39 })
-            []
-            (EpaComments
-             []))
+           []
            (NotPromoted)
            (L
             (EpAnn
@@ -730,12 +626,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { DumpParsedAst.hs:15:1-29 })
-       [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:15:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:15:19 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:15:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:15:19 }))]
       (L
        (EpAnn
         (EpaSpan { DumpParsedAst.hs:15:6 })
@@ -755,11 +647,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { DumpParsedAst.hs:15:8 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -779,13 +667,9 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { DumpParsedAst.hs:15:10-17 })
-           [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:15:13-14 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:15:10 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:15:17 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:15:10 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:15:17 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:15:13-14 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -805,11 +689,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:15:16 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -836,11 +716,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:15:21-29 })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { DumpParsedAst.hs:15:21-23 })
@@ -868,14 +744,10 @@
                 (EpaComments
                  []))
                (HsParTy
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:15:25-29 })
-                 (AnnParen
-                  (AnnParens)
-                  (EpaSpan { DumpParsedAst.hs:15:25 })
-                  (EpaSpan { DumpParsedAst.hs:15:29 }))
-                 (EpaComments
-                  []))
+                (AnnParen
+                 (AnnParens)
+                 (EpaSpan { DumpParsedAst.hs:15:25 })
+                 (EpaSpan { DumpParsedAst.hs:15:29 }))
                 (L
                  (EpAnn
                   (EpaSpan { DumpParsedAst.hs:15:26-28 })
@@ -893,11 +765,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { DumpParsedAst.hs:15:26 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -916,11 +784,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { DumpParsedAst.hs:15:28 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -943,12 +807,8 @@
     (KindSigD
      (NoExtField)
      (StandaloneKindSig
-      (EpAnn
-       (EpaSpan { DumpParsedAst.hs:17:1-35 })
-       [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:17:1-4 }))
-       ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:17:9-10 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:17:1-4 }))
+      ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:17:9-10 }))]
       (L
        (EpAnn
         (EpaSpan { DumpParsedAst.hs:17:6-7 })
@@ -977,11 +837,7 @@
           (EpaComments
            []))
          (HsFunTy
-          (EpAnn
-           (EpaSpan { DumpParsedAst.hs:17:12-35 })
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           (HsUnrestrictedArrow
            (EpUniTok
             (EpaSpan { DumpParsedAst.hs:17:14-15 })
@@ -994,11 +850,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:17:12 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -1017,11 +869,7 @@
             (EpaComments
              []))
            (HsFunTy
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:17:17-35 })
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (HsUnrestrictedArrow
              (EpUniTok
               (EpaSpan { DumpParsedAst.hs:17:29-30 })
@@ -1034,14 +882,10 @@
               (EpaComments
                []))
              (HsParTy
-              (EpAnn
-               (EpaSpan { DumpParsedAst.hs:17:17-27 })
-               (AnnParen
-                (AnnParens)
-                (EpaSpan { DumpParsedAst.hs:17:17 })
-                (EpaSpan { DumpParsedAst.hs:17:27 }))
-               (EpaComments
-                []))
+              (AnnParen
+               (AnnParens)
+               (EpaSpan { DumpParsedAst.hs:17:17 })
+               (EpaSpan { DumpParsedAst.hs:17:27 }))
               (L
                (EpAnn
                 (EpaSpan { DumpParsedAst.hs:17:18-26 })
@@ -1050,11 +894,7 @@
                 (EpaComments
                  []))
                (HsFunTy
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:17:18-26 })
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (HsUnrestrictedArrow
                  (EpUniTok
                   (EpaSpan { DumpParsedAst.hs:17:20-21 })
@@ -1067,11 +907,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { DumpParsedAst.hs:17:18 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1090,11 +926,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { DumpParsedAst.hs:17:23-26 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1113,11 +945,7 @@
               (EpaComments
                []))
              (HsTyVar
-              (EpAnn
-               (EpaSpan { DumpParsedAst.hs:17:32-35 })
-               []
-               (EpaComments
-                []))
+              []
               (NotPromoted)
               (L
                (EpAnn
@@ -1140,14 +968,10 @@
      (FamDecl
       (NoExtField)
       (FamilyDecl
-       (EpAnn
-        (EpaSpan { DumpParsedAst.hs:(18,1)-(19,30) })
-        [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:18:1-4 }))
-        ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:18:6-11 }))
-        ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:18:42-43 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:18:50-54 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnType (EpaSpan { DumpParsedAst.hs:18:1-4 }))
+       ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:18:6-11 }))
+       ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:18:42-43 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:18:50-54 }))]
        (ClosedTypeFamily
         (Just
          [(L
@@ -1158,11 +982,7 @@
             (EpaComments
              []))
            (FamEqn
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:19:3-30 })
-             [(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:19:17 }))]
-             (EpaComments
-              []))
+            [(AddEpAnn AnnEqual (EpaSpan { DumpParsedAst.hs:19:17 }))]
             (L
              (EpAnn
               (EpaSpan { DumpParsedAst.hs:19:3-4 })
@@ -1185,11 +1005,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:19:7-11 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -1210,11 +1026,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:19:13 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -1235,11 +1047,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:19:15 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -1287,11 +1095,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { DumpParsedAst.hs:19:19 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1310,11 +1114,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { DumpParsedAst.hs:19:22-26 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1333,11 +1133,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { DumpParsedAst.hs:19:28 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1356,11 +1152,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:19:30 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -1391,13 +1183,9 @@
            (EpaComments
             []))
           (KindedTyVar
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:18:16-23 })
-            [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:18:19-20 }))
-            ,(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:18:16 }))
-            ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:18:23 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:18:16 }))
+           ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:18:23 }))
+           ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:18:19-20 }))]
            (HsBndrRequired
             (NoExtField))
            (L
@@ -1417,11 +1205,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { DumpParsedAst.hs:18:22 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1440,13 +1224,9 @@
            (EpaComments
             []))
           (KindedTyVar
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:18:25-40 })
-            [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:18:28-29 }))
-            ,(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:18:25 }))
-            ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:18:40 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnOpenP (EpaSpan { DumpParsedAst.hs:18:25 }))
+           ,(AddEpAnn AnnCloseP (EpaSpan { DumpParsedAst.hs:18:40 }))
+           ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:18:28-29 }))]
            (HsBndrRequired
             (NoExtField))
            (L
@@ -1466,11 +1246,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { DumpParsedAst.hs:18:31-39 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { DumpParsedAst.hs:18:33-34 })
@@ -1483,11 +1259,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { DumpParsedAst.hs:18:31 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1506,11 +1278,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { DumpParsedAst.hs:18:36-39 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1538,11 +1306,7 @@
            (EpaComments
             []))
           (HsTyVar
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:18:45-48 })
-            []
-            (EpaComments
-             []))
+           []
            (NotPromoted)
            (L
             (EpAnn
@@ -1566,13 +1330,9 @@
      (FamDecl
       (NoExtField)
       (FamilyDecl
-       (EpAnn
-        (EpaSpan { DumpParsedAst.hs:21:1-33 })
-        [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:21:1-4 }))
-        ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:21:6-11 }))
-        ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:21:17-18 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnData (EpaSpan { DumpParsedAst.hs:21:1-4 }))
+       ,(AddEpAnn AnnFamily (EpaSpan { DumpParsedAst.hs:21:6-11 }))
+       ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:21:17-18 }))]
        (DataFamily)
        (TopLevel)
        (L
@@ -1604,11 +1364,7 @@
            (EpaComments
             []))
           (HsFunTy
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:21:20-33 })
-            (NoEpAnns)
-            (EpaComments
-             []))
+           (NoExtField)
            (HsUnrestrictedArrow
             (EpUniTok
              (EpaSpan { DumpParsedAst.hs:21:22-23 })
@@ -1621,11 +1377,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { DumpParsedAst.hs:21:20 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1644,11 +1396,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { DumpParsedAst.hs:21:25-33 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { DumpParsedAst.hs:21:27-28 })
@@ -1661,11 +1409,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { DumpParsedAst.hs:21:25 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1684,11 +1428,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { DumpParsedAst.hs:21:30-33 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1713,14 +1453,10 @@
       (NoExtField)
       (DataFamInstDecl
        (FamEqn
-        (EpAnn
-         (EpaSpan { DumpParsedAst.hs:(22,1)-(23,45) })
-         [(AddEpAnn AnnNewtype (EpaSpan { DumpParsedAst.hs:22:1-7 }))
-         ,(AddEpAnn AnnInstance (EpaSpan { DumpParsedAst.hs:22:9-16 }))
-         ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:22:39-40 }))
-         ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:22:62-66 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnNewtype (EpaSpan { DumpParsedAst.hs:22:1-7 }))
+        ,(AddEpAnn AnnInstance (EpaSpan { DumpParsedAst.hs:22:9-16 }))
+        ,(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:22:39-40 }))
+        ,(AddEpAnn AnnWhere (EpaSpan { DumpParsedAst.hs:22:62-66 }))]
         (L
          (EpAnn
           (EpaSpan { DumpParsedAst.hs:22:18-20 })
@@ -1742,14 +1478,10 @@
             (EpaComments
              []))
            (HsParTy
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:22:22-37 })
-             (AnnParen
-              (AnnParens)
-              (EpaSpan { DumpParsedAst.hs:22:22 })
-              (EpaSpan { DumpParsedAst.hs:22:37 }))
-             (EpaComments
-              []))
+            (AnnParen
+             (AnnParens)
+             (EpaSpan { DumpParsedAst.hs:22:22 })
+             (EpaSpan { DumpParsedAst.hs:22:37 }))
             (L
              (EpAnn
               (EpaSpan { DumpParsedAst.hs:22:23-36 })
@@ -1758,11 +1490,7 @@
               (EpaComments
                []))
              (HsKindSig
-              (EpAnn
-               (EpaSpan { DumpParsedAst.hs:22:23-36 })
-               [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:22:25-26 }))]
-               (EpaComments
-                []))
+              [(AddEpAnn AnnDcolon (EpaSpan { DumpParsedAst.hs:22:25-26 }))]
               (L
                (EpAnn
                 (EpaSpan { DumpParsedAst.hs:22:23 })
@@ -1771,11 +1499,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:22:23 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -1794,11 +1518,7 @@
                 (EpaComments
                  []))
                (HsFunTy
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:22:28-36 })
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (HsUnrestrictedArrow
                  (EpUniTok
                   (EpaSpan { DumpParsedAst.hs:22:30-31 })
@@ -1811,11 +1531,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { DumpParsedAst.hs:22:28 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1834,11 +1550,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { DumpParsedAst.hs:22:33-36 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1863,11 +1575,7 @@
             (EpaComments
              []))
            (HsFunTy
-            (EpAnn
-             (EpaSpan { DumpParsedAst.hs:22:42-60 })
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (HsUnrestrictedArrow
              (EpUniTok
               (EpaSpan { DumpParsedAst.hs:22:54-55 })
@@ -1880,14 +1588,10 @@
               (EpaComments
                []))
              (HsParTy
-              (EpAnn
-               (EpaSpan { DumpParsedAst.hs:22:42-52 })
-               (AnnParen
-                (AnnParens)
-                (EpaSpan { DumpParsedAst.hs:22:42 })
-                (EpaSpan { DumpParsedAst.hs:22:52 }))
-               (EpaComments
-                []))
+              (AnnParen
+               (AnnParens)
+               (EpaSpan { DumpParsedAst.hs:22:42 })
+               (EpaSpan { DumpParsedAst.hs:22:52 }))
               (L
                (EpAnn
                 (EpaSpan { DumpParsedAst.hs:22:43-51 })
@@ -1896,11 +1600,7 @@
                 (EpaComments
                  []))
                (HsFunTy
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:22:43-51 })
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (HsUnrestrictedArrow
                  (EpUniTok
                   (EpaSpan { DumpParsedAst.hs:22:45-46 })
@@ -1913,11 +1613,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { DumpParsedAst.hs:22:43 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1936,11 +1632,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { DumpParsedAst.hs:22:48-51 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1959,11 +1651,7 @@
               (EpaComments
                []))
              (HsTyVar
-              (EpAnn
-               (EpaSpan { DumpParsedAst.hs:22:57-60 })
-               []
-               (EpaComments
-                []))
+              []
               (NotPromoted)
               (L
                (EpAnn
@@ -1987,11 +1675,7 @@
              (EpUniTok
               (EpaSpan { DumpParsedAst.hs:23:7-8 })
               (NormalSyntax))
-             (EpAnn
-              (EpaSpan { DumpParsedAst.hs:23:3-45 })
-              []
-              (EpaComments
-               [])))
+             [])
             (:|
              (L
               (EpAnn
@@ -2028,14 +1712,10 @@
                  (EpaComments
                   []))
                 (HsParTy
-                 (EpAnn
-                  (EpaSpan { DumpParsedAst.hs:23:10-34 })
-                  (AnnParen
-                   (AnnParens)
-                   (EpaSpan { DumpParsedAst.hs:23:10 })
-                   (EpaSpan { DumpParsedAst.hs:23:34 }))
-                  (EpaComments
-                   []))
+                 (AnnParen
+                  (AnnParens)
+                  (EpaSpan { DumpParsedAst.hs:23:10 })
+                  (EpaSpan { DumpParsedAst.hs:23:34 }))
                  (L
                   (EpAnn
                    (EpaSpan { DumpParsedAst.hs:23:11-33 })
@@ -2061,11 +1741,7 @@
                        (EpaComments
                         []))
                       (UserTyVar
-                       (EpAnn
-                        (EpaSpan { DumpParsedAst.hs:23:18-19 })
-                        []
-                        (EpaComments
-                         []))
+                       []
                        (SpecifiedSpec)
                        (L
                         (EpAnn
@@ -2084,11 +1760,7 @@
                      (EpaComments
                       []))
                     (HsFunTy
-                     (EpAnn
-                      (EpaSpan { DumpParsedAst.hs:23:22-33 })
-                      (NoEpAnns)
-                      (EpaComments
-                       []))
+                     (NoExtField)
                      (HsUnrestrictedArrow
                       (EpUniTok
                        (EpaSpan { DumpParsedAst.hs:23:27-28 })
@@ -2110,11 +1782,7 @@
                          (EpaComments
                           []))
                         (HsTyVar
-                         (EpAnn
-                          (EpaSpan { DumpParsedAst.hs:23:22 })
-                          []
-                          (EpaComments
-                           []))
+                         []
                          (NotPromoted)
                          (L
                           (EpAnn
@@ -2133,11 +1801,7 @@
                          (EpaComments
                           []))
                         (HsTyVar
-                         (EpAnn
-                          (EpaSpan { DumpParsedAst.hs:23:24-25 })
-                          []
-                          (EpaComments
-                           []))
+                         []
                          (NotPromoted)
                          (L
                           (EpAnn
@@ -2165,11 +1829,7 @@
                          (EpaComments
                           []))
                         (HsTyVar
-                         (EpAnn
-                          (EpaSpan { DumpParsedAst.hs:23:30 })
-                          []
-                          (EpaComments
-                           []))
+                         []
                          (NotPromoted)
                          (L
                           (EpAnn
@@ -2188,11 +1848,7 @@
                          (EpaComments
                           []))
                         (HsTyVar
-                         (EpAnn
-                          (EpaSpan { DumpParsedAst.hs:23:32-33 })
-                          []
-                          (EpaComments
-                           []))
+                         []
                          (NotPromoted)
                          (L
                           (EpAnn
@@ -2229,11 +1885,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { DumpParsedAst.hs:23:39-41 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -2252,11 +1904,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaSpan { DumpParsedAst.hs:23:43 })
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -2275,11 +1923,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { DumpParsedAst.hs:23:45 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -2333,11 +1977,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpParsedAst.hs:25:1-23 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -2377,11 +2017,7 @@
                  (EpaComments
                   []))
                 (HsApp
-                 (EpAnn
-                  (EpaSpan { DumpParsedAst.hs:25:8-23 })
-                  (NoEpAnns)
-                  (EpaComments
-                   []))
+                 (NoExtField)
                  (L
                   (EpAnn
                    (EpaSpan { DumpParsedAst.hs:25:8-15 })
@@ -2408,11 +2044,7 @@
                    (EpaComments
                     []))
                   (HsLit
-                   (EpAnn
-                    (EpaSpan { DumpParsedAst.hs:25:17-23 })
-                    (NoEpAnns)
-                    (EpaComments
-                     []))
+                   (NoExtField)
                    (HsString
                     (SourceText "hello")
                     {FastString: "hello"})))))))]
diff --git a/testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr b/testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr
index c96f2d5f06e4..ea80dcd38071 100644
--- a/testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr
+++ b/testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr
@@ -101,11 +101,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpParsedAstComments.hs:9:1-7 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -145,11 +141,7 @@
                  (EpaComments
                   []))
                 (HsOverLit
-                 (EpAnn
-                  (EpaSpan { DumpParsedAstComments.hs:9:7 })
-                  (NoEpAnns)
-                  (EpaComments
-                   []))
+                 (NoExtField)
                  (OverLit
                   (NoExtField)
                   (HsIntegral
@@ -220,11 +212,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpParsedAstComments.hs:(14,1)-(16,3) })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -262,25 +250,21 @@
                  (AnnListItem
                   [])
                  (EpaComments
-                  []))
+                  [(L
+                    (EpaSpan
+                     { DumpParsedAstComments.hs:15:3-19 })
+                    (EpaComment
+                     (EpaLineComment
+                      "-- normal comment")
+                     { DumpParsedAstComments.hs:14:7-8 }))]))
                 (HsDo
-                 (EpAnn
-                  (EpaSpan { DumpParsedAstComments.hs:(14,7)-(16,3) })
-                  (AnnList
-                   (Just
-                    (EpaSpan { DumpParsedAstComments.hs:16:3 }))
-                   (Nothing)
-                   (Nothing)
-                   [(AddEpAnn AnnDo (EpaSpan { DumpParsedAstComments.hs:14:7-8 }))]
-                   [])
-                  (EpaComments
-                   [(L
-                     (EpaSpan
-                      { DumpParsedAstComments.hs:15:3-19 })
-                     (EpaComment
-                      (EpaLineComment
-                       "-- normal comment")
-                      { DumpParsedAstComments.hs:14:7-8 }))]))
+                 (AnnList
+                  (Just
+                   (EpaSpan { DumpParsedAstComments.hs:16:3 }))
+                  (Nothing)
+                  (Nothing)
+                  [(AddEpAnn AnnDo (EpaSpan { DumpParsedAstComments.hs:14:7-8 }))]
+                  [])
                  (DoExpr
                   (Nothing))
                  (L
@@ -312,11 +296,7 @@
                        (EpaComments
                         []))
                       (HsOverLit
-                       (EpAnn
-                        (EpaSpan { DumpParsedAstComments.hs:16:3 })
-                        (NoEpAnns)
-                        (EpaComments
-                         []))
+                       (NoExtField)
                        (OverLit
                         (NoExtField)
                         (HsIntegral
@@ -375,11 +355,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpParsedAstComments.hs:19:1-23 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -419,11 +395,7 @@
                  (EpaComments
                   []))
                 (HsApp
-                 (EpAnn
-                  (EpaSpan { DumpParsedAstComments.hs:19:8-23 })
-                  (NoEpAnns)
-                  (EpaComments
-                   []))
+                 (NoExtField)
                  (L
                   (EpAnn
                    (EpaSpan { DumpParsedAstComments.hs:19:8-15 })
@@ -450,11 +422,7 @@
                    (EpaComments
                     []))
                   (HsLit
-                   (EpAnn
-                    (EpaSpan { DumpParsedAstComments.hs:19:17-23 })
-                    (NoEpAnns)
-                    (EpaComments
-                     []))
+                   (NoExtField)
                    (HsString
                     (SourceText "hello")
                     {FastString: "hello"})))))))]
diff --git a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
index 224d5445cef3..87d8cd20e349 100644
--- a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
+++ b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr
@@ -49,11 +49,7 @@
                 (EpaComments
                  []))
                (Match
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 []
-                 (EpaComments
-                  []))
+                []
                 (FunRhs
                  (L
                   (EpAnn
@@ -92,11 +88,7 @@
                       (EpaComments
                        []))
                      (HsApp
-                      (EpAnn
-                       (EpaSpan { DumpRenamedAst.hs:35:8-23 })
-                       (NoEpAnns)
-                       (EpaComments
-                        []))
+                      (NoExtField)
                       (L
                        (EpAnn
                         (EpaSpan { DumpRenamedAst.hs:35:8-15 })
@@ -122,11 +114,7 @@
                         (EpaComments
                          []))
                        (HsLit
-                        (EpAnn
-                         (EpaSpan { DumpRenamedAst.hs:35:17-23 })
-                         (NoEpAnns)
-                         (EpaComments
-                          []))
+                        (NoExtField)
                         (HsString
                          (SourceText "hello")
                          {FastString: "hello"})))))))]
@@ -225,11 +213,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -256,11 +240,7 @@
        (FamDecl
         (NoExtField)
         (FamilyDecl
-         (EpAnn
-          (EpaDelta (SameLine 0) [])
-          []
-          (EpaComments
-           []))
+         []
          (ClosedTypeFamily
           (Just
            [(L
@@ -271,11 +251,7 @@
               (EpaComments
                []))
              (FamEqn
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               []
-               (EpaComments
-                []))
+              []
               (L
                (EpAnn
                 (EpaSpan { DumpRenamedAst.hs:13:3-8 })
@@ -297,14 +273,10 @@
                   (EpaComments
                    []))
                  (HsParTy
-                  (EpAnn
+                  (AnnParen
+                   (AnnParens)
                    (EpaDelta (SameLine 0) [])
-                   (AnnParen
-                    (AnnParens)
-                    (EpaDelta (SameLine 0) [])
-                    (EpaDelta (SameLine 0) []))
-                   (EpaComments
-                    []))
+                   (EpaDelta (SameLine 0) []))
                   (L
                    (EpAnn
                     (EpaSpan { DumpRenamedAst.hs:13:11-16 })
@@ -313,11 +285,7 @@
                     (EpaComments
                      []))
                    (HsOpTy
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -327,11 +295,7 @@
                       (EpaComments
                        []))
                      (HsTyVar
-                      (EpAnn
-                       (EpaDelta (SameLine 0) [])
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (NotPromoted)
                       (L
                        (EpAnn
@@ -357,11 +321,7 @@
                       (EpaComments
                        []))
                      (HsTyVar
-                      (EpAnn
-                       (EpaDelta (SameLine 0) [])
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (NotPromoted)
                       (L
                        (EpAnn
@@ -389,11 +349,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -411,14 +367,10 @@
                   (EpaComments
                    []))
                  (HsParTy
-                  (EpAnn
+                  (AnnParen
+                   (AnnParens)
                    (EpaDelta (SameLine 0) [])
-                   (AnnParen
-                    (AnnParens)
-                    (EpaDelta (SameLine 0) [])
-                    (EpaDelta (SameLine 0) []))
-                   (EpaComments
-                    []))
+                   (EpaDelta (SameLine 0) []))
                   (L
                    (EpAnn
                     (EpaSpan { DumpRenamedAst.hs:13:27-35 })
@@ -436,11 +388,7 @@
                       (EpaComments
                        []))
                      (HsTyVar
-                      (EpAnn
-                       (EpaDelta (SameLine 0) [])
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (NotPromoted)
                       (L
                        (EpAnn
@@ -458,11 +406,7 @@
                       (EpaComments
                        []))
                      (HsTyVar
-                      (EpAnn
-                       (EpaDelta (SameLine 0) [])
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (NotPromoted)
                       (L
                        (EpAnn
@@ -480,11 +424,7 @@
               (EpaComments
                []))
              (FamEqn
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               []
-               (EpaComments
-                []))
+              []
               (L
                (EpAnn
                 (EpaSpan { DumpRenamedAst.hs:14:3-8 })
@@ -517,11 +457,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -550,13 +486,9 @@
              (EpaComments
               []))
             (KindedTyVar
-             (EpAnn
-              (EpaSpan { DumpRenamedAst.hs:12:20-30 })
-              [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:12:24-25 }))
-              ,(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:12:20 }))
-              ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:12:30 }))]
-              (EpaComments
-               []))
+             [(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:12:20 }))
+             ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:12:30 }))
+             ,(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:12:24-25 }))]
              (HsBndrRequired
               (NoExtField))
              (L
@@ -575,14 +507,10 @@
                (EpaComments
                 []))
               (HsListTy
-               (EpAnn
-                (EpaSpan { DumpRenamedAst.hs:12:27-29 })
-                (AnnParen
-                 (AnnParensSquare)
-                 (EpaSpan { DumpRenamedAst.hs:12:27 })
-                 (EpaSpan { DumpRenamedAst.hs:12:29 }))
-                (EpaComments
-                 []))
+               (AnnParen
+                (AnnParensSquare)
+                (EpaSpan { DumpRenamedAst.hs:12:27 })
+                (EpaSpan { DumpRenamedAst.hs:12:29 }))
                (L
                 (EpAnn
                  (EpaSpan { DumpRenamedAst.hs:12:28 })
@@ -591,11 +519,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaDelta (SameLine 0) [])
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -622,11 +546,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaDelta (SameLine 0) [])
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -674,11 +594,7 @@
             (EpaComments
              []))
            (HsFunTy
-            (EpAnn
-             (EpaSpan { DumpRenamedAst.hs:11:16-27 })
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (HsUnrestrictedArrow
              (NoExtField))
             (L
@@ -689,14 +605,10 @@
               (EpaComments
                []))
              (HsListTy
-              (EpAnn
-               (EpaSpan { DumpRenamedAst.hs:11:16-18 })
-               (AnnParen
-                (AnnParensSquare)
-                (EpaSpan { DumpRenamedAst.hs:11:16 })
-                (EpaSpan { DumpRenamedAst.hs:11:18 }))
-               (EpaComments
-                []))
+              (AnnParen
+               (AnnParensSquare)
+               (EpaSpan { DumpRenamedAst.hs:11:16 })
+               (EpaSpan { DumpRenamedAst.hs:11:18 }))
               (L
                (EpAnn
                 (EpaSpan { DumpRenamedAst.hs:11:17 })
@@ -705,11 +617,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -727,11 +635,7 @@
               (EpaComments
                []))
              (HsTyVar
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               []
-               (EpaComments
-                []))
+              []
               (NotPromoted)
               (L
                (EpAnn
@@ -754,11 +658,7 @@
        (FamDecl
         (NoExtField)
         (FamilyDecl
-         (EpAnn
-          (EpaDelta (SameLine 0) [])
-          []
-          (EpaComments
-           []))
+         []
          (DataFamily)
          (TopLevel)
          (L
@@ -789,11 +689,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { DumpRenamedAst.hs:16:20-33 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (NoExtField))
              (L
@@ -804,11 +700,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaDelta (SameLine 0) [])
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -826,11 +718,7 @@
                (EpaComments
                 []))
               (HsFunTy
-               (EpAnn
-                (EpaSpan { DumpRenamedAst.hs:16:25-33 })
-                (NoEpAnns)
-                (EpaComments
-                 []))
+               (NoExtField)
                (HsUnrestrictedArrow
                 (NoExtField))
                (L
@@ -841,11 +729,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaDelta (SameLine 0) [])
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -863,11 +747,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaDelta (SameLine 0) [])
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -891,11 +771,7 @@
         (NoExtField)
         (DataFamInstDecl
          (FamEqn
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           []
-           (EpaComments
-            []))
+          []
           (L
            (EpAnn
             (EpaSpan { DumpRenamedAst.hs:19:18-20 })
@@ -917,14 +793,10 @@
               (EpaComments
                []))
              (HsParTy
-              (EpAnn
+              (AnnParen
+               (AnnParens)
                (EpaDelta (SameLine 0) [])
-               (AnnParen
-                (AnnParens)
-                (EpaDelta (SameLine 0) [])
-                (EpaDelta (SameLine 0) []))
-               (EpaComments
-                []))
+               (EpaDelta (SameLine 0) []))
               (L
                (EpAnn
                 (EpaSpan { DumpRenamedAst.hs:19:23-36 })
@@ -933,11 +805,7 @@
                 (EpaComments
                  []))
                (HsKindSig
-                (EpAnn
-                 (EpaSpan { DumpRenamedAst.hs:19:23-36 })
-                 [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:19:25-26 }))]
-                 (EpaComments
-                  []))
+                [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:19:25-26 }))]
                 (L
                  (EpAnn
                   (EpaSpan { DumpRenamedAst.hs:19:23 })
@@ -946,11 +814,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -968,11 +832,7 @@
                   (EpaComments
                    []))
                  (HsFunTy
-                  (EpAnn
-                   (EpaSpan { DumpRenamedAst.hs:19:28-36 })
-                   (NoEpAnns)
-                   (EpaComments
-                    []))
+                  (NoExtField)
                   (HsUnrestrictedArrow
                    (NoExtField))
                   (L
@@ -983,11 +843,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1005,11 +861,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1033,11 +885,7 @@
               (EpaComments
                []))
              (HsFunTy
-              (EpAnn
-               (EpaSpan { DumpRenamedAst.hs:19:42-60 })
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (HsUnrestrictedArrow
                (NoExtField))
               (L
@@ -1048,14 +896,10 @@
                 (EpaComments
                  []))
                (HsParTy
-                (EpAnn
+                (AnnParen
+                 (AnnParens)
                  (EpaDelta (SameLine 0) [])
-                 (AnnParen
-                  (AnnParens)
-                  (EpaDelta (SameLine 0) [])
-                  (EpaDelta (SameLine 0) []))
-                 (EpaComments
-                  []))
+                 (EpaDelta (SameLine 0) []))
                 (L
                  (EpAnn
                   (EpaSpan { DumpRenamedAst.hs:19:43-51 })
@@ -1064,11 +908,7 @@
                   (EpaComments
                    []))
                  (HsFunTy
-                  (EpAnn
-                   (EpaSpan { DumpRenamedAst.hs:19:43-51 })
-                   (NoEpAnns)
-                   (EpaComments
-                    []))
+                  (NoExtField)
                   (HsUnrestrictedArrow
                    (NoExtField))
                   (L
@@ -1079,11 +919,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1101,11 +937,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1123,11 +955,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -1181,14 +1009,10 @@
                    (EpaComments
                     []))
                   (HsParTy
-                   (EpAnn
+                   (AnnParen
+                    (AnnParens)
                     (EpaDelta (SameLine 0) [])
-                    (AnnParen
-                     (AnnParens)
-                     (EpaDelta (SameLine 0) [])
-                     (EpaDelta (SameLine 0) []))
-                    (EpaComments
-                     []))
+                    (EpaDelta (SameLine 0) []))
                    (L
                     (EpAnn
                      (EpaSpan { DumpRenamedAst.hs:20:11-33 })
@@ -1214,11 +1038,7 @@
                          (EpaComments
                           []))
                         (UserTyVar
-                         (EpAnn
-                          (EpaSpan { DumpRenamedAst.hs:20:18-19 })
-                          []
-                          (EpaComments
-                           []))
+                         []
                          (SpecifiedSpec)
                          (L
                           (EpAnn
@@ -1236,11 +1056,7 @@
                        (EpaComments
                         []))
                       (HsFunTy
-                       (EpAnn
-                        (EpaSpan { DumpRenamedAst.hs:20:22-33 })
-                        (NoEpAnns)
-                        (EpaComments
-                         []))
+                       (NoExtField)
                        (HsUnrestrictedArrow
                         (NoExtField))
                        (L
@@ -1260,11 +1076,7 @@
                            (EpaComments
                             []))
                           (HsTyVar
-                           (EpAnn
-                            (EpaDelta (SameLine 0) [])
-                            []
-                            (EpaComments
-                             []))
+                           []
                            (NotPromoted)
                            (L
                             (EpAnn
@@ -1282,11 +1094,7 @@
                            (EpaComments
                             []))
                           (HsTyVar
-                           (EpAnn
-                            (EpaDelta (SameLine 0) [])
-                            []
-                            (EpaComments
-                             []))
+                           []
                            (NotPromoted)
                            (L
                             (EpAnn
@@ -1313,11 +1121,7 @@
                            (EpaComments
                             []))
                           (HsTyVar
-                           (EpAnn
-                            (EpaDelta (SameLine 0) [])
-                            []
-                            (EpaComments
-                             []))
+                           []
                            (NotPromoted)
                            (L
                             (EpAnn
@@ -1335,11 +1139,7 @@
                            (EpaComments
                             []))
                           (HsTyVar
-                           (EpAnn
-                            (EpaDelta (SameLine 0) [])
-                            []
-                            (EpaComments
-                             []))
+                           []
                            (NotPromoted)
                            (L
                             (EpAnn
@@ -1375,11 +1175,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1397,11 +1193,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1419,11 +1211,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1468,11 +1256,7 @@
             (EpaComments
              []))
            (UserTyVar
-            (EpAnn
-             (EpaSpan { DumpRenamedAst.hs:22:8 })
-             []
-             (EpaComments
-              []))
+            []
             (HsBndrRequired
              (NoExtField))
             (L
@@ -1491,13 +1275,9 @@
             (EpaComments
              []))
            (KindedTyVar
-            (EpAnn
-             (EpaSpan { DumpRenamedAst.hs:22:10-17 })
-             [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:22:13-14 }))
-             ,(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:22:10 }))
-             ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:22:17 }))]
-             (EpaComments
-              []))
+            [(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:22:10 }))
+            ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:22:17 }))
+            ,(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:22:13-14 }))]
             (HsBndrRequired
              (NoExtField))
             (L
@@ -1516,11 +1296,7 @@
               (EpaComments
                []))
              (HsTyVar
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               []
-               (EpaComments
-                []))
+              []
               (NotPromoted)
               (L
                (EpAnn
@@ -1571,14 +1347,10 @@
                   (EpaComments
                    []))
                  (HsParTy
-                  (EpAnn
+                  (AnnParen
+                   (AnnParens)
                    (EpaDelta (SameLine 0) [])
-                   (AnnParen
-                    (AnnParens)
-                    (EpaDelta (SameLine 0) [])
-                    (EpaDelta (SameLine 0) []))
-                   (EpaComments
-                    []))
+                   (EpaDelta (SameLine 0) []))
                   (L
                    (EpAnn
                     (EpaSpan { DumpRenamedAst.hs:22:26-28 })
@@ -1596,11 +1368,7 @@
                       (EpaComments
                        []))
                      (HsTyVar
-                      (EpAnn
-                       (EpaDelta (SameLine 0) [])
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (NotPromoted)
                       (L
                        (EpAnn
@@ -1618,11 +1386,7 @@
                       (EpaComments
                        []))
                      (HsTyVar
-                      (EpAnn
-                       (EpaDelta (SameLine 0) [])
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (NotPromoted)
                       (L
                        (EpAnn
@@ -1649,11 +1413,7 @@
        (FamDecl
         (NoExtField)
         (FamilyDecl
-         (EpAnn
-          (EpaDelta (SameLine 0) [])
-          []
-          (EpaComments
-           []))
+         []
          (ClosedTypeFamily
           (Just
            [(L
@@ -1664,11 +1424,7 @@
               (EpaComments
                []))
              (FamEqn
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               []
-               (EpaComments
-                []))
+              []
               (L
                (EpAnn
                 (EpaSpan { DumpRenamedAst.hs:26:3-4 })
@@ -1690,11 +1446,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1714,11 +1466,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1738,11 +1486,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1788,11 +1532,7 @@
                       (EpaComments
                        []))
                      (HsTyVar
-                      (EpAnn
-                       (EpaDelta (SameLine 0) [])
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (NotPromoted)
                       (L
                        (EpAnn
@@ -1810,11 +1550,7 @@
                       (EpaComments
                        []))
                      (HsTyVar
-                      (EpAnn
-                       (EpaDelta (SameLine 0) [])
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (NotPromoted)
                       (L
                        (EpAnn
@@ -1832,11 +1568,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -1854,11 +1586,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -1887,13 +1615,9 @@
              (EpaComments
               []))
             (KindedTyVar
-             (EpAnn
-              (EpaSpan { DumpRenamedAst.hs:25:16-23 })
-              [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:25:19-20 }))
-              ,(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:25:16 }))
-              ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:25:23 }))]
-              (EpaComments
-               []))
+             [(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:25:16 }))
+             ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:25:23 }))
+             ,(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:25:19-20 }))]
              (HsBndrRequired
               (NoExtField))
              (L
@@ -1912,11 +1636,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaDelta (SameLine 0) [])
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1934,13 +1654,9 @@
              (EpaComments
               []))
             (KindedTyVar
-             (EpAnn
-              (EpaSpan { DumpRenamedAst.hs:25:25-40 })
-              [(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:25:28-29 }))
-              ,(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:25:25 }))
-              ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:25:40 }))]
-              (EpaComments
-               []))
+             [(AddEpAnn AnnOpenP (EpaSpan { DumpRenamedAst.hs:25:25 }))
+             ,(AddEpAnn AnnCloseP (EpaSpan { DumpRenamedAst.hs:25:40 }))
+             ,(AddEpAnn AnnDcolon (EpaSpan { DumpRenamedAst.hs:25:28-29 }))]
              (HsBndrRequired
               (NoExtField))
              (L
@@ -1959,11 +1675,7 @@
                (EpaComments
                 []))
               (HsFunTy
-               (EpAnn
-                (EpaSpan { DumpRenamedAst.hs:25:31-39 })
-                (NoEpAnns)
-                (EpaComments
-                 []))
+               (NoExtField)
                (HsUnrestrictedArrow
                 (NoExtField))
                (L
@@ -1974,11 +1686,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaDelta (SameLine 0) [])
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -1996,11 +1704,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaDelta (SameLine 0) [])
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -2027,11 +1731,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaDelta (SameLine 0) [])
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -2079,11 +1779,7 @@
             (EpaComments
              []))
            (HsFunTy
-            (EpAnn
-             (EpaSpan { DumpRenamedAst.hs:24:12-35 })
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (HsUnrestrictedArrow
              (NoExtField))
             (L
@@ -2094,11 +1790,7 @@
               (EpaComments
                []))
              (HsTyVar
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               []
-               (EpaComments
-                []))
+              []
               (NotPromoted)
               (L
                (EpAnn
@@ -2116,11 +1808,7 @@
               (EpaComments
                []))
              (HsFunTy
-              (EpAnn
-               (EpaSpan { DumpRenamedAst.hs:24:17-35 })
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (HsUnrestrictedArrow
                (NoExtField))
               (L
@@ -2131,14 +1819,10 @@
                 (EpaComments
                  []))
                (HsParTy
-                (EpAnn
+                (AnnParen
+                 (AnnParens)
                  (EpaDelta (SameLine 0) [])
-                 (AnnParen
-                  (AnnParens)
-                  (EpaDelta (SameLine 0) [])
-                  (EpaDelta (SameLine 0) []))
-                 (EpaComments
-                  []))
+                 (EpaDelta (SameLine 0) []))
                 (L
                  (EpAnn
                   (EpaSpan { DumpRenamedAst.hs:24:18-26 })
@@ -2147,11 +1831,7 @@
                   (EpaComments
                    []))
                  (HsFunTy
-                  (EpAnn
-                   (EpaSpan { DumpRenamedAst.hs:24:18-26 })
-                   (NoEpAnns)
-                   (EpaComments
-                    []))
+                  (NoExtField)
                   (HsUnrestrictedArrow
                    (NoExtField))
                   (L
@@ -2162,11 +1842,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -2184,11 +1860,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -2206,11 +1878,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -2252,11 +1920,7 @@
             (EpaComments
              []))
            (UserTyVar
-            (EpAnn
-             (EpaSpan { DumpRenamedAst.hs:28:9 })
-             []
-             (EpaComments
-              []))
+            []
             (HsBndrRequired
              (NoExtField))
             (L
@@ -2280,11 +1944,7 @@
            (EpaComments
             []))
           (FamilyDecl
-           (EpAnn
-            (EpaDelta (SameLine 0) [])
-            []
-            (EpaComments
-             []))
+           []
            (OpenTypeFamily)
            (NotTopLevel)
            (L
@@ -2305,11 +1965,7 @@
                (EpaComments
                 []))
               (UserTyVar
-               (EpAnn
-                (EpaSpan { DumpRenamedAst.hs:29:10 })
-                []
-                (EpaComments
-                 []))
+               []
                (HsBndrRequired
                 (NoExtField))
                (L
@@ -2328,11 +1984,7 @@
                (EpaComments
                 []))
               (UserTyVar
-               (EpAnn
-                (EpaSpan { DumpRenamedAst.hs:29:12 })
-                []
-                (EpaComments
-                 []))
+               []
                (HsBndrRequired
                 (NoExtField))
                (L
@@ -2396,11 +2048,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaDelta (SameLine 0) [])
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -2418,14 +2066,10 @@
                (EpaComments
                 []))
               (HsListTy
-               (EpAnn
-                (EpaSpan { DumpRenamedAst.hs:31:12-14 })
-                (AnnParen
-                 (AnnParensSquare)
-                 (EpaSpan { DumpRenamedAst.hs:31:12 })
-                 (EpaSpan { DumpRenamedAst.hs:31:14 }))
-                (EpaComments
-                 []))
+               (AnnParen
+                (AnnParensSquare)
+                (EpaSpan { DumpRenamedAst.hs:31:12 })
+                (EpaSpan { DumpRenamedAst.hs:31:14 }))
                (L
                 (EpAnn
                  (EpaSpan { DumpRenamedAst.hs:31:13 })
@@ -2434,11 +2078,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaDelta (SameLine 0) [])
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -2459,17 +2099,9 @@
             (EpaComments
              []))
            (TyFamInstDecl
-            (EpAnn
-             (EpaSpan { DumpRenamedAst.hs:32:3-27 })
-             [(AddEpAnn AnnType (EpaSpan { DumpRenamedAst.hs:32:3-6 }))]
-             (EpaComments
-              []))
+            [(AddEpAnn AnnType (EpaSpan { DumpRenamedAst.hs:32:3-6 }))]
             (FamEqn
-             (EpAnn
-              (EpaDelta (SameLine 0) [])
-              []
-              (EpaComments
-               []))
+             []
              (L
               (EpAnn
                (EpaSpan { DumpRenamedAst.hs:32:8 })
@@ -2490,14 +2122,10 @@
                  (EpaComments
                   []))
                 (HsListTy
-                 (EpAnn
-                  (EpaSpan { DumpRenamedAst.hs:32:10-12 })
-                  (AnnParen
-                   (AnnParensSquare)
-                   (EpaSpan { DumpRenamedAst.hs:32:10 })
-                   (EpaSpan { DumpRenamedAst.hs:32:12 }))
-                  (EpaComments
-                   []))
+                 (AnnParen
+                  (AnnParensSquare)
+                  (EpaSpan { DumpRenamedAst.hs:32:10 })
+                  (EpaSpan { DumpRenamedAst.hs:32:12 }))
                  (L
                   (EpAnn
                    (EpaSpan { DumpRenamedAst.hs:32:11 })
@@ -2506,11 +2134,7 @@
                    (EpaComments
                     []))
                   (HsTyVar
-                   (EpAnn
-                    (EpaDelta (SameLine 0) [])
-                    []
-                    (EpaComments
-                     []))
+                   []
                    (NotPromoted)
                    (L
                     (EpAnn
@@ -2530,11 +2154,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaDelta (SameLine 0) [])
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -2571,11 +2191,7 @@
                    (EpaComments
                     []))
                   (HsTyVar
-                   (EpAnn
-                    (EpaDelta (SameLine 0) [])
-                    []
-                    (EpaComments
-                     []))
+                   []
                    (NotPromoted)
                    (L
                     (EpAnn
@@ -2593,11 +2209,7 @@
                    (EpaComments
                     []))
                   (HsTyVar
-                   (EpAnn
-                    (EpaDelta (SameLine 0) [])
-                    []
-                    (EpaComments
-                     []))
+                   []
                    (NotPromoted)
                    (L
                     (EpAnn
@@ -2615,11 +2227,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaDelta (SameLine 0) [])
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -2772,11 +2380,7 @@
           (IEThingAbs
            ((,)
             (Nothing)
-            (EpAnn
-             (EpaDelta (SameLine 0) [])
-             []
-             (EpaComments
-              [])))
+            [])
            (L
             (EpAnn
              (EpaSpan { DumpRenamedAst.hs:7:19-22 })
diff --git a/testsuite/tests/parser/should_compile/DumpSemis.stderr b/testsuite/tests/parser/should_compile/DumpSemis.stderr
index 65b8903d7e8b..c60897d6d2ae 100644
--- a/testsuite/tests/parser/should_compile/DumpSemis.stderr
+++ b/testsuite/tests/parser/should_compile/DumpSemis.stderr
@@ -151,13 +151,9 @@
     (SigD
      (NoExtField)
      (TypeSig
-      (EpAnn
-       (EpaSpan { DumpSemis.hs:9:1-12 })
-       (AnnSig
-        (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:9:5-6 }))
-        [])
-       (EpaComments
-        []))
+      (AnnSig
+       (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:9:5-6 }))
+       [])
       [(L
         (EpAnn
          (EpaSpan { DumpSemis.hs:9:1-3 })
@@ -197,11 +193,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { DumpSemis.hs:9:8-9 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -220,14 +212,10 @@
              (EpaComments
               []))
             (HsTupleTy
-             (EpAnn
-              (EpaSpan { DumpSemis.hs:9:11-12 })
-              (AnnParen
-               (AnnParens)
-               (EpaSpan { DumpSemis.hs:9:11 })
-               (EpaSpan { DumpSemis.hs:9:12 }))
-              (EpaComments
-               []))
+             (AnnParen
+              (AnnParens)
+              (EpaSpan { DumpSemis.hs:9:11 })
+              (EpaSpan { DumpSemis.hs:9:12 }))
              (HsBoxedOrConstraintTuple)
              []))))))))))
   ,(L
@@ -276,11 +264,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpSemis.hs:(10,1)-(12,3) })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -320,17 +304,13 @@
                  (EpaComments
                   []))
                 (HsDo
-                 (EpAnn
-                  (EpaSpan { DumpSemis.hs:(10,7)-(12,3) })
-                  (AnnList
-                   (Just
-                    (EpaSpan { DumpSemis.hs:(11,3)-(12,3) }))
-                   (Nothing)
-                   (Nothing)
-                   [(AddEpAnn AnnDo (EpaSpan { DumpSemis.hs:10:7-8 }))]
-                   [])
-                  (EpaComments
-                   []))
+                 (AnnList
+                  (Just
+                   (EpaSpan { DumpSemis.hs:(11,3)-(12,3) }))
+                  (Nothing)
+                  (Nothing)
+                  [(AddEpAnn AnnDo (EpaSpan { DumpSemis.hs:10:7-8 }))]
+                  [])
                  (DoExpr
                   (Nothing))
                  (L
@@ -362,17 +342,13 @@
                        (EpaComments
                         []))
                       (HsDo
-                       (EpAnn
-                        (EpaSpan { DumpSemis.hs:11:3-15 })
-                        (AnnList
-                         (Just
-                          (EpaSpan { DumpSemis.hs:11:6-15 }))
-                         (Nothing)
-                         (Nothing)
-                         [(AddEpAnn AnnDo (EpaSpan { DumpSemis.hs:11:3-4 }))]
-                         [])
-                        (EpaComments
-                         []))
+                       (AnnList
+                        (Just
+                         (EpaSpan { DumpSemis.hs:11:6-15 }))
+                        (Nothing)
+                        (Nothing)
+                        [(AddEpAnn AnnDo (EpaSpan { DumpSemis.hs:11:3-4 }))]
+                        [])
                        (DoExpr
                         (Nothing))
                        (L
@@ -464,13 +440,9 @@
     (SigD
      (NoExtField)
      (TypeSig
-      (EpAnn
-       (EpaSpan { DumpSemis.hs:14:1-12 })
-       (AnnSig
-        (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:14:5-6 }))
-        [])
-       (EpaComments
-        []))
+      (AnnSig
+       (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:14:5-6 }))
+       [])
       [(L
         (EpAnn
          (EpaSpan { DumpSemis.hs:14:1-3 })
@@ -510,11 +482,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { DumpSemis.hs:14:8-9 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -533,14 +501,10 @@
              (EpaComments
               []))
             (HsTupleTy
-             (EpAnn
-              (EpaSpan { DumpSemis.hs:14:11-12 })
-              (AnnParen
-               (AnnParens)
-               (EpaSpan { DumpSemis.hs:14:11 })
-               (EpaSpan { DumpSemis.hs:14:12 }))
-              (EpaComments
-               []))
+             (AnnParen
+              (AnnParens)
+              (EpaSpan { DumpSemis.hs:14:11 })
+              (EpaSpan { DumpSemis.hs:14:12 }))
              (HsBoxedOrConstraintTuple)
              []))))))))))
   ,(L
@@ -591,11 +555,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpSemis.hs:(15,1)-(19,3) })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -635,17 +595,13 @@
                  (EpaComments
                   []))
                 (HsDo
-                 (EpAnn
-                  (EpaSpan { DumpSemis.hs:(15,7)-(19,3) })
-                  (AnnList
-                   (Just
-                    (EpaSpan { DumpSemis.hs:(16,3)-(19,3) }))
-                   (Nothing)
-                   (Nothing)
-                   [(AddEpAnn AnnDo (EpaSpan { DumpSemis.hs:15:7-8 }))]
-                   [])
-                  (EpaComments
-                   []))
+                 (AnnList
+                  (Just
+                   (EpaSpan { DumpSemis.hs:(16,3)-(19,3) }))
+                  (Nothing)
+                  (Nothing)
+                  [(AddEpAnn AnnDo (EpaSpan { DumpSemis.hs:15:7-8 }))]
+                  [])
                  (DoExpr
                   (Nothing))
                  (L
@@ -736,13 +692,9 @@
     (SigD
      (NoExtField)
      (TypeSig
-      (EpAnn
-       (EpaSpan { DumpSemis.hs:21:1-12 })
-       (AnnSig
-        (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:21:5-6 }))
-        [])
-       (EpaComments
-        []))
+      (AnnSig
+       (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:21:5-6 }))
+       [])
       [(L
         (EpAnn
          (EpaSpan { DumpSemis.hs:21:1-3 })
@@ -782,11 +734,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { DumpSemis.hs:21:8-9 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -805,14 +753,10 @@
              (EpaComments
               []))
             (HsTupleTy
-             (EpAnn
-              (EpaSpan { DumpSemis.hs:21:11-12 })
-              (AnnParen
-               (AnnParens)
-               (EpaSpan { DumpSemis.hs:21:11 })
-               (EpaSpan { DumpSemis.hs:21:12 }))
-              (EpaComments
-               []))
+             (AnnParen
+              (AnnParens)
+              (EpaSpan { DumpSemis.hs:21:11 })
+              (EpaSpan { DumpSemis.hs:21:12 }))
              (HsBoxedOrConstraintTuple)
              []))))))))))
   ,(L
@@ -857,11 +801,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpSemis.hs:22:1-30 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -901,17 +841,13 @@
                  (EpaComments
                   []))
                 (HsDo
-                 (EpAnn
-                  (EpaSpan { DumpSemis.hs:22:7-30 })
-                  (AnnList
-                   (Just
-                    (EpaSpan { DumpSemis.hs:22:10-30 }))
-                   (Nothing)
-                   (Nothing)
-                   [(AddEpAnn AnnDo (EpaSpan { DumpSemis.hs:22:7-8 }))]
-                   [])
-                  (EpaComments
-                   []))
+                 (AnnList
+                  (Just
+                   (EpaSpan { DumpSemis.hs:22:10-30 }))
+                  (Nothing)
+                  (Nothing)
+                  [(AddEpAnn AnnDo (EpaSpan { DumpSemis.hs:22:7-8 }))]
+                  [])
                  (DoExpr
                   (Nothing))
                  (L
@@ -1066,11 +1002,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpSemis.hs:24:1-13 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -1163,11 +1095,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpSemis.hs:25:1-13 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -1261,11 +1189,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpSemis.hs:26:1-13 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -1329,12 +1253,8 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { DumpSemis.hs:(28,1)-(29,23) })
-        [(AddEpAnn AnnClass (EpaSpan { DumpSemis.hs:28:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { DumpSemis.hs:28:40-44 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { DumpSemis.hs:28:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { DumpSemis.hs:28:40-44 }))]
        (EpVirtualBraces
         (3))
        (NoAnnSortKey))
@@ -1358,15 +1278,11 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { DumpSemis.hs:28:22-38 })
-           [(AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:28:30-31 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { DumpSemis.hs:28:22 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { DumpSemis.hs:28:23 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { DumpSemis.hs:28:37 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { DumpSemis.hs:28:38 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { DumpSemis.hs:28:22 }))
+          ,(AddEpAnn AnnOpenP (EpaSpan { DumpSemis.hs:28:23 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { DumpSemis.hs:28:37 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { DumpSemis.hs:28:38 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:28:30-31 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -1386,11 +1302,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { DumpSemis.hs:28:33-36 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -1411,13 +1323,9 @@
          (EpaComments
           []))
         (ClassOpSig
-         (EpAnn
-          (EpaSpan { DumpSemis.hs:29:3-23 })
-          (AnnSig
-           (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:29:9-10 }))
-           [])
-          (EpaComments
-           []))
+         (AnnSig
+          (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:29:9-10 }))
+          [])
          (False)
          [(L
            (EpAnn
@@ -1447,11 +1355,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { DumpSemis.hs:29:12-23 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { DumpSemis.hs:29:18-19 })
@@ -1464,11 +1368,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { DumpSemis.hs:29:12-16 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1487,11 +1387,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { DumpSemis.hs:29:21-23 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1517,13 +1413,9 @@
     (SigD
      (NoExtField)
      (TypeSig
-      (EpAnn
-       (EpaSpan { DumpSemis.hs:31:1-30 })
-       (AnnSig
-        (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:31:3-4 }))
-        [])
-       (EpaComments
-        []))
+      (AnnSig
+       (AddEpAnn AnnDcolon (EpaSpan { DumpSemis.hs:31:3-4 }))
+       [])
       [(L
         (EpAnn
          (EpaSpan { DumpSemis.hs:31:1 })
@@ -1587,11 +1479,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { DumpSemis.hs:31:8-9 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -1610,11 +1498,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { DumpSemis.hs:31:11 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -1642,11 +1526,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { DumpSemis.hs:31:14-16 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -1665,11 +1545,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { DumpSemis.hs:31:18 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -1688,11 +1564,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { DumpSemis.hs:31:25-30 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { DumpSemis.hs:31:27-28 })
@@ -1705,11 +1577,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { DumpSemis.hs:31:25 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1728,11 +1596,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { DumpSemis.hs:31:30 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1789,11 +1653,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpSemis.hs:32:1-7 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -1906,11 +1766,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpSemis.hs:34:8-35 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -2018,11 +1874,7 @@
                             (EpaComments
                              []))
                            (Match
-                            (EpAnn
-                             (EpaSpan { DumpSemis.hs:34:19-21 })
-                             []
-                             (EpaComments
-                              []))
+                            []
                             (FunRhs
                              (L
                               (EpAnn
@@ -2062,11 +1914,7 @@
                                   (EpaComments
                                    []))
                                  (HsOverLit
-                                  (EpAnn
-                                   (EpaSpan { DumpSemis.hs:34:21 })
-                                   (NoEpAnns)
-                                   (EpaComments
-                                    []))
+                                  (NoExtField)
                                   (OverLit
                                    (NoExtField)
                                    (HsIntegral
@@ -2122,11 +1970,7 @@
                             (EpaComments
                              []))
                            (Match
-                            (EpAnn
-                             (EpaSpan { DumpSemis.hs:34:24-26 })
-                             []
-                             (EpaComments
-                              []))
+                            []
                             (FunRhs
                              (L
                               (EpAnn
@@ -2166,11 +2010,7 @@
                                   (EpaComments
                                    []))
                                  (HsOverLit
-                                  (EpAnn
-                                   (EpaSpan { DumpSemis.hs:34:26 })
-                                   (NoEpAnns)
-                                   (EpaComments
-                                    []))
+                                  (NoExtField)
                                   (OverLit
                                    (NoExtField)
                                    (HsIntegral
@@ -2243,11 +2083,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { DumpSemis.hs:(36,1)-(44,4) })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -2304,14 +2140,10 @@
                  (EpaComments
                   []))
                 (HsCase
-                 (EpAnn
-                  (EpaSpan { DumpSemis.hs:(37,3)-(44,4) })
-                  (EpAnnHsCase
-                   (EpaSpan { DumpSemis.hs:37:3-6 })
-                   (EpaSpan { DumpSemis.hs:37:10-11 })
-                   [])
-                  (EpaComments
-                   []))
+                 (EpAnnHsCase
+                  (EpaSpan { DumpSemis.hs:37:3-6 })
+                  (EpaSpan { DumpSemis.hs:37:10-11 })
+                  [])
                  (L
                   (EpAnn
                    (EpaSpan { DumpSemis.hs:37:8 })
@@ -2357,11 +2189,7 @@
                       (EpaComments
                        []))
                      (Match
-                      (EpAnn
-                       (EpaSpan { DumpSemis.hs:39:6-13 })
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (CaseAlt)
                       [(L
                         (EpAnn
@@ -2371,11 +2199,7 @@
                          (EpaComments
                           []))
                         (NPat
-                         (EpAnn
-                          (EpaDelta (SameLine 0) [])
-                          []
-                          (EpaComments
-                           []))
+                         []
                          (L
                           (EpAnn
                            (EpaSpan { DumpSemis.hs:39:6 })
@@ -2417,11 +2241,7 @@
                             (EpaComments
                              []))
                            (HsLit
-                            (EpAnn
-                             (EpaSpan { DumpSemis.hs:39:11-13 })
-                             (NoEpAnns)
-                             (EpaComments
-                              []))
+                            (NoExtField)
                             (HsChar
                              (SourceText 'a')
                              ('a'))))))]
@@ -2436,11 +2256,7 @@
                       (EpaComments
                        []))
                      (Match
-                      (EpAnn
-                       (EpaSpan { DumpSemis.hs:40:6-13 })
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (CaseAlt)
                       [(L
                         (EpAnn
@@ -2450,11 +2266,7 @@
                          (EpaComments
                           []))
                         (NPat
-                         (EpAnn
-                          (EpaDelta (SameLine 0) [])
-                          []
-                          (EpaComments
-                           []))
+                         []
                          (L
                           (EpAnn
                            (EpaSpan { DumpSemis.hs:40:6 })
@@ -2496,11 +2308,7 @@
                             (EpaComments
                              []))
                            (HsLit
-                            (EpAnn
-                             (EpaSpan { DumpSemis.hs:40:11-13 })
-                             (NoEpAnns)
-                             (EpaComments
-                              []))
+                            (NoExtField)
                             (HsChar
                              (SourceText 'b')
                              ('b'))))))]
@@ -2517,11 +2325,7 @@
                       (EpaComments
                        []))
                      (Match
-                      (EpAnn
-                       (EpaSpan { DumpSemis.hs:41:6-13 })
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (CaseAlt)
                       [(L
                         (EpAnn
@@ -2531,11 +2335,7 @@
                          (EpaComments
                           []))
                         (NPat
-                         (EpAnn
-                          (EpaDelta (SameLine 0) [])
-                          []
-                          (EpaComments
-                           []))
+                         []
                          (L
                           (EpAnn
                            (EpaSpan { DumpSemis.hs:41:6 })
@@ -2577,11 +2377,7 @@
                             (EpaComments
                              []))
                            (HsLit
-                            (EpAnn
-                             (EpaSpan { DumpSemis.hs:41:11-13 })
-                             (NoEpAnns)
-                             (EpaComments
-                              []))
+                            (NoExtField)
                             (HsChar
                              (SourceText 'c')
                              ('c'))))))]
@@ -2600,11 +2396,7 @@
                       (EpaComments
                        []))
                      (Match
-                      (EpAnn
-                       (EpaSpan { DumpSemis.hs:42:6-13 })
-                       []
-                       (EpaComments
-                        []))
+                      []
                       (CaseAlt)
                       [(L
                         (EpAnn
@@ -2614,11 +2406,7 @@
                          (EpaComments
                           []))
                         (NPat
-                         (EpAnn
-                          (EpaDelta (SameLine 0) [])
-                          []
-                          (EpaComments
-                           []))
+                         []
                          (L
                           (EpAnn
                            (EpaSpan { DumpSemis.hs:42:6 })
@@ -2660,11 +2448,7 @@
                             (EpaComments
                              []))
                            (HsLit
-                            (EpAnn
-                             (EpaSpan { DumpSemis.hs:42:11-13 })
-                             (NoEpAnns)
-                             (EpaComments
-                              []))
+                            (NoExtField)
                             (HsChar
                              (SourceText 'd')
                              ('d'))))))]
diff --git a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr
index 875072e46841..b9f4103913c9 100644
--- a/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr
+++ b/testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr
@@ -20,11 +20,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -33,11 +29,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -46,11 +38,7 @@
           (EpaComments
            []))
          (HsApp
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           (L
            (EpAnn
             (EpaSpan { <no location info> })
@@ -59,11 +47,7 @@
             (EpaComments
              []))
            (HsApp
-            (EpAnn
-             (EpaDelta (SameLine 0) [])
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (L
              (EpAnn
               (EpaSpan { <no location info> })
@@ -72,11 +56,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -85,11 +65,7 @@
                 (EpaComments
                  []))
                (HsApp
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (L
                  (EpAnn
                   (EpaSpan { <no location info> })
@@ -110,11 +86,7 @@
                   (EpaComments
                    []))
                  (HsLit
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   (NoEpAnns)
-                   (EpaComments
-                    []))
+                  (NoExtField)
                   {HsWord{64}Prim (1374752024144278257) (NoSourceText)}))))
               (L
                (EpAnn
@@ -124,11 +96,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 {HsWord{64}Prim (13654949607623281177) (NoSourceText)}))))
             (L
              (EpAnn
@@ -164,11 +132,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -189,11 +153,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (HsStringPrim
                  (NoSourceText)
                  "T")))))))))
@@ -205,11 +165,7 @@
           (EpaComments
            []))
          (HsLit
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           {HsInt{64}Prim (1) (NoSourceText)}))))
       (L
        (EpAnn
@@ -246,11 +202,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -259,11 +211,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -272,11 +220,7 @@
           (EpaComments
            []))
          (HsApp
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           (L
            (EpAnn
             (EpaSpan { <no location info> })
@@ -285,11 +229,7 @@
             (EpaComments
              []))
            (HsApp
-            (EpAnn
-             (EpaDelta (SameLine 0) [])
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (L
              (EpAnn
               (EpaSpan { <no location info> })
@@ -298,11 +238,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -311,11 +247,7 @@
                 (EpaComments
                  []))
                (HsApp
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (L
                  (EpAnn
                   (EpaSpan { <no location info> })
@@ -336,11 +268,7 @@
                   (EpaComments
                    []))
                  (HsLit
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   (NoEpAnns)
-                   (EpaComments
-                    []))
+                  (NoExtField)
                   {HsWord{64}Prim (10715337633704422415) (NoSourceText)}))))
               (L
                (EpAnn
@@ -350,11 +278,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 {HsWord{64}Prim (12411373583424111944) (NoSourceText)}))))
             (L
              (EpAnn
@@ -390,11 +314,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -415,11 +335,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (HsStringPrim
                  (NoSourceText)
                  "'MkT")))))))))
@@ -431,11 +347,7 @@
           (EpaComments
            []))
          (HsLit
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           {HsInt{64}Prim (3) (NoSourceText)}))))
       (L
        (EpAnn
@@ -472,11 +384,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -485,11 +393,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -498,11 +402,7 @@
           (EpaComments
            []))
          (HsApp
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           (L
            (EpAnn
             (EpaSpan { <no location info> })
@@ -511,11 +411,7 @@
             (EpaComments
              []))
            (HsApp
-            (EpAnn
-             (EpaDelta (SameLine 0) [])
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (L
              (EpAnn
               (EpaSpan { <no location info> })
@@ -524,11 +420,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -537,11 +429,7 @@
                 (EpaComments
                  []))
                (HsApp
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (L
                  (EpAnn
                   (EpaSpan { <no location info> })
@@ -562,11 +450,7 @@
                   (EpaComments
                    []))
                  (HsLit
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   (NoEpAnns)
-                   (EpaComments
-                    []))
+                  (NoExtField)
                   {HsWord{64}Prim (14073232900889011755) (NoSourceText)}))))
               (L
                (EpAnn
@@ -576,11 +460,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 {HsWord{64}Prim (2739668351064589274) (NoSourceText)}))))
             (L
              (EpAnn
@@ -616,11 +496,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -641,11 +517,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (HsStringPrim
                  (NoSourceText)
                  "Peano")))))))))
@@ -657,11 +529,7 @@
           (EpaComments
            []))
          (HsLit
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           {HsInt{64}Prim (0) (NoSourceText)}))))
       (L
        (EpAnn
@@ -698,11 +566,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -711,11 +575,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -724,11 +584,7 @@
           (EpaComments
            []))
          (HsApp
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           (L
            (EpAnn
             (EpaSpan { <no location info> })
@@ -737,11 +593,7 @@
             (EpaComments
              []))
            (HsApp
-            (EpAnn
-             (EpaDelta (SameLine 0) [])
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (L
              (EpAnn
               (EpaSpan { <no location info> })
@@ -750,11 +602,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -763,11 +611,7 @@
                 (EpaComments
                  []))
                (HsApp
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (L
                  (EpAnn
                   (EpaSpan { <no location info> })
@@ -788,11 +632,7 @@
                   (EpaComments
                    []))
                  (HsLit
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   (NoEpAnns)
-                   (EpaComments
-                    []))
+                  (NoExtField)
                   {HsWord{64}Prim (13760111476013868540) (NoSourceText)}))))
               (L
                (EpAnn
@@ -802,11 +642,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 {HsWord{64}Prim (12314848029315386153) (NoSourceText)}))))
             (L
              (EpAnn
@@ -842,11 +678,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -867,11 +699,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (HsStringPrim
                  (NoSourceText)
                  "'Zero")))))))))
@@ -883,11 +711,7 @@
           (EpaComments
            []))
          (HsLit
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           {HsInt{64}Prim (0) (NoSourceText)}))))
       (L
        (EpAnn
@@ -924,11 +748,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -937,11 +757,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -950,11 +766,7 @@
           (EpaComments
            []))
          (HsApp
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           (L
            (EpAnn
             (EpaSpan { <no location info> })
@@ -963,11 +775,7 @@
             (EpaComments
              []))
            (HsApp
-            (EpAnn
-             (EpaDelta (SameLine 0) [])
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (L
              (EpAnn
               (EpaSpan { <no location info> })
@@ -976,11 +784,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -989,11 +793,7 @@
                 (EpaComments
                  []))
                (HsApp
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (L
                  (EpAnn
                   (EpaSpan { <no location info> })
@@ -1014,11 +814,7 @@
                   (EpaComments
                    []))
                  (HsLit
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   (NoEpAnns)
-                   (EpaComments
-                    []))
+                  (NoExtField)
                   {HsWord{64}Prim (1143980031331647856) (NoSourceText)}))))
               (L
                (EpAnn
@@ -1028,11 +824,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 {HsWord{64}Prim (14802086722010293686) (NoSourceText)}))))
             (L
              (EpAnn
@@ -1068,11 +860,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -1093,11 +881,7 @@
                 (EpaComments
                  []))
                (HsLit
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (HsStringPrim
                  (NoSourceText)
                  "'Succ")))))))))
@@ -1109,11 +893,7 @@
           (EpaComments
            []))
          (HsLit
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           {HsInt{64}Prim (0) (NoSourceText)}))))
       (L
        (EpAnn
@@ -1150,11 +930,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -1175,11 +951,7 @@
         (EpaComments
          []))
        (HsLit
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (HsInt
          (NoExtField)
          (IL
@@ -1204,11 +976,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -1229,11 +997,7 @@
         (EpaComments
          []))
        (HsLit
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (HsInt
          (NoExtField)
          (IL
@@ -1258,11 +1022,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -1283,11 +1043,7 @@
         (EpaComments
          []))
        (HsLit
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (HsInt
          (NoExtField)
          (IL
@@ -1312,11 +1068,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -1325,11 +1077,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -1394,11 +1142,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -1407,11 +1151,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -1476,11 +1216,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -1489,11 +1225,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -1558,11 +1290,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -1571,11 +1299,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -1640,11 +1364,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -1653,11 +1373,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -1722,11 +1438,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -1735,11 +1447,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -1786,11 +1494,7 @@
           (EpaComments
            []))
          (HsApp
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           (L
            (EpAnn
             (EpaSpan { <no location info> })
@@ -1799,11 +1503,7 @@
             (EpaComments
              []))
            (HsApp
-            (EpAnn
-             (EpaDelta (SameLine 0) [])
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (L
              (EpAnn
               (EpaSpan { <no location info> })
@@ -1857,11 +1557,7 @@
               (EpaComments
                []))
              (HsApp
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (L
                (EpAnn
                 (EpaSpan { <no location info> })
@@ -1870,11 +1566,7 @@
                 (EpaComments
                  []))
                (HsApp
-                (EpAnn
-                 (EpaDelta (SameLine 0) [])
-                 (NoEpAnns)
-                 (EpaComments
-                  []))
+                (NoExtField)
                 (L
                  (EpAnn
                   (EpaSpan { <no location info> })
@@ -1928,11 +1620,7 @@
                   (EpaComments
                    []))
                  (HsApp
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   (NoEpAnns)
-                   (EpaComments
-                    []))
+                  (NoExtField)
                   (L
                    (EpAnn
                     (EpaSpan { <no location info> })
@@ -1941,11 +1629,7 @@
                     (EpaComments
                      []))
                    (HsApp
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     (NoEpAnns)
-                     (EpaComments
-                      []))
+                    (NoExtField)
                     (L
                      (EpAnn
                       (EpaSpan { <no location info> })
@@ -2019,11 +1703,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -2032,11 +1712,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -2103,11 +1779,7 @@
       (EpaComments
        []))
      (HsApp
-      (EpAnn
-       (EpaDelta (SameLine 0) [])
-       (NoEpAnns)
-       (EpaComments
-        []))
+      (NoExtField)
       (L
        (EpAnn
         (EpaSpan { <no location info> })
@@ -2116,11 +1788,7 @@
         (EpaComments
          []))
        (HsApp
-        (EpAnn
-         (EpaDelta (SameLine 0) [])
-         (NoEpAnns)
-         (EpaComments
-          []))
+        (NoExtField)
         (L
          (EpAnn
           (EpaSpan { <no location info> })
@@ -2150,11 +1818,7 @@
             (EpaComments
              []))
            (HsApp
-            (EpAnn
-             (EpaDelta (SameLine 0) [])
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (L
              (EpAnn
               (EpaSpan { <no location info> })
@@ -2175,11 +1839,7 @@
               (EpaComments
                []))
              (HsLit
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               (NoEpAnns)
-               (EpaComments
-                []))
+              (NoExtField)
               (HsStringPrim
                (NoSourceText)
                "main")))))))))
@@ -2200,11 +1860,7 @@
           (EpaComments
            []))
          (HsApp
-          (EpAnn
-           (EpaDelta (SameLine 0) [])
-           (NoEpAnns)
-           (EpaComments
-            []))
+          (NoExtField)
           (L
            (EpAnn
             (EpaSpan { <no location info> })
@@ -2225,11 +1881,7 @@
             (EpaComments
              []))
            (HsLit
-            (EpAnn
-             (EpaDelta (SameLine 0) [])
-             (NoEpAnns)
-             (EpaComments
-              []))
+            (NoExtField)
             (HsStringPrim
              (NoSourceText)
              "DumpTypecheckedAst")))))))))))
@@ -2299,11 +1951,7 @@
               (EpaComments
                []))
              (Match
-              (EpAnn
-               (EpaDelta (SameLine 0) [])
-               []
-               (EpaComments
-                []))
+              []
               (FunRhs
                (L
                 (EpAnn
@@ -2342,11 +1990,7 @@
                     (EpaComments
                      []))
                    (HsApp
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     (NoEpAnns)
-                     (EpaComments
-                      []))
+                    (NoExtField)
                     (L
                      (EpAnn
                       (EpaSpan { DumpTypecheckedAst.hs:20:8-15 })
@@ -2372,11 +2016,7 @@
                       (EpaComments
                        []))
                      (HsLit
-                      (EpAnn
-                       (EpaSpan { DumpTypecheckedAst.hs:20:17-23 })
-                       (NoEpAnns)
-                       (EpaComments
-                        []))
+                      (NoExtField)
                       (HsString
                        (SourceText "hello")
                        {FastString: "hello"})))))))]
diff --git a/testsuite/tests/parser/should_compile/KindSigs.stderr b/testsuite/tests/parser/should_compile/KindSigs.stderr
index 78c758e2e634..0a4736754849 100644
--- a/testsuite/tests/parser/should_compile/KindSigs.stderr
+++ b/testsuite/tests/parser/should_compile/KindSigs.stderr
@@ -80,13 +80,9 @@
      (FamDecl
       (NoExtField)
       (FamilyDecl
-       (EpAnn
-        (EpaSpan { KindSigs.hs:(11,1)-(12,21) })
-        [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:11:1-4 }))
-        ,(AddEpAnn AnnFamily (EpaSpan { KindSigs.hs:11:6-11 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { KindSigs.hs:11:19-23 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:11:1-4 }))
+       ,(AddEpAnn AnnFamily (EpaSpan { KindSigs.hs:11:6-11 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { KindSigs.hs:11:19-23 }))]
        (ClosedTypeFamily
         (Just
          [(L
@@ -97,11 +93,7 @@
             (EpaComments
              []))
            (FamEqn
-            (EpAnn
-             (EpaSpan { KindSigs.hs:12:3-21 })
-             [(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:12:9 }))]
-             (EpaComments
-              []))
+            [(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:12:9 }))]
             (L
              (EpAnn
               (EpaSpan { KindSigs.hs:12:3-5 })
@@ -123,11 +115,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { KindSigs.hs:12:7 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -147,11 +135,7 @@
               (EpaComments
                []))
              (HsKindSig
-              (EpAnn
-               (EpaSpan { KindSigs.hs:12:11-21 })
-               [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:12:15-16 }))]
-               (EpaComments
-                []))
+              [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:12:15-16 }))]
               (L
                (EpAnn
                 (EpaSpan { KindSigs.hs:12:11-13 })
@@ -160,11 +144,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { KindSigs.hs:12:11-13 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -183,11 +163,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { KindSigs.hs:12:18-21 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -218,11 +194,7 @@
            (EpaComments
             []))
           (UserTyVar
-           (EpAnn
-            (EpaSpan { KindSigs.hs:11:17 })
-            []
-            (EpaComments
-             []))
+           []
            (HsBndrRequired
             (NoExtField))
            (L
@@ -254,12 +226,8 @@
     (TyClD
      (NoExtField)
      (SynDecl
-      (EpAnn
-       (EpaSpan { KindSigs.hs:15:1-51 })
-       [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:15:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:15:12 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:15:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:15:12 }))]
       (L
        (EpAnn
         (EpaSpan { KindSigs.hs:15:6-8 })
@@ -279,11 +247,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { KindSigs.hs:15:10 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -304,14 +268,10 @@
         (EpaComments
          []))
        (HsTupleTy
-        (EpAnn
-         (EpaSpan { KindSigs.hs:15:14-51 })
-         (AnnParen
-          (AnnParens)
-          (EpaSpan { KindSigs.hs:15:14 })
-          (EpaSpan { KindSigs.hs:15:51 }))
-         (EpaComments
-          []))
+        (AnnParen
+         (AnnParens)
+         (EpaSpan { KindSigs.hs:15:14 })
+         (EpaSpan { KindSigs.hs:15:51 }))
         (HsBoxedOrConstraintTuple)
         [(L
           (EpAnn
@@ -322,11 +282,7 @@
            (EpaComments
             []))
           (HsKindSig
-           (EpAnn
-            (EpaSpan { KindSigs.hs:15:16-26 })
-            [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:15:20-21 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:15:20-21 }))]
            (L
             (EpAnn
              (EpaSpan { KindSigs.hs:15:16-18 })
@@ -335,11 +291,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:15:16-18 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -358,11 +310,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:15:23-26 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -382,11 +330,7 @@
            (EpaComments
             []))
           (HsTyVar
-           (EpAnn
-            (EpaSpan { KindSigs.hs:15:29-32 })
-            []
-            (EpaComments
-             []))
+           []
            (NotPromoted)
            (L
             (EpAnn
@@ -405,11 +349,7 @@
            (EpaComments
             []))
           (HsKindSig
-           (EpAnn
-            (EpaSpan { KindSigs.hs:15:35-49 })
-            [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:15:43-44 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:15:43-44 }))]
            (L
             (EpAnn
              (EpaSpan { KindSigs.hs:15:35-41 })
@@ -427,11 +367,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { KindSigs.hs:15:35-39 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -450,11 +386,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { KindSigs.hs:15:41 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -473,11 +405,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:15:46-49 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -498,12 +426,8 @@
     (TyClD
      (NoExtField)
      (SynDecl
-      (EpAnn
-       (EpaSpan { KindSigs.hs:16:1-54 })
-       [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:16:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:16:13 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:16:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:16:13 }))]
       (L
        (EpAnn
         (EpaSpan { KindSigs.hs:16:6-9 })
@@ -523,11 +447,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { KindSigs.hs:16:11 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -548,14 +468,10 @@
         (EpaComments
          []))
        (HsTupleTy
-        (EpAnn
-         (EpaSpan { KindSigs.hs:16:15-54 })
-         (AnnParen
-          (AnnParensHash)
-          (EpaSpan { KindSigs.hs:16:15-16 })
-          (EpaSpan { KindSigs.hs:16:53-54 }))
-         (EpaComments
-          []))
+        (AnnParen
+         (AnnParensHash)
+         (EpaSpan { KindSigs.hs:16:15-16 })
+         (EpaSpan { KindSigs.hs:16:53-54 }))
         (HsUnboxedTuple)
         [(L
           (EpAnn
@@ -566,11 +482,7 @@
            (EpaComments
             []))
           (HsKindSig
-           (EpAnn
-            (EpaSpan { KindSigs.hs:16:18-28 })
-            [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:16:22-23 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:16:22-23 }))]
            (L
             (EpAnn
              (EpaSpan { KindSigs.hs:16:18-20 })
@@ -579,11 +491,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:16:18-20 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -602,11 +510,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:16:25-28 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -626,11 +530,7 @@
            (EpaComments
             []))
           (HsTyVar
-           (EpAnn
-            (EpaSpan { KindSigs.hs:16:31-34 })
-            []
-            (EpaComments
-             []))
+           []
            (NotPromoted)
            (L
             (EpAnn
@@ -649,11 +549,7 @@
            (EpaComments
             []))
           (HsKindSig
-           (EpAnn
-            (EpaSpan { KindSigs.hs:16:37-51 })
-            [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:16:45-46 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:16:45-46 }))]
            (L
             (EpAnn
              (EpaSpan { KindSigs.hs:16:37-43 })
@@ -671,11 +567,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { KindSigs.hs:16:37-41 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -694,11 +586,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { KindSigs.hs:16:43 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -717,11 +605,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:16:48-51 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -742,12 +626,8 @@
     (TyClD
      (NoExtField)
      (SynDecl
-      (EpAnn
-       (EpaSpan { KindSigs.hs:19:1-26 })
-       [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:19:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:19:10 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:19:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:19:10 }))]
       (L
        (EpAnn
         (EpaSpan { KindSigs.hs:19:6-8 })
@@ -769,14 +649,10 @@
         (EpaComments
          []))
        (HsListTy
-        (EpAnn
-         (EpaSpan { KindSigs.hs:19:12-26 })
-         (AnnParen
-          (AnnParensSquare)
-          (EpaSpan { KindSigs.hs:19:12 })
-          (EpaSpan { KindSigs.hs:19:26 }))
-         (EpaComments
-          []))
+        (AnnParen
+         (AnnParensSquare)
+         (EpaSpan { KindSigs.hs:19:12 })
+         (EpaSpan { KindSigs.hs:19:26 }))
         (L
          (EpAnn
           (EpaSpan { KindSigs.hs:19:14-24 })
@@ -785,11 +661,7 @@
           (EpaComments
            []))
          (HsKindSig
-          (EpAnn
-           (EpaSpan { KindSigs.hs:19:14-24 })
-           [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:19:18-19 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:19:18-19 }))]
           (L
            (EpAnn
             (EpaSpan { KindSigs.hs:19:14-16 })
@@ -798,11 +670,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { KindSigs.hs:19:14-16 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -821,11 +689,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { KindSigs.hs:19:21-24 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -846,13 +710,9 @@
     (SigD
      (NoExtField)
      (TypeSig
-      (EpAnn
-       (EpaSpan { KindSigs.hs:22:1-44 })
-       (AnnSig
-        (AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:22:5-6 }))
-        [])
-       (EpaComments
-        []))
+      (AnnSig
+       (AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:22:5-6 }))
+       [])
       [(L
         (EpAnn
          (EpaSpan { KindSigs.hs:22:1-3 })
@@ -883,11 +743,7 @@
            (EpaComments
             []))
           (HsFunTy
-           (EpAnn
-            (EpaSpan { KindSigs.hs:22:8-44 })
-            (NoEpAnns)
-            (EpaComments
-             []))
+           (NoExtField)
            (HsUnrestrictedArrow
             (EpUniTok
              (EpaSpan { KindSigs.hs:22:22-23 })
@@ -900,14 +756,10 @@
              (EpaComments
               []))
             (HsParTy
-             (EpAnn
-              (EpaSpan { KindSigs.hs:22:8-20 })
-              (AnnParen
-               (AnnParens)
-               (EpaSpan { KindSigs.hs:22:8 })
-               (EpaSpan { KindSigs.hs:22:20 }))
-              (EpaComments
-               []))
+             (AnnParen
+              (AnnParens)
+              (EpaSpan { KindSigs.hs:22:8 })
+              (EpaSpan { KindSigs.hs:22:20 }))
              (L
               (EpAnn
                (EpaSpan { KindSigs.hs:22:9-19 })
@@ -916,11 +768,7 @@
                (EpaComments
                 []))
               (HsKindSig
-               (EpAnn
-                (EpaSpan { KindSigs.hs:22:9-19 })
-                [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:22:13-14 }))]
-                (EpaComments
-                 []))
+               [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:22:13-14 }))]
                (L
                 (EpAnn
                  (EpaSpan { KindSigs.hs:22:9-11 })
@@ -929,11 +777,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { KindSigs.hs:22:9-11 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -952,11 +796,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { KindSigs.hs:22:16-19 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -975,11 +815,7 @@
              (EpaComments
               []))
             (HsFunTy
-             (EpAnn
-              (EpaSpan { KindSigs.hs:22:25-44 })
-              (NoEpAnns)
-              (EpaComments
-               []))
+             (NoExtField)
              (HsUnrestrictedArrow
               (EpUniTok
                (EpaSpan { KindSigs.hs:22:30-31 })
@@ -992,11 +828,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { KindSigs.hs:22:25-28 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1015,14 +847,10 @@
                (EpaComments
                 []))
               (HsParTy
-               (EpAnn
-                (EpaSpan { KindSigs.hs:22:33-44 })
-                (AnnParen
-                 (AnnParens)
-                 (EpaSpan { KindSigs.hs:22:33 })
-                 (EpaSpan { KindSigs.hs:22:44 }))
-                (EpaComments
-                 []))
+               (AnnParen
+                (AnnParens)
+                (EpaSpan { KindSigs.hs:22:33 })
+                (EpaSpan { KindSigs.hs:22:44 }))
                (L
                 (EpAnn
                  (EpaSpan { KindSigs.hs:22:34-43 })
@@ -1031,11 +859,7 @@
                  (EpaComments
                   []))
                 (HsKindSig
-                 (EpAnn
-                  (EpaSpan { KindSigs.hs:22:34-43 })
-                  [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:22:37-38 }))]
-                  (EpaComments
-                   []))
+                 [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:22:37-38 }))]
                  (L
                   (EpAnn
                    (EpaSpan { KindSigs.hs:22:34-35 })
@@ -1044,14 +868,10 @@
                    (EpaComments
                     []))
                   (HsTupleTy
-                   (EpAnn
-                    (EpaSpan { KindSigs.hs:22:34-35 })
-                    (AnnParen
-                     (AnnParens)
-                     (EpaSpan { KindSigs.hs:22:34 })
-                     (EpaSpan { KindSigs.hs:22:35 }))
-                    (EpaComments
-                     []))
+                   (AnnParen
+                    (AnnParens)
+                    (EpaSpan { KindSigs.hs:22:34 })
+                    (EpaSpan { KindSigs.hs:22:35 }))
                    (HsBoxedOrConstraintTuple)
                    []))
                  (L
@@ -1062,11 +882,7 @@
                    (EpaComments
                     []))
                   (HsTyVar
-                   (EpAnn
-                    (EpaSpan { KindSigs.hs:22:40-43 })
-                    []
-                    (EpaComments
-                     []))
+                   []
                    (NotPromoted)
                    (L
                     (EpAnn
@@ -1118,11 +934,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { KindSigs.hs:23:1-12 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -1204,12 +1016,8 @@
     (TyClD
      (NoExtField)
      (SynDecl
-      (EpAnn
-       (EpaSpan { KindSigs.hs:26:1-29 })
-       [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:26:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:26:11 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:26:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:26:11 }))]
       (L
        (EpAnn
         (EpaSpan { KindSigs.hs:26:6-9 })
@@ -1231,13 +1039,9 @@
         (EpaComments
          []))
        (HsExplicitListTy
-        (EpAnn
-         (EpaSpan { KindSigs.hs:26:13-29 })
-         [(AddEpAnn AnnSimpleQuote (EpaSpan { KindSigs.hs:26:13 }))
-         ,(AddEpAnn AnnOpenS (EpaSpan { KindSigs.hs:26:14 }))
-         ,(AddEpAnn AnnCloseS (EpaSpan { KindSigs.hs:26:29 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnSimpleQuote (EpaSpan { KindSigs.hs:26:13 }))
+        ,(AddEpAnn AnnOpenS (EpaSpan { KindSigs.hs:26:14 }))
+        ,(AddEpAnn AnnCloseS (EpaSpan { KindSigs.hs:26:29 }))]
         (IsPromoted)
         [(L
           (EpAnn
@@ -1247,11 +1051,7 @@
            (EpaComments
             []))
           (HsKindSig
-           (EpAnn
-            (EpaSpan { KindSigs.hs:26:16-27 })
-            [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:26:21-22 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:26:21-22 }))]
            (L
             (EpAnn
              (EpaSpan { KindSigs.hs:26:16-19 })
@@ -1260,11 +1060,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:26:16-19 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1283,11 +1079,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:26:24-27 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1308,12 +1100,8 @@
     (TyClD
      (NoExtField)
      (SynDecl
-      (EpAnn
-       (EpaSpan { KindSigs.hs:27:1-45 })
-       [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:27:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:27:12 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:27:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:27:12 }))]
       (L
        (EpAnn
         (EpaSpan { KindSigs.hs:27:6-10 })
@@ -1335,12 +1123,8 @@
         (EpaComments
          []))
        (HsExplicitListTy
-        (EpAnn
-         (EpaSpan { KindSigs.hs:27:14-45 })
-         [(AddEpAnn AnnOpenS (EpaSpan { KindSigs.hs:27:14 }))
-         ,(AddEpAnn AnnCloseS (EpaSpan { KindSigs.hs:27:45 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnOpenS (EpaSpan { KindSigs.hs:27:14 }))
+        ,(AddEpAnn AnnCloseS (EpaSpan { KindSigs.hs:27:45 }))]
         (NotPromoted)
         [(L
           (EpAnn
@@ -1351,11 +1135,7 @@
            (EpaComments
             []))
           (HsKindSig
-           (EpAnn
-            (EpaSpan { KindSigs.hs:27:16-27 })
-            [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:27:21-22 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:27:21-22 }))]
            (L
             (EpAnn
              (EpaSpan { KindSigs.hs:27:16-19 })
@@ -1364,11 +1144,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:27:16-19 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1387,11 +1163,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:27:24-27 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1410,11 +1182,7 @@
            (EpaComments
             []))
           (HsKindSig
-           (EpAnn
-            (EpaSpan { KindSigs.hs:27:30-42 })
-            [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:27:36-37 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:27:36-37 }))]
            (L
             (EpAnn
              (EpaSpan { KindSigs.hs:27:30-34 })
@@ -1423,11 +1191,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:27:30-34 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1446,11 +1210,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { KindSigs.hs:27:39-42 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
@@ -1471,12 +1231,8 @@
     (TyClD
      (NoExtField)
      (SynDecl
-      (EpAnn
-       (EpaSpan { KindSigs.hs:28:1-44 })
-       [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:28:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:28:14 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:28:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:28:14 }))]
       (L
        (EpAnn
         (EpaSpan { KindSigs.hs:28:6-10 })
@@ -1496,11 +1252,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { KindSigs.hs:28:12 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -1521,13 +1273,9 @@
         (EpaComments
          []))
        (HsExplicitTupleTy
-        (EpAnn
-         (EpaSpan { KindSigs.hs:28:16-44 })
-         [(AddEpAnn AnnSimpleQuote (EpaSpan { KindSigs.hs:28:16 }))
-         ,(AddEpAnn AnnOpenP (EpaSpan { KindSigs.hs:28:17 }))
-         ,(AddEpAnn AnnCloseP (EpaSpan { KindSigs.hs:28:44 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnSimpleQuote (EpaSpan { KindSigs.hs:28:16 }))
+        ,(AddEpAnn AnnOpenP (EpaSpan { KindSigs.hs:28:17 }))
+        ,(AddEpAnn AnnCloseP (EpaSpan { KindSigs.hs:28:44 }))]
         [(L
           (EpAnn
            (EpaSpan { KindSigs.hs:28:19-39 })
@@ -1537,11 +1285,7 @@
            (EpaComments
             []))
           (HsKindSig
-           (EpAnn
-            (EpaSpan { KindSigs.hs:28:19-39 })
-            [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:28:31-32 }))]
-            (EpaComments
-             []))
+           [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:28:31-32 }))]
            (L
             (EpAnn
              (EpaSpan { KindSigs.hs:28:19-29 })
@@ -1550,12 +1294,8 @@
              (EpaComments
               []))
             (HsExplicitListTy
-             (EpAnn
-              (EpaSpan { KindSigs.hs:28:19-29 })
-              [(AddEpAnn AnnOpenS (EpaSpan { KindSigs.hs:28:19 }))
-              ,(AddEpAnn AnnCloseS (EpaSpan { KindSigs.hs:28:29 }))]
-              (EpaComments
-               []))
+             [(AddEpAnn AnnOpenS (EpaSpan { KindSigs.hs:28:19 }))
+             ,(AddEpAnn AnnCloseS (EpaSpan { KindSigs.hs:28:29 }))]
              (NotPromoted)
              [(L
                (EpAnn
@@ -1566,11 +1306,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { KindSigs.hs:28:20-22 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -1589,11 +1325,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { KindSigs.hs:28:25-28 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -1612,14 +1344,10 @@
              (EpaComments
               []))
             (HsListTy
-             (EpAnn
-              (EpaSpan { KindSigs.hs:28:34-39 })
-              (AnnParen
-               (AnnParensSquare)
-               (EpaSpan { KindSigs.hs:28:34 })
-               (EpaSpan { KindSigs.hs:28:39 }))
-              (EpaComments
-               []))
+             (AnnParen
+              (AnnParensSquare)
+              (EpaSpan { KindSigs.hs:28:34 })
+              (EpaSpan { KindSigs.hs:28:39 }))
              (L
               (EpAnn
                (EpaSpan { KindSigs.hs:28:35-38 })
@@ -1628,11 +1356,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { KindSigs.hs:28:35-38 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1651,11 +1375,7 @@
            (EpaComments
             []))
           (HsTyVar
-           (EpAnn
-            (EpaSpan { KindSigs.hs:28:42 })
-            []
-            (EpaComments
-             []))
+           []
            (NotPromoted)
            (L
             (EpAnn
@@ -1676,12 +1396,8 @@
     (TyClD
      (NoExtField)
      (SynDecl
-      (EpAnn
-       (EpaSpan { KindSigs.hs:31:1-31 })
-       [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:31:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:31:19 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnType (EpaSpan { KindSigs.hs:31:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { KindSigs.hs:31:19 }))]
       (L
        (EpAnn
         (EpaSpan { KindSigs.hs:31:6-17 })
@@ -1703,11 +1419,7 @@
         (EpaComments
          []))
        (HsKindSig
-        (EpAnn
-         (EpaSpan { KindSigs.hs:31:21-31 })
-         [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:31:25-26 }))]
-         (EpaComments
-          []))
+        [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:31:25-26 }))]
         (L
          (EpAnn
           (EpaSpan { KindSigs.hs:31:21-23 })
@@ -1716,11 +1428,7 @@
           (EpaComments
            []))
          (HsTyVar
-          (EpAnn
-           (EpaSpan { KindSigs.hs:31:21-23 })
-           []
-           (EpaComments
-            []))
+          []
           (NotPromoted)
           (L
            (EpAnn
@@ -1739,11 +1447,7 @@
           (EpaComments
            []))
          (HsTyVar
-          (EpAnn
-           (EpaSpan { KindSigs.hs:31:28-31 })
-           []
-           (EpaComments
-            []))
+          []
           (NotPromoted)
           (L
            (EpAnn
@@ -1764,13 +1468,9 @@
     (SigD
      (NoExtField)
      (TypeSig
-      (EpAnn
-       (EpaSpan { KindSigs.hs:34:1-22 })
-       (AnnSig
-        (AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:34:6-7 }))
-        [])
-       (EpaComments
-        []))
+      (AnnSig
+       (AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:34:6-7 }))
+       [])
       [(L
         (EpAnn
          (EpaSpan { KindSigs.hs:34:1-4 })
@@ -1801,14 +1501,10 @@
            (EpaComments
             []))
           (HsParTy
-           (EpAnn
-            (EpaSpan { KindSigs.hs:34:9-22 })
-            (AnnParen
-             (AnnParens)
-             (EpaSpan { KindSigs.hs:34:9 })
-             (EpaSpan { KindSigs.hs:34:22 }))
-            (EpaComments
-             []))
+           (AnnParen
+            (AnnParens)
+            (EpaSpan { KindSigs.hs:34:9 })
+            (EpaSpan { KindSigs.hs:34:22 }))
            (L
             (EpAnn
              (EpaSpan { KindSigs.hs:34:10-21 })
@@ -1817,11 +1513,7 @@
              (EpaComments
               []))
             (HsKindSig
-             (EpAnn
-              (EpaSpan { KindSigs.hs:34:10-21 })
-              [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:34:15-16 }))]
-              (EpaComments
-               []))
+             [(AddEpAnn AnnDcolon (EpaSpan { KindSigs.hs:34:15-16 }))]
              (L
               (EpAnn
                (EpaSpan { KindSigs.hs:34:10-13 })
@@ -1830,11 +1522,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { KindSigs.hs:34:10-13 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1853,11 +1541,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { KindSigs.hs:34:18-21 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -1909,11 +1593,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { KindSigs.hs:35:1-11 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
diff --git a/testsuite/tests/parser/should_compile/T14189.stderr b/testsuite/tests/parser/should_compile/T14189.stderr
index 4390aa1841b7..f961ec214f8f 100644
--- a/testsuite/tests/parser/should_compile/T14189.stderr
+++ b/testsuite/tests/parser/should_compile/T14189.stderr
@@ -77,11 +77,7 @@
                   (EpaComments
                    []))
                  (HsTyVar
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   (NotPromoted)
                   (L
                    (EpAnn
@@ -160,11 +156,7 @@
                   (EpaComments
                    []))
                  (ConDeclField
-                  (EpAnn
-                   (EpaDelta (SameLine 0) [])
-                   []
-                   (EpaComments
-                    []))
+                  []
                   [(L
                     (EpAnn
                      (EpaSpan { T14189.hs:6:33 })
@@ -191,11 +183,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaDelta (SameLine 0) [])
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -267,12 +255,8 @@
       (IEThingWith
        ((,)
         (Nothing)
-        (EpAnn
-         (EpaSpan { T14189.hs:3:3-8 })
-         [(AddEpAnn AnnOpenP (EpaSpan { T14189.hs:3:10 }))
-         ,(AddEpAnn AnnCloseP (EpaSpan { T14189.hs:3:15 }))]
-         (EpaComments
-          [])))
+        [(AddEpAnn AnnOpenP (EpaSpan { T14189.hs:3:10 }))
+        ,(AddEpAnn AnnCloseP (EpaSpan { T14189.hs:3:15 }))])
        (L
         (EpAnn
          (EpaSpan { T14189.hs:3:3-8 })
diff --git a/testsuite/tests/parser/should_compile/T15323.stderr b/testsuite/tests/parser/should_compile/T15323.stderr
index 12c154a7d6f4..334665536968 100644
--- a/testsuite/tests/parser/should_compile/T15323.stderr
+++ b/testsuite/tests/parser/should_compile/T15323.stderr
@@ -43,12 +43,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T15323.hs:(5,1)-(6,54) })
-       [(AddEpAnn AnnData (EpaSpan { T15323.hs:5:1-4 }))
-       ,(AddEpAnn AnnWhere (EpaSpan { T15323.hs:5:21-25 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T15323.hs:5:1-4 }))
+      ,(AddEpAnn AnnWhere (EpaSpan { T15323.hs:5:21-25 }))]
       (L
        (EpAnn
         (EpaSpan { T15323.hs:5:6-17 })
@@ -68,11 +64,7 @@
           (EpaComments
            []))
          (UserTyVar
-          (EpAnn
-           (EpaSpan { T15323.hs:5:19 })
-           []
-           (EpaComments
-            []))
+          []
           (HsBndrRequired
            (NoExtField))
           (L
@@ -104,11 +96,7 @@
             (EpUniTok
              (EpaSpan { T15323.hs:6:17-18 })
              (NormalSyntax))
-            (EpAnn
-             (EpaSpan { T15323.hs:6:5-54 })
-             []
-             (EpaComments
-              [])))
+            [])
            (:|
             (L
              (EpAnn
@@ -143,11 +131,7 @@
                 (EpaComments
                  []))
                (UserTyVar
-                (EpAnn
-                 (EpaSpan { T15323.hs:6:27 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (SpecifiedSpec)
                 (L
                  (EpAnn
@@ -179,14 +163,10 @@
                 (EpaComments
                  []))
                (HsParTy
-                (EpAnn
-                 (EpaSpan { T15323.hs:6:31-36 })
-                 (AnnParen
-                  (AnnParens)
-                  (EpaSpan { T15323.hs:6:31 })
-                  (EpaSpan { T15323.hs:6:36 }))
-                 (EpaComments
-                  []))
+                (AnnParen
+                 (AnnParens)
+                 (EpaSpan { T15323.hs:6:31 })
+                 (EpaSpan { T15323.hs:6:36 }))
                 (L
                  (EpAnn
                   (EpaSpan { T15323.hs:6:32-35 })
@@ -204,11 +184,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T15323.hs:6:32-33 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -227,11 +203,7 @@
                     (EpaComments
                      []))
                    (HsTyVar
-                    (EpAnn
-                     (EpaSpan { T15323.hs:6:35 })
-                     []
-                     (EpaComments
-                      []))
+                    []
                     (NotPromoted)
                     (L
                      (EpAnn
@@ -262,11 +234,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T15323.hs:6:41-52 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
@@ -285,11 +253,7 @@
                (EpaComments
                 []))
               (HsTyVar
-               (EpAnn
-                (EpaSpan { T15323.hs:6:54 })
-                []
-                (EpaComments
-                 []))
+               []
                (NotPromoted)
                (L
                 (EpAnn
diff --git a/testsuite/tests/parser/should_compile/T20452.stderr b/testsuite/tests/parser/should_compile/T20452.stderr
index 5f5fbd46214a..eb9214d3ee6e 100644
--- a/testsuite/tests/parser/should_compile/T20452.stderr
+++ b/testsuite/tests/parser/should_compile/T20452.stderr
@@ -43,12 +43,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T20452.hs:5:1-31 })
-       [(AddEpAnn AnnData (EpaSpan { T20452.hs:5:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { T20452.hs:5:24 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T20452.hs:5:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { T20452.hs:5:24 }))]
       (L
        (EpAnn
         (EpaSpan { T20452.hs:5:6-11 })
@@ -68,13 +64,9 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { T20452.hs:5:14-21 })
-           [(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:5:17-18 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:5:14 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:5:21 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:5:14 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:5:21 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:5:17-18 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -94,11 +86,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { T20452.hs:5:20 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -125,11 +113,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T20452.hs:5:26-31 })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T20452.hs:5:26-31 })
@@ -157,12 +141,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T20452.hs:6:1-31 })
-       [(AddEpAnn AnnData (EpaSpan { T20452.hs:6:1-4 }))
-       ,(AddEpAnn AnnEqual (EpaSpan { T20452.hs:6:24 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T20452.hs:6:1-4 }))
+      ,(AddEpAnn AnnEqual (EpaSpan { T20452.hs:6:24 }))]
       (L
        (EpAnn
         (EpaSpan { T20452.hs:6:6-11 })
@@ -182,15 +162,11 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { T20452.hs:6:13-22 })
-           [(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:6:17-18 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:6:13 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:6:14 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:6:21 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:6:22 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:6:13 }))
+          ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:6:14 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:6:21 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:6:22 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:6:17-18 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -210,11 +186,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { T20452.hs:6:20 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -241,11 +213,7 @@
            (EpaComments
             []))
           (ConDeclH98
-           (EpAnn
-            (EpaSpan { T20452.hs:6:26-31 })
-            []
-            (EpaComments
-             []))
+           []
            (L
             (EpAnn
              (EpaSpan { T20452.hs:6:26-31 })
@@ -274,14 +242,10 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T20452.hs:8:1-85 })
-        [(AddEpAnn AnnClass (EpaSpan { T20452.hs:8:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T20452.hs:8:78-82 }))
-        ,(AddEpAnn AnnOpenC (EpaSpan { T20452.hs:8:84 }))
-        ,(AddEpAnn AnnCloseC (EpaSpan { T20452.hs:8:85 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T20452.hs:8:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T20452.hs:8:78-82 }))
+       ,(AddEpAnn AnnOpenC (EpaSpan { T20452.hs:8:84 }))
+       ,(AddEpAnn AnnCloseC (EpaSpan { T20452.hs:8:85 }))]
        (EpExplicitBraces
         (EpTok
          (EpaSpan { T20452.hs:8:84 }))
@@ -308,13 +272,9 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { T20452.hs:8:15-26 })
-           [(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:8:20-21 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:8:15 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:8:26 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:8:15 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:8:26 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:8:20-21 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -334,11 +294,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { T20452.hs:8:23-25 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -357,13 +313,9 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { T20452.hs:8:30-45 })
-           [(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:8:36-37 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:8:30 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:8:45 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:8:30 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:8:45 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:8:36-37 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -383,11 +335,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { T20452.hs:8:39-44 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -406,13 +354,9 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { T20452.hs:8:49-75 })
-           [(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:8:54-55 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:8:49 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:8:75 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:8:49 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:8:75 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:8:54-55 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -432,14 +376,10 @@
             (EpaComments
              []))
            (HsListTy
-            (EpAnn
-             (EpaSpan { T20452.hs:8:57-74 })
-             (AnnParen
-              (AnnParensSquare)
-              (EpaSpan { T20452.hs:8:57 })
-              (EpaSpan { T20452.hs:8:74 }))
-             (EpaComments
-              []))
+            (AnnParen
+             (AnnParensSquare)
+             (EpaSpan { T20452.hs:8:57 })
+             (EpaSpan { T20452.hs:8:74 }))
             (L
              (EpAnn
               (EpaSpan { T20452.hs:8:58-73 })
@@ -448,14 +388,10 @@
               (EpaComments
                []))
              (HsTupleTy
-              (EpAnn
-               (EpaSpan { T20452.hs:8:58-73 })
-               (AnnParen
-                (AnnParens)
-                (EpaSpan { T20452.hs:8:58 })
-                (EpaSpan { T20452.hs:8:73 }))
-               (EpaComments
-                []))
+              (AnnParen
+               (AnnParens)
+               (EpaSpan { T20452.hs:8:58 })
+               (EpaSpan { T20452.hs:8:73 }))
               (HsBoxedOrConstraintTuple)
               [(L
                 (EpAnn
@@ -466,11 +402,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { T20452.hs:8:59-64 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -489,11 +421,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { T20452.hs:8:67-72 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -523,14 +451,10 @@
      (NoExtField)
      (ClassDecl
       ((,,)
-       (EpAnn
-        (EpaSpan { T20452.hs:9:1-85 })
-        [(AddEpAnn AnnClass (EpaSpan { T20452.hs:9:1-5 }))
-        ,(AddEpAnn AnnWhere (EpaSpan { T20452.hs:9:78-82 }))
-        ,(AddEpAnn AnnOpenC (EpaSpan { T20452.hs:9:84 }))
-        ,(AddEpAnn AnnCloseC (EpaSpan { T20452.hs:9:85 }))]
-        (EpaComments
-         []))
+       [(AddEpAnn AnnClass (EpaSpan { T20452.hs:9:1-5 }))
+       ,(AddEpAnn AnnWhere (EpaSpan { T20452.hs:9:78-82 }))
+       ,(AddEpAnn AnnOpenC (EpaSpan { T20452.hs:9:84 }))
+       ,(AddEpAnn AnnCloseC (EpaSpan { T20452.hs:9:85 }))]
        (EpExplicitBraces
         (EpTok
          (EpaSpan { T20452.hs:9:84 }))
@@ -557,15 +481,11 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { T20452.hs:9:14-27 })
-           [(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:9:20-21 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:14 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:15 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:26 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:27 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:14 }))
+          ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:15 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:26 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:27 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:9:20-21 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -585,11 +505,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { T20452.hs:9:23-25 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -608,15 +524,11 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { T20452.hs:9:29-46 })
-           [(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:9:36-37 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:29 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:30 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:45 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:46 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:29 }))
+          ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:30 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:45 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:46 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:9:36-37 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -636,11 +548,7 @@
             (EpaComments
              []))
            (HsTyVar
-            (EpAnn
-             (EpaSpan { T20452.hs:9:39-44 })
-             []
-             (EpaComments
-              []))
+            []
             (NotPromoted)
             (L
              (EpAnn
@@ -659,15 +567,11 @@
           (EpaComments
            []))
          (KindedTyVar
-          (EpAnn
-           (EpaSpan { T20452.hs:9:48-76 })
-           [(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:9:54-55 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:48 }))
-           ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:49 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:75 }))
-           ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:76 }))]
-           (EpaComments
-            []))
+          [(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:48 }))
+          ,(AddEpAnn AnnOpenP (EpaSpan { T20452.hs:9:49 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:75 }))
+          ,(AddEpAnn AnnCloseP (EpaSpan { T20452.hs:9:76 }))
+          ,(AddEpAnn AnnDcolon (EpaSpan { T20452.hs:9:54-55 }))]
           (HsBndrRequired
            (NoExtField))
           (L
@@ -687,14 +591,10 @@
             (EpaComments
              []))
            (HsListTy
-            (EpAnn
-             (EpaSpan { T20452.hs:9:57-74 })
-             (AnnParen
-              (AnnParensSquare)
-              (EpaSpan { T20452.hs:9:57 })
-              (EpaSpan { T20452.hs:9:74 }))
-             (EpaComments
-              []))
+            (AnnParen
+             (AnnParensSquare)
+             (EpaSpan { T20452.hs:9:57 })
+             (EpaSpan { T20452.hs:9:74 }))
             (L
              (EpAnn
               (EpaSpan { T20452.hs:9:58-73 })
@@ -703,14 +603,10 @@
               (EpaComments
                []))
              (HsTupleTy
-              (EpAnn
-               (EpaSpan { T20452.hs:9:58-73 })
-               (AnnParen
-                (AnnParens)
-                (EpaSpan { T20452.hs:9:58 })
-                (EpaSpan { T20452.hs:9:73 }))
-               (EpaComments
-                []))
+              (AnnParen
+               (AnnParens)
+               (EpaSpan { T20452.hs:9:58 })
+               (EpaSpan { T20452.hs:9:73 }))
               (HsBoxedOrConstraintTuple)
               [(L
                 (EpAnn
@@ -721,11 +617,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { T20452.hs:9:59-64 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
@@ -744,11 +636,7 @@
                  (EpaComments
                   []))
                 (HsTyVar
-                 (EpAnn
-                  (EpaSpan { T20452.hs:9:67-72 })
-                  []
-                  (EpaComments
-                   []))
+                 []
                  (NotPromoted)
                  (L
                   (EpAnn
diff --git a/testsuite/tests/parser/should_compile/T20718.stderr b/testsuite/tests/parser/should_compile/T20718.stderr
index 21f52961b6f6..23d9c9c88d12 100644
--- a/testsuite/tests/parser/should_compile/T20718.stderr
+++ b/testsuite/tests/parser/should_compile/T20718.stderr
@@ -114,11 +114,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { T20718.hs:8:1-5 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -158,11 +154,7 @@
                  (EpaComments
                   []))
                 (HsOverLit
-                 (EpAnn
-                  (EpaSpan { T20718.hs:8:5 })
-                  (NoEpAnns)
-                  (EpaComments
-                   []))
+                 (NoExtField)
                  (OverLit
                   (NoExtField)
                   (HsIntegral
diff --git a/testsuite/tests/parser/should_compile/T20846.stderr b/testsuite/tests/parser/should_compile/T20846.stderr
index c05951ede47b..2fd94dabea59 100644
--- a/testsuite/tests/parser/should_compile/T20846.stderr
+++ b/testsuite/tests/parser/should_compile/T20846.stderr
@@ -43,11 +43,7 @@
     (SigD
      (NoExtField)
      (FixSig
-      (EpAnn
-       (EpaSpan { T20846.hs:3:1-11 })
-       [(AddEpAnn AnnInfix (EpaSpan { T20846.hs:3:1-6 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnInfix (EpaSpan { T20846.hs:3:1-6 }))]
       (FixitySig
        (NoExtField)
        [(L
@@ -105,11 +101,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { T20846.hs:4:1-18 })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
diff --git a/testsuite/tests/parser/should_compile/T23315/T23315.stderr b/testsuite/tests/parser/should_compile/T23315/T23315.stderr
index 2c649b51a7ff..1c57157c5f01 100644
--- a/testsuite/tests/parser/should_compile/T23315/T23315.stderr
+++ b/testsuite/tests/parser/should_compile/T23315/T23315.stderr
@@ -61,13 +61,9 @@
     (SigD
      (NoExtField)
      (TypeSig
-      (EpAnn
-       (EpaSpan { T23315.hsig:3:1-7 })
-       (AnnSig
-        (AddEpAnn AnnDcolon (EpaSpan { T23315.hsig:3:3-4 }))
-        [])
-       (EpaComments
-        []))
+      (AnnSig
+       (AddEpAnn AnnDcolon (EpaSpan { T23315.hsig:3:3-4 }))
+       [])
       [(L
         (EpAnn
          (EpaSpan { T23315.hsig:3:1 })
@@ -98,14 +94,10 @@
            (EpaComments
             []))
           (HsTupleTy
-           (EpAnn
-            (EpaSpan { T23315.hsig:3:6-7 })
-            (AnnParen
-             (AnnParens)
-             (EpaSpan { T23315.hsig:3:6 })
-             (EpaSpan { T23315.hsig:3:7 }))
-            (EpaComments
-             []))
+           (AnnParen
+            (AnnParens)
+            (EpaSpan { T23315.hsig:3:6 })
+            (EpaSpan { T23315.hsig:3:7 }))
            (HsBoxedOrConstraintTuple)
            []))))))))
   ,(L
diff --git a/testsuite/tests/plugins/hooks-plugin/Hooks/MetaPlugin.hs b/testsuite/tests/plugins/hooks-plugin/Hooks/MetaPlugin.hs
index 29c1dab2b73f..c53cb7807b10 100644
--- a/testsuite/tests/plugins/hooks-plugin/Hooks/MetaPlugin.hs
+++ b/testsuite/tests/plugins/hooks-plugin/Hooks/MetaPlugin.hs
@@ -36,7 +36,7 @@ fakeRunMeta opts (MetaE r) _ = do
   pure $ r zero
 
   where zero :: LHsExpr GhcPs
-        zero = noLocA $ HsLit noAnn $
+        zero = noLocA $ HsLit noExtField $
           HsInt NoExtField (mkIntegralLit (0 :: Int))
 
 fakeRunMeta _ _ _ = error "fakeRunMeta: unimplemented"
diff --git a/testsuite/tests/printer/T18791.stderr b/testsuite/tests/printer/T18791.stderr
index 1b577b48147d..95df4dda5d7a 100644
--- a/testsuite/tests/printer/T18791.stderr
+++ b/testsuite/tests/printer/T18791.stderr
@@ -43,12 +43,8 @@
     (TyClD
      (NoExtField)
      (DataDecl
-      (EpAnn
-       (EpaSpan { T18791.hs:(4,1)-(5,17) })
-       [(AddEpAnn AnnData (EpaSpan { T18791.hs:4:1-4 }))
-       ,(AddEpAnn AnnWhere (EpaSpan { T18791.hs:4:8-12 }))]
-       (EpaComments
-        []))
+      [(AddEpAnn AnnData (EpaSpan { T18791.hs:4:1-4 }))
+      ,(AddEpAnn AnnWhere (EpaSpan { T18791.hs:4:8-12 }))]
       (L
        (EpAnn
         (EpaSpan { T18791.hs:4:6 })
@@ -81,11 +77,7 @@
             (EpUniTok
              (EpaSpan { T18791.hs:5:7-8 })
              (NormalSyntax))
-            (EpAnn
-             (EpaSpan { T18791.hs:5:3-17 })
-             []
-             (EpaComments
-              [])))
+            [])
            (:|
             (L
              (EpAnn
@@ -122,11 +114,7 @@
                 (EpaComments
                  []))
                (HsTyVar
-                (EpAnn
-                 (EpaSpan { T18791.hs:5:10-12 })
-                 []
-                 (EpaComments
-                  []))
+                []
                 (NotPromoted)
                 (L
                  (EpAnn
@@ -145,11 +133,7 @@
              (EpaComments
               []))
             (HsTyVar
-             (EpAnn
-              (EpaSpan { T18791.hs:5:17 })
-              []
-              (EpaComments
-               []))
+             []
              (NotPromoted)
              (L
               (EpAnn
diff --git a/testsuite/tests/printer/Test20297.stdout b/testsuite/tests/printer/Test20297.stdout
index 415f5d725ff7..f52290b5c33f 100644
--- a/testsuite/tests/printer/Test20297.stdout
+++ b/testsuite/tests/printer/Test20297.stdout
@@ -80,11 +80,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { Test20297.hs:(5,1)-(7,7) })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -204,11 +200,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { Test20297.hs:(9,1)-(11,26) })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -318,11 +310,7 @@
                        (EpaComments
                         []))
                       (Match
-                       (EpAnn
-                        (EpaSpan { Test20297.hs:11:9-26 })
-                        []
-                        (EpaComments
-                         []))
+                       []
                        (FunRhs
                         (L
                          (EpAnn
@@ -362,17 +350,13 @@
                              (EpaComments
                               []))
                             (HsDo
-                             (EpAnn
-                              (EpaSpan { Test20297.hs:11:19-26 })
-                              (AnnList
-                               (Just
-                                (EpaSpan { Test20297.hs:11:22-26 }))
-                               (Nothing)
-                               (Nothing)
-                               [(AddEpAnn AnnDo (EpaSpan { Test20297.hs:11:19-20 }))]
-                               [])
-                              (EpaComments
-                               []))
+                             (AnnList
+                              (Just
+                               (EpaSpan { Test20297.hs:11:22-26 }))
+                              (Nothing)
+                              (Nothing)
+                              [(AddEpAnn AnnDo (EpaSpan { Test20297.hs:11:19-20 }))]
+                              [])
                              (DoExpr
                               (Nothing))
                              (L
@@ -503,11 +487,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { Test20297.ppr.hs:(3,1)-(5,7) })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -615,11 +595,7 @@
            (EpaComments
             []))
           (Match
-           (EpAnn
-            (EpaSpan { Test20297.ppr.hs:(6,1)-(9,24) })
-            []
-            (EpaComments
-             []))
+           []
            (FunRhs
             (L
              (EpAnn
@@ -723,11 +699,7 @@
                        (EpaComments
                         []))
                       (Match
-                       (EpAnn
-                        (EpaSpan { Test20297.ppr.hs:9:7-24 })
-                        []
-                        (EpaComments
-                         []))
+                       []
                        (FunRhs
                         (L
                          (EpAnn
@@ -767,17 +739,13 @@
                              (EpaComments
                               []))
                             (HsDo
-                             (EpAnn
-                              (EpaSpan { Test20297.ppr.hs:9:17-24 })
-                              (AnnList
-                               (Just
-                                (EpaSpan { Test20297.ppr.hs:9:20-24 }))
-                               (Nothing)
-                               (Nothing)
-                               [(AddEpAnn AnnDo (EpaSpan { Test20297.ppr.hs:9:17-18 }))]
-                               [])
-                              (EpaComments
-                               []))
+                             (AnnList
+                              (Just
+                               (EpaSpan { Test20297.ppr.hs:9:20-24 }))
+                              (Nothing)
+                              (Nothing)
+                              [(AddEpAnn AnnDo (EpaSpan { Test20297.ppr.hs:9:17-18 }))]
+                              [])
                              (DoExpr
                               (Nothing))
                              (L
diff --git a/utils/check-exact/ExactPrint.hs b/utils/check-exact/ExactPrint.hs
index 0628d2290869..7db4c4c77c05 100644
--- a/utils/check-exact/ExactPrint.hs
+++ b/utils/check-exact/ExactPrint.hs
@@ -608,11 +608,11 @@ flushComments trailing_anns = do
 -- |In order to interleave annotations into the stream, we turn them into
 -- comments. They are removed from the annotation to avoid duplication.
 annotationsToComments :: (Monad m, Monoid w)
-  => EpAnn a -> Lens a [AddEpAnn] -> [AnnKeywordId] -> EP w m (EpAnn a)
-annotationsToComments (EpAnn anc a cs) l kws = do
+  => a -> Lens a [AddEpAnn] -> [AnnKeywordId] -> EP w m a
+annotationsToComments a l kws = do
   let (newComments, newAnns) = go ([],[]) (view l a)
   addComments newComments
-  return (EpAnn anc (set l (reverse newAnns) a) cs)
+  return (set l (reverse newAnns) a)
   where
     keywords = Set.fromList kws
 
@@ -708,10 +708,10 @@ printStringAtAA :: (Monad m, Monoid w) => EpaLocation -> String -> EP w m EpaLoc
 printStringAtAA el str = printStringAtAAC CaptureComments el str
 
 printStringAtAAL :: (Monad m, Monoid w)
-  => EpAnn a -> Lens a EpaLocation -> String -> EP w m (EpAnn a)
-printStringAtAAL (EpAnn anc an cs) l str = do
+  => a -> Lens a EpaLocation -> String -> EP w m a
+printStringAtAAL an l str = do
   r <- printStringAtAAC CaptureComments (view l an) str
-  return (EpAnn anc (set l r an) cs)
+  return (set l r an)
 
 printStringAtAAC :: (Monad m, Monoid w)
   => CaptureComments -> EpaLocation -> String -> EP w m EpaLocation
@@ -748,11 +748,24 @@ markLensMAA (EpAnn anc a cs) l =
       aa' <- markAddEpAnn aa
       return (EpAnn anc (set l (Just aa') a) cs)
 
+markLensMAA' :: (Monad m, Monoid w) => a -> Lens a (Maybe AddEpAnn) -> EP w m a
+markLensMAA' a l =
+  case view l a of
+    Nothing -> return a
+    Just aa -> do
+      aa' <- markAddEpAnn aa
+      return (set l (Just aa') a)
+
 markLensAA :: (Monad m, Monoid w) => EpAnn a -> Lens a AddEpAnn -> EP w m (EpAnn a)
 markLensAA (EpAnn anc a cs) l = do
   a' <- markKw (view l a)
   return (EpAnn anc (set l a' a) cs)
 
+markLensAA' :: (Monad m, Monoid w) => a -> Lens a AddEpAnn -> EP w m a
+markLensAA' a l = do
+  a' <- markKw (view l a)
+  return (set l a' a)
+
 
 markEpAnnLMS :: (Monad m, Monoid w)
   => EpAnn a -> Lens a [AddEpAnn] -> AnnKeywordId -> Maybe String -> EP w m (EpAnn a)
@@ -768,6 +781,34 @@ markEpAnnLMS (EpAnn anc a cs) l kw (Just str) = do
           return (AddEpAnn kw' r')
       | otherwise = return (AddEpAnn kw' r)
 
+markEpAnnLMS'' :: (Monad m, Monoid w)
+  => a -> Lens a [AddEpAnn] -> AnnKeywordId -> Maybe String -> EP w m a
+markEpAnnLMS'' an l kw Nothing = markEpAnnL' an l kw
+markEpAnnLMS'' a l kw (Just str) = do
+  anns <- mapM go (view l a)
+  return (set l anns a)
+  where
+    go :: (Monad m, Monoid w) => AddEpAnn -> EP w m AddEpAnn
+    go (AddEpAnn kw' r)
+      | kw' == kw = do
+          r' <- printStringAtAA r str
+          return (AddEpAnn kw' r')
+      | otherwise = return (AddEpAnn kw' r)
+
+
+markEpAnnMS' :: (Monad m, Monoid w)
+  => [AddEpAnn] -> AnnKeywordId -> Maybe String -> EP w m [AddEpAnn]
+markEpAnnMS' anns kw Nothing = mark' anns kw
+markEpAnnMS' anns kw (Just str) = do
+  mapM go anns
+  where
+    go :: (Monad m, Monoid w) => AddEpAnn -> EP w m AddEpAnn
+    go (AddEpAnn kw' r)
+      | kw' == kw = do
+          r' <- printStringAtAA r str
+          return (AddEpAnn kw' r')
+      | otherwise = return (AddEpAnn kw' r)
+
 markEpAnnLMS' :: (Monad m, Monoid w)
                 => EpAnn a -> Lens a AddEpAnn -> AnnKeywordId -> Maybe String -> EP w m (EpAnn a)
 markEpAnnLMS' an l _kw Nothing = markLensKwA an l
@@ -782,6 +823,20 @@ markEpAnnLMS' (EpAnn anc a cs) l kw (Just str) = do
           return (AddEpAnn kw' r')
       | otherwise = return (AddEpAnn kw' r)
 
+markEpAnnLMS0 :: (Monad m, Monoid w)
+                => a -> Lens a AddEpAnn -> AnnKeywordId -> Maybe String -> EP w m a
+markEpAnnLMS0 an l _kw Nothing = markLensKwA' an l
+markEpAnnLMS0 a l kw (Just str) = do
+  anns <- go (view l a)
+  return (set l anns a)
+  where
+    go :: (Monad m, Monoid w) => AddEpAnn -> EP w m AddEpAnn
+    go (AddEpAnn kw' r)
+      | kw' == kw = do
+          r' <- printStringAtAA r str
+          return (AddEpAnn kw' r')
+      | otherwise = return (AddEpAnn kw' r)
+
 -- ---------------------------------------------------------------------
 
 markEpToken :: forall m w tok . (Monad m, Monoid w, KnownSymbol tok)
@@ -824,13 +879,20 @@ markArrow (HsExplicitMult (pct, arr) t) = do
 markAnnCloseP :: (Monad m, Monoid w) => EpAnn AnnPragma -> EP w m (EpAnn AnnPragma)
 markAnnCloseP an = markEpAnnLMS' an lapr_close AnnClose (Just "#-}")
 
+markAnnCloseP' :: (Monad m, Monoid w) => AnnPragma -> EP w m AnnPragma
+markAnnCloseP' an = markEpAnnLMS0 an lapr_close AnnClose (Just "#-}")
+
 markAnnOpenP :: (Monad m, Monoid w) => EpAnn AnnPragma -> SourceText -> String -> EP w m (EpAnn AnnPragma)
 markAnnOpenP an NoSourceText txt   = markEpAnnLMS' an lapr_open AnnOpen (Just txt)
 markAnnOpenP an (SourceText txt) _ = markEpAnnLMS' an lapr_open AnnOpen (Just $ unpackFS txt)
 
-markAnnOpen :: (Monad m, Monoid w) => EpAnn [AddEpAnn] -> SourceText -> String -> EP w m (EpAnn [AddEpAnn])
-markAnnOpen an NoSourceText txt   = markEpAnnLMS an lidl AnnOpen (Just txt)
-markAnnOpen an (SourceText txt) _ = markEpAnnLMS an lidl AnnOpen (Just $ unpackFS txt)
+markAnnOpenP' :: (Monad m, Monoid w) => AnnPragma -> SourceText -> String -> EP w m AnnPragma
+markAnnOpenP' an NoSourceText txt   = markEpAnnLMS0 an lapr_open AnnOpen (Just txt)
+markAnnOpenP' an (SourceText txt) _ = markEpAnnLMS0 an lapr_open AnnOpen (Just $ unpackFS txt)
+
+markAnnOpen :: (Monad m, Monoid w) => [AddEpAnn] -> SourceText -> String -> EP w m [AddEpAnn]
+markAnnOpen an NoSourceText txt   = markEpAnnLMS'' an lidl AnnOpen (Just txt)
+markAnnOpen an (SourceText txt) _ = markEpAnnLMS'' an lidl AnnOpen (Just $ unpackFS txt)
 
 markAnnOpen' :: (Monad m, Monoid w)
   => Maybe EpaLocation -> SourceText -> String -> EP w m (Maybe EpaLocation)
@@ -851,15 +913,15 @@ data AnnParen
       ap_close     :: EpaLocation
       } deriving (Data)
 -}
-markOpeningParen, markClosingParen :: (Monad m, Monoid w) => EpAnn AnnParen -> EP w m (EpAnn AnnParen)
+markOpeningParen, markClosingParen :: (Monad m, Monoid w) => AnnParen -> EP w m AnnParen
 markOpeningParen an = markParen an lfst
 markClosingParen an = markParen an lsnd
 
-markParen :: (Monad m, Monoid w) => EpAnn AnnParen -> (forall a. Lens (a,a) a) -> EP w m (EpAnn AnnParen)
-markParen (EpAnn anc (AnnParen pt o c) cs) l = do
+markParen :: (Monad m, Monoid w) => AnnParen -> (forall a. Lens (a,a) a) -> EP w m AnnParen
+markParen (AnnParen pt o c) l = do
   loc' <- markKwA (view l $ kw pt) (view l (o, c))
   let (o',c') = set l loc' (o,c)
-  return (EpAnn anc (AnnParen pt o' c') cs)
+  return (AnnParen pt o' c')
   where
     kw AnnParens       = (AnnOpenP,  AnnCloseP)
     kw AnnParensHash   = (AnnOpenPH, AnnClosePH)
@@ -1232,21 +1294,29 @@ markLensKwA (EpAnn anc a cs) l = do
   loc <- markKw (view l a)
   return (EpAnn anc (set l loc a) cs)
 
+markLensKwA' :: (Monad m, Monoid w)
+  => a -> Lens a AddEpAnn -> EP w m a
+markLensKwA' a l = do
+  loc <- markKw (view l a)
+  return (set l loc a)
+
 markLensKw :: (Monad m, Monoid w)
   => EpAnn a -> Lens a EpaLocation -> AnnKeywordId -> EP w m (EpAnn a)
 markLensKw (EpAnn anc a cs) l kw = do
   loc <- markKwA kw (view l a)
   return (EpAnn anc (set l loc a) cs)
 
-markAnnKwL :: (Monad m, Monoid w)
-  => EpAnn a -> Lens a EpaLocation -> AnnKeywordId -> EP w m (EpAnn a)
-markAnnKwL = markLensKw
+markLensKw' :: (Monad m, Monoid w)
+  => a -> Lens a EpaLocation -> AnnKeywordId -> EP w m a
+markLensKw' a l kw = do
+  loc <- markKwA kw (view l a)
+  return (set l loc a)
 
 markAnnKwAllL :: (Monad m, Monoid w)
-  => EpAnn a -> Lens a [EpaLocation] -> AnnKeywordId -> EP w m (EpAnn a)
-markAnnKwAllL (EpAnn anc a cs) l kw = do
+  => a -> Lens a [EpaLocation] -> AnnKeywordId -> EP w m a
+markAnnKwAllL a l kw = do
   anns <- mapM (markKwA kw) (view l a)
-  return (EpAnn anc (set l anns a) cs)
+  return (set l anns a)
 
 markLensKwM :: (Monad m, Monoid w)
   => EpAnn a -> Lens a (Maybe EpaLocation) -> AnnKeywordId -> EP w m (EpAnn a)
@@ -1257,6 +1327,15 @@ markLensKwM (EpAnn anc a cs) l kw = do
     go Nothing = return Nothing
     go (Just s) = Just <$> markKwA kw s
 
+markLensKwM' :: (Monad m, Monoid w)
+  => a -> Lens a (Maybe EpaLocation) -> AnnKeywordId -> EP w m a
+markLensKwM' a l kw = do
+  new <- go (view l a)
+  return (set l new a)
+  where
+    go Nothing = return Nothing
+    go (Just s) = Just <$> markKwA kw s
+
 -- ---------------------------------------------------------------------
 
 markEpAnnL :: (Monad m, Monoid w)
@@ -1265,6 +1344,12 @@ markEpAnnL (EpAnn anc a cs) l kw = do
   anns <- mark' (view l a) kw
   return (EpAnn anc (set l anns a) cs)
 
+markEpAnnL' :: (Monad m, Monoid w)
+  => ann -> Lens ann [AddEpAnn] -> AnnKeywordId -> EP w m ann
+markEpAnnL' a l kw = do
+  anns <- mark' (view l a) kw
+  return (set l anns a)
+
 markEpAnnAllL :: (Monad m, Monoid w)
   => EpAnn ann -> Lens ann [AddEpAnn] -> AnnKeywordId -> EP w m (EpAnn ann)
 markEpAnnAllL (EpAnn anc a cs) l kw = do
@@ -1276,6 +1361,17 @@ markEpAnnAllL (EpAnn anc a cs) l kw = do
           then markKw an
           else return an
 
+markEpAnnAllL' :: (Monad m, Monoid w)
+  => ann -> Lens ann [AddEpAnn] -> AnnKeywordId -> EP w m ann
+markEpAnnAllL' a l kw = do
+  anns <- mapM doit (view l a)
+  return (set l anns a)
+  where
+    doit an@(AddEpAnn ka _)
+      = if ka == kw
+          then markKw an
+          else return an
+
 markAddEpAnn :: (Monad m, Monoid w) => AddEpAnn -> EP w m AddEpAnn
 markAddEpAnn a@(AddEpAnn kw _) = do
   r <- mark' [a] kw
@@ -1339,6 +1435,13 @@ markAnnList ann action = do
     r <- action
     return (a,r)
 
+markAnnList' :: (Monad m, Monoid w)
+  => AnnList -> EP w m a -> EP w m (AnnList, a)
+markAnnList' ann action = do
+  markAnnListA' ann $ \a -> do
+    r <- action
+    return (a,r)
+
 markAnnListA :: (Monad m, Monoid w)
   => EpAnn AnnList
   -> (EpAnn AnnList -> EP w m (EpAnn AnnList, a))
@@ -1350,6 +1453,17 @@ markAnnListA an action = do
   an3 <- markLensMAA an2 lal_close
   return (an3, r)
 
+markAnnListA' :: (Monad m, Monoid w)
+  => AnnList
+  -> (AnnList -> EP w m (AnnList, a))
+  -> EP w m (AnnList, a)
+markAnnListA' an action = do
+  an0 <- markLensMAA' an lal_open
+  an1 <- markEpAnnAllL' an0 lal_rest AnnSemi
+  (an2, r) <- action an1
+  an3 <- markLensMAA' an2 lal_close
+  return (an3, r)
+
 -- ---------------------------------------------------------------------
 
 printCommentsBefore :: (Monad m, Monoid w) => RealSrcSpan -> EP w m ()
@@ -1795,16 +1909,14 @@ instance ExactPrint (InstDecl GhcPs) where
 
 data DataFamInstDeclWithContext
   = DataFamInstDeclWithContext
-    { _dc_a :: EpAnn [AddEpAnn]
+    { _dc_a :: [AddEpAnn]
     , _dc_f :: TopLevelFlag
     , dc_d :: DataFamInstDecl GhcPs
     }
 
 instance ExactPrint DataFamInstDeclWithContext where
-  getAnnotationEntry (DataFamInstDeclWithContext _ _ (DataFamInstDecl (FamEqn { feqn_ext = an})))
-    = fromAnn an
-  setAnnotationAnchor (DataFamInstDeclWithContext a c (DataFamInstDecl fe)) anc ts cs
-    = (DataFamInstDeclWithContext a c (DataFamInstDecl (fe { feqn_ext = (setAnchorEpa (feqn_ext fe) anc ts cs)})))
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
   exact (DataFamInstDeclWithContext an c d) = do
     debugM $ "starting DataFamInstDeclWithContext:an=" ++ showAst an
     (an', d') <- exactDataFamInstDecl an c d
@@ -1813,8 +1925,8 @@ instance ExactPrint DataFamInstDeclWithContext where
 -- ---------------------------------------------------------------------
 
 exactDataFamInstDecl :: (Monad m, Monoid w)
-                     => EpAnn [AddEpAnn] -> TopLevelFlag -> DataFamInstDecl GhcPs
-                     -> EP w m (EpAnn [AddEpAnn], DataFamInstDecl GhcPs)
+                     => [AddEpAnn] -> TopLevelFlag -> DataFamInstDecl GhcPs
+                     -> EP w m ([AddEpAnn], DataFamInstDecl GhcPs)
 exactDataFamInstDecl an top_lvl
   (DataFamInstDecl (FamEqn { feqn_ext    = an2
                            , feqn_tycon  = tycon
@@ -1836,14 +1948,14 @@ exactDataFamInstDecl an top_lvl
   where
     pp_hdr :: (Monad m, Monoid w)
            => Maybe (LHsContext GhcPs)
-           -> EP w m ( EpAnn [AddEpAnn]
+           -> EP w m ( [AddEpAnn]
                      , LocatedN RdrName
                      , HsOuterTyVarBndrs () GhcPs
                      , HsFamEqnPats GhcPs
                      , Maybe (LHsContext GhcPs))
     pp_hdr mctxt = do
       an0 <- case top_lvl of
-               TopLevel -> markEpAnnL an lidl AnnInstance -- TODO: maybe in toplevel
+               TopLevel -> markEpAnnL' an lidl AnnInstance -- TODO: maybe in toplevel
                NotTopLevel -> return an
       exactHsFamInstLHS an0 tycon bndrs pats fixity mctxt
 
@@ -1862,13 +1974,13 @@ rendering the DataDefn are contained in the FamEqn, and are called
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (DerivDecl GhcPs) where
-  getAnnotationEntry (DerivDecl {deriv_ext = (_, an)} ) = fromAnn an
-  setAnnotationAnchor (dd@DerivDecl {deriv_ext = (w, an)}) anc ts cs
-    = dd { deriv_ext = (w, setAnchorEpa an anc ts cs) }
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
+
   exact (DerivDecl (mw, an) typ ms mov) = do
-    an0 <- markEpAnnL an lidl AnnDeriving
+    an0 <- markEpAnnL' an lidl AnnDeriving
     ms' <- mapM markAnnotated ms
-    an1 <- markEpAnnL an0 lidl AnnInstance
+    an1 <- markEpAnnL' an0 lidl AnnInstance
     mw' <- mapM markAnnotated mw
     mov' <- mapM markAnnotated mov
     typ' <- markAnnotated typ
@@ -1877,29 +1989,26 @@ instance ExactPrint (DerivDecl GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (ForeignDecl GhcPs) where
-  getAnnotationEntry (ForeignImport an _ _  _) = fromAnn an
-  getAnnotationEntry (ForeignExport an _ _  _) = fromAnn an
-
-  setAnnotationAnchor (ForeignImport an a b c) anc ts cs = ForeignImport (setAnchorEpa an anc ts cs) a b c
-  setAnnotationAnchor (ForeignExport an a b c) anc ts cs = ForeignExport (setAnchorEpa an anc ts cs) a b c
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (ForeignImport an n ty fimport) = do
-    an0 <- markEpAnnL an lidl AnnForeign
-    an1 <- markEpAnnL an0 lidl AnnImport
+    an0 <- markEpAnnL' an lidl AnnForeign
+    an1 <- markEpAnnL' an0 lidl AnnImport
 
     fimport' <- markAnnotated fimport
 
     n' <- markAnnotated n
-    an2 <- markEpAnnL an1 lidl AnnDcolon
+    an2 <- markEpAnnL' an1 lidl AnnDcolon
     ty' <- markAnnotated ty
     return (ForeignImport an2 n' ty' fimport')
 
   exact (ForeignExport an n ty fexport) = do
-    an0 <- markEpAnnL an lidl AnnForeign
-    an1 <- markEpAnnL an0 lidl AnnExport
+    an0 <- markEpAnnL' an lidl AnnForeign
+    an1 <- markEpAnnL' an0 lidl AnnExport
     fexport' <- markAnnotated fexport
     n' <- markAnnotated n
-    an2 <- markEpAnnL an1 lidl AnnDcolon
+    an2 <- markEpAnnL' an1 lidl AnnDcolon
     ty' <- markAnnotated ty
     return (ForeignExport an2 n' ty' fexport')
 
@@ -1952,38 +2061,39 @@ instance ExactPrint CCallConv where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (WarnDecls GhcPs) where
-  getAnnotationEntry (Warnings (an,_) _) = fromAnn an
-  setAnnotationAnchor (Warnings (an,a) b) anc ts cs = Warnings ((setAnchorEpa an anc ts cs),a) b
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (Warnings (an,src) warns) = do
     an0 <- markAnnOpen an src "{-# WARNING" -- Note: might be {-# DEPRECATED
     warns' <- markAnnotated warns
-    an1 <- markEpAnnLMS an0 lidl AnnClose (Just "#-}")
+    an1 <- markEpAnnLMS'' an0 lidl AnnClose (Just "#-}")
     return (Warnings (an1,src) warns')
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (WarnDecl GhcPs) where
-  getAnnotationEntry (Warning (_, an) _ _) = fromAnn an
-  setAnnotationAnchor (Warning (ns_spec, an) a b) anc ts cs
-    = Warning (ns_spec, setAnchorEpa an anc ts cs) a b
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (Warning (ns_spec, an) lns  (WarningTxt mb_cat src ls )) = do
     mb_cat' <- markAnnotated mb_cat
     ns_spec' <- exactNsSpec ns_spec
     lns' <- markAnnotated lns
-    an0 <- markEpAnnL an lidl AnnOpenS -- "["
+    an0 <- markEpAnnL' an lidl AnnOpenS -- "["
     ls' <- markAnnotated ls
-    an1 <- markEpAnnL an0 lidl AnnCloseS -- "]"
+    an1 <- markEpAnnL' an0 lidl AnnCloseS -- "]"
     return (Warning (ns_spec', an1) lns'  (WarningTxt mb_cat' src ls'))
+    -- return (Warning an1 lns'  (WarningTxt mb_cat' src ls'))
 
   exact (Warning (ns_spec, an) lns (DeprecatedTxt src ls)) = do
     ns_spec' <- exactNsSpec ns_spec
     lns' <- markAnnotated lns
-    an0 <- markEpAnnL an lidl AnnOpenS -- "["
+    an0 <- markEpAnnL' an lidl AnnOpenS -- "["
     ls' <- markAnnotated ls
-    an1 <- markEpAnnL an0 lidl AnnCloseS -- "]"
+    an1 <- markEpAnnL' an0 lidl AnnCloseS -- "]"
     return (Warning (ns_spec', an1) lns' (DeprecatedTxt src ls'))
+    -- return (Warning an1 lns' (DeprecatedTxt src ls'))
 
 exactNsSpec :: (Monad m, Monoid w) => NamespaceSpecifier -> EP w m NamespaceSpecifier
 exactNsSpec NoNamespaceSpecifier = pure NoNamespaceSpecifier
@@ -2018,66 +2128,63 @@ instance ExactPrint FastString where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (RuleDecls GhcPs) where
-  getAnnotationEntry (HsRules (an,_) _) = fromAnn an
-  setAnnotationAnchor (HsRules (an,a) b) anc ts cs = HsRules ((setAnchorEpa an anc ts cs),a) b
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
   exact (HsRules (an, src) rules) = do
     an0 <-
       case src of
-        NoSourceText      -> markEpAnnLMS an lidl AnnOpen  (Just "{-# RULES")
-        SourceText srcTxt -> markEpAnnLMS an lidl AnnOpen  (Just $ unpackFS srcTxt)
+        NoSourceText      -> markEpAnnLMS'' an lidl AnnOpen  (Just "{-# RULES")
+        SourceText srcTxt -> markEpAnnLMS'' an lidl AnnOpen  (Just $ unpackFS srcTxt)
     rules' <- markAnnotated rules
-    an1 <- markEpAnnLMS an0 lidl AnnClose (Just "#-}")
+    an1 <- markEpAnnLMS'' an0 lidl AnnClose (Just "#-}")
     return (HsRules (an1,src) rules')
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (RuleDecl GhcPs) where
-  getAnnotationEntry (HsRule {rd_ext = (an,_)}) = fromAnn an
-  setAnnotationAnchor r@(HsRule {rd_ext = (an,a)}) anc ts cs
-    = r { rd_ext = (setAnchorEpa an anc ts cs, a)}
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
+
   exact (HsRule (an,nsrc) (L ln n) act mtybndrs termbndrs lhs rhs) = do
-    debugM "HsRule entered"
     (L ln' _) <- markAnnotated (L ln (nsrc, n))
-    debugM "HsRule after ln"
     an0 <- markActivation an lra_rest act
-    debugM "HsRule after act"
     (an1, mtybndrs') <-
       case mtybndrs of
         Nothing -> return (an0, Nothing)
         Just bndrs -> do
-          an1 <-  markLensMAA an0 lra_tyanns_fst  -- AnnForall
+          an1 <-  markLensMAA' an0 lra_tyanns_fst  -- AnnForall
           bndrs' <- mapM markAnnotated bndrs
-          an2 <- markLensMAA an1 lra_tyanns_snd  -- AnnDot
+          an2 <- markLensMAA' an1 lra_tyanns_snd  -- AnnDot
           return (an2, Just bndrs')
 
-    an2 <- markLensMAA an1 lra_tmanns_fst  -- AnnForall
+    an2 <- markLensMAA' an1 lra_tmanns_fst  -- AnnForall
     termbndrs' <- mapM markAnnotated termbndrs
-    an3 <- markLensMAA an2 lra_tmanns_snd  -- AnnDot
+    an3 <- markLensMAA' an2 lra_tmanns_snd  -- AnnDot
 
     lhs' <- markAnnotated lhs
-    an4 <- markEpAnnL an3 lra_rest AnnEqual
+    an4 <- markEpAnnL' an3 lra_rest AnnEqual
     rhs' <- markAnnotated rhs
     return (HsRule (an4,nsrc) (L ln' n) act mtybndrs' termbndrs' lhs' rhs')
 
 markActivation :: (Monad m, Monoid w)
-  => EpAnn a -> Lens a [AddEpAnn] -> Activation -> EP w m (EpAnn a)
+  => a -> Lens a [AddEpAnn] -> Activation -> EP w m a
 markActivation an l act = do
   case act of
     ActiveBefore src phase -> do
-      an0 <- markEpAnnL an l AnnOpenS --  '['
-      an1 <- markEpAnnL an0 l AnnTilde -- ~
-      an2 <- markEpAnnLMS an1 l AnnVal (Just (toSourceTextWithSuffix src (show phase) ""))
-      an3 <- markEpAnnL an2 l AnnCloseS -- ']'
+      an0 <- markEpAnnL' an l AnnOpenS --  '['
+      an1 <- markEpAnnL' an0 l AnnTilde -- ~
+      an2 <- markEpAnnLMS'' an1 l AnnVal (Just (toSourceTextWithSuffix src (show phase) ""))
+      an3 <- markEpAnnL' an2 l AnnCloseS -- ']'
       return an3
     ActiveAfter src phase -> do
-      an0 <- markEpAnnL an l AnnOpenS --  '['
-      an1 <- markEpAnnLMS an0 l AnnVal (Just (toSourceTextWithSuffix src (show phase) ""))
-      an2 <- markEpAnnL an1 l AnnCloseS -- ']'
+      an0 <- markEpAnnL' an l AnnOpenS --  '['
+      an1 <- markEpAnnLMS'' an0 l AnnVal (Just (toSourceTextWithSuffix src (show phase) ""))
+      an2 <- markEpAnnL' an1 l AnnCloseS -- ']'
       return an2
     NeverActive -> do
-      an0 <- markEpAnnL an l AnnOpenS --  '['
-      an1 <- markEpAnnL an0 l AnnTilde -- ~
-      an2 <- markEpAnnL an1 l AnnCloseS -- ']'
+      an0 <- markEpAnnL' an l AnnOpenS --  '['
+      an1 <- markEpAnnL' an0 l AnnTilde -- ~
+      an2 <- markEpAnnL' an1 l AnnCloseS -- ']'
       return an2
     _ -> return an
 
@@ -2103,11 +2210,12 @@ instance ExactPrint (DocDecl GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (RoleAnnotDecl GhcPs) where
-  getAnnotationEntry (RoleAnnotDecl an _ _) = fromAnn an
-  setAnnotationAnchor (RoleAnnotDecl an a b) anc ts cs = RoleAnnotDecl (setAnchorEpa an anc ts cs) a b
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
+
   exact (RoleAnnotDecl an ltycon roles) = do
-    an0 <- markEpAnnL an lidl AnnType
-    an1 <- markEpAnnL an0 lidl AnnRole
+    an0 <- markEpAnnL' an lidl AnnType
+    an1 <- markEpAnnL' an0 lidl AnnRole
     ltycon' <- markAnnotated ltycon
     let markRole (L l (Just r)) = do
           (L _ r') <- markAnnotated (L l r)
@@ -2135,18 +2243,18 @@ instance ExactPrint (RuleBndr GhcPs) where
     ln' <- markAnnotated ln
     return (RuleBndr x ln')
   exact (RuleBndrSig an ln (HsPS x ty)) = do
-    an0 <- markEpAnnL an lidl AnnOpenP -- "("
+    an0 <- markEpAnnL' an lidl AnnOpenP -- "("
     ln' <- markAnnotated ln
-    an1 <- markEpAnnL an0 lidl AnnDcolon
+    an1 <- markEpAnnL' an0 lidl AnnDcolon
     ty' <- markAnnotated ty
-    an2 <- markEpAnnL an1 lidl AnnCloseP -- ")"
+    an2 <- markEpAnnL' an1 lidl AnnCloseP -- ")"
     return (RuleBndrSig an2 ln' (HsPS x ty'))
 
 -- ---------------------------------------------------------------------
 
 instance (ExactPrint body) => ExactPrint (FamEqn GhcPs body) where
-  getAnnotationEntry (FamEqn { feqn_ext = an}) = fromAnn an
-  setAnnotationAnchor fe anc ts cs = fe {feqn_ext = setAnchorEpa (feqn_ext fe) anc ts cs}
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor fe _ _ _s = fe
   exact (FamEqn { feqn_ext = an
                 , feqn_tycon  = tycon
                 , feqn_bndrs  = bndrs
@@ -2154,7 +2262,7 @@ instance (ExactPrint body) => ExactPrint (FamEqn GhcPs body) where
                 , feqn_fixity = fixity
                 , feqn_rhs    = rhs }) = do
     (an0, tycon', bndrs', pats', _) <- exactHsFamInstLHS an tycon bndrs pats fixity Nothing
-    an1 <- markEpAnnL an0 lidl AnnEqual
+    an1 <- markEpAnnL' an0 lidl AnnEqual
     rhs' <- markAnnotated rhs
     return (FamEqn { feqn_ext = an1
                    , feqn_tycon  = tycon'
@@ -2167,34 +2275,34 @@ instance (ExactPrint body) => ExactPrint (FamEqn GhcPs body) where
 
 exactHsFamInstLHS ::
       (Monad m, Monoid w)
-   => EpAnn [AddEpAnn]
+   => [AddEpAnn]
    -> LocatedN RdrName
    -> HsOuterTyVarBndrs () GhcPs
    -> HsFamEqnPats GhcPs
    -> LexicalFixity
    -> Maybe (LHsContext GhcPs)
-   -> EP w m ( EpAnn [AddEpAnn]
+   -> EP w m ( [AddEpAnn]
              , LocatedN RdrName
              , HsOuterTyVarBndrs () GhcPs
              , HsFamEqnPats GhcPs, Maybe (LHsContext GhcPs))
 exactHsFamInstLHS an thing bndrs typats fixity mb_ctxt = do
-  an0 <- markEpAnnL an lidl AnnForall
+  an0 <- markEpAnnL' an lidl AnnForall
   bndrs' <- markAnnotated bndrs
-  an1 <- markEpAnnL an0 lidl AnnDot
+  an1 <- markEpAnnL' an0 lidl AnnDot
   mb_ctxt' <- mapM markAnnotated mb_ctxt
   (an2, thing', typats') <- exact_pats an1 typats
   return (an2, thing', bndrs', typats', mb_ctxt')
   where
     exact_pats :: (Monad m, Monoid w)
-      => EpAnn [AddEpAnn] -> HsFamEqnPats GhcPs -> EP w m (EpAnn [AddEpAnn], LocatedN RdrName, HsFamEqnPats GhcPs)
+      => [AddEpAnn] -> HsFamEqnPats GhcPs -> EP w m ([AddEpAnn], LocatedN RdrName, HsFamEqnPats GhcPs)
     exact_pats an' (patl:patr:pats)
       | Infix <- fixity
       = let exact_op_app = do
-              an0 <- markEpAnnAllL an' lidl AnnOpenP
+              an0 <- markEpAnnAllL' an' lidl AnnOpenP
               patl' <- markAnnotated patl
               thing' <- markAnnotated thing
               patr' <- markAnnotated patr
-              an1 <- markEpAnnAllL an0 lidl AnnCloseP
+              an1 <- markEpAnnAllL' an0 lidl AnnCloseP
               return (an1, thing', [patl',patr'])
         in case pats of
              [] -> exact_op_app
@@ -2204,10 +2312,10 @@ exactHsFamInstLHS an thing bndrs typats fixity mb_ctxt = do
                return (an0, thing', p++pats')
 
     exact_pats an' pats = do
-      an0 <- markEpAnnAllL an' lidl AnnOpenP
+      an0 <- markEpAnnAllL' an' lidl AnnOpenP
       thing' <- markAnnotated thing
       pats' <- markAnnotated pats
-      an1 <- markEpAnnAllL an0 lidl AnnCloseP
+      an1 <- markEpAnnAllL' an0 lidl AnnCloseP
       return (an1, thing', pats')
 
 -- ---------------------------------------------------------------------
@@ -2224,9 +2332,8 @@ instance (ExactPrint tm, ExactPrint ty, Outputable tm, Outputable ty)
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (ClsInstDecl GhcPs) where
-  getAnnotationEntry (ClsInstDecl { cid_ext = (_, an, _) }) = fromAnn an
-  setAnnotationAnchor (cid@ClsInstDecl { cid_ext = (mbWarn, an, sortKey) }) anc ts cs
-    = cid { cid_ext = (mbWarn, setAnchorEpa an anc ts cs, sortKey) }
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (ClsInstDecl { cid_ext = (mbWarn, an, sortKey)
                      , cid_poly_ty = inst_ty, cid_binds = binds
@@ -2235,15 +2342,15 @@ instance ExactPrint (ClsInstDecl GhcPs) where
                      , cid_datafam_insts = adts })
       = do
           (mbWarn', an0, mbOverlap', inst_ty') <- top_matter
-          an1 <- markEpAnnL an0 lidl AnnOpenC
-          an2 <- markEpAnnAllL an1 lid AnnSemi
+          an1 <- markEpAnnL' an0 lidl AnnOpenC
+          an2 <- markEpAnnAllL' an1 lid AnnSemi
           ds <- withSortKey sortKey
                                [(ClsAtdTag, prepareListAnnotationA ats),
                                 (ClsAtdTag, prepareListAnnotationF an adts),
                                 (ClsMethodTag, prepareListAnnotationA (bagToList binds)),
                                 (ClsSigTag, prepareListAnnotationA sigs)
                                ]
-          an3 <- markEpAnnL an2 lidl AnnCloseC -- '}'
+          an3 <- markEpAnnL' an2 lidl AnnCloseC -- '}'
           let
             ats'   = undynamic ds
             adts'  = undynamic ds
@@ -2257,22 +2364,22 @@ instance ExactPrint (ClsInstDecl GhcPs) where
 
       where
         top_matter = do
-          an0 <- markEpAnnL an lidl AnnInstance
+          an0 <- markEpAnnL' an lidl AnnInstance
           mw <- mapM markAnnotated mbWarn
           mo <- mapM markAnnotated mbOverlap
           it <- markAnnotated inst_ty
-          an1 <- markEpAnnL an0 lidl AnnWhere -- Optional
+          an1 <- markEpAnnL' an0 lidl AnnWhere -- Optional
           return (mw, an1, mo,it)
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (TyFamInstDecl GhcPs) where
-  getAnnotationEntry (TyFamInstDecl an _) = fromAnn an
-  setAnnotationAnchor (TyFamInstDecl an a) anc ts cs = TyFamInstDecl (setAnchorEpa an anc ts cs) a
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact d@(TyFamInstDecl { tfid_xtn = an, tfid_eqn = eqn }) = do
-    an0 <- markEpAnnL an lidl AnnType
-    an1 <- markEpAnnL an0 lidl AnnInstance
+    an0 <- markEpAnnL' an lidl AnnType
+    an1 <- markEpAnnL' an0 lidl AnnInstance
     eqn' <- markAnnotated eqn
     return (d { tfid_xtn = an1, tfid_eqn = eqn' })
 
@@ -2316,12 +2423,7 @@ instance ExactPrint (LocatedP OverlapMode) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (HsBind GhcPs) where
-  getAnnotationEntry FunBind{} = NoEntryVal
-  getAnnotationEntry PatBind{pat_ext=an} = fromAnn an
-  getAnnotationEntry VarBind{} = NoEntryVal
-  getAnnotationEntry PatSynBind{} = NoEntryVal
-
-  setAnnotationAnchor pb@PatBind{} anc ts cs = pb { pat_ext = setAnchorEpa (pat_ext pb) anc ts cs}
+  getAnnotationEntry _ = NoEntryVal
   setAnnotationAnchor a _ _ _ = a
 
   exact (FunBind x fid matches) = do
@@ -2347,14 +2449,14 @@ instance ExactPrint (HsBind GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (PatSynBind GhcPs GhcPs) where
-  getAnnotationEntry (PSB { psb_ext = an}) = fromAnn an
-  setAnnotationAnchor p anc ts cs = p { psb_ext = setAnchorEpa (psb_ext p) anc ts cs}
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (PSB{ psb_ext = an
             , psb_id = psyn, psb_args = details
             , psb_def = pat
             , psb_dir = dir }) = do
-    an0 <- markEpAnnL an lidl AnnPattern
+    an0 <- markEpAnnL' an lidl AnnPattern
     (an1, psyn', details') <-
       case details of
         InfixCon v1 v2 -> do
@@ -2369,25 +2471,25 @@ instance ExactPrint (PatSynBind GhcPs GhcPs) where
           return (an0, psyn', PrefixCon tvs' vs')
         RecCon vs -> do
           psyn' <- markAnnotated psyn
-          an1 <- markEpAnnL an0 lidl AnnOpenC  -- '{'
+          an1 <- markEpAnnL' an0 lidl AnnOpenC  -- '{'
           vs' <- markAnnotated vs
-          an2 <- markEpAnnL an1 lidl AnnCloseC -- '}'
+          an2 <- markEpAnnL' an1 lidl AnnCloseC -- '}'
           return (an2, psyn', RecCon vs')
 
     (an2, pat', dir') <-
       case dir of
         Unidirectional           -> do
-          an2 <- markEpAnnL an1 lidl AnnLarrow
+          an2 <- markEpAnnL' an1 lidl AnnLarrow
           pat' <- markAnnotated pat
           return (an2, pat', dir)
         ImplicitBidirectional    -> do
-          an2 <- markEpAnnL an1 lidl AnnEqual
+          an2 <- markEpAnnL' an1 lidl AnnEqual
           pat' <- markAnnotated pat
           return (an2, pat', dir)
         ExplicitBidirectional mg -> do
-          an2 <- markEpAnnL an1 lidl AnnLarrow
+          an2 <- markEpAnnL' an1 lidl AnnLarrow
           pat' <- markAnnotated pat
-          an3 <- markEpAnnL an2 lidl  AnnWhere
+          an3 <- markEpAnnL' an2 lidl  AnnWhere
           mg' <- markAnnotated mg
           return (an3, pat', ExplicitBidirectional mg')
 
@@ -2408,8 +2510,8 @@ instance ExactPrint (RecordPatSynField GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (Match GhcPs (LocatedA (HsCmd GhcPs))) where
-  getAnnotationEntry (Match ann _ _ _) = fromAnn ann
-  setAnnotationAnchor (Match an a b c) anc ts cs = Match (setAnchorEpa an anc ts cs) a b c
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (Match an mctxt pats grhss) =
     exactMatch (Match an mctxt pats grhss)
@@ -2417,8 +2519,8 @@ instance ExactPrint (Match GhcPs (LocatedA (HsCmd GhcPs))) where
 -- -------------------------------------
 
 instance ExactPrint (Match GhcPs (LocatedA (HsExpr GhcPs))) where
-  getAnnotationEntry (Match ann _ _ _) = fromAnn ann
-  setAnnotationAnchor (Match an a b c) anc ts cs = Match (setAnchorEpa an anc ts cs) a b c
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (Match an mctxt pats grhss) =
     exactMatch (Match an mctxt pats grhss)
@@ -2437,7 +2539,7 @@ exactMatch (Match an mctxt pats grhss) = do
         debugM $ "exact Match FunRhs:" ++ showPprUnsafe fun
         an0' <-
           case strictness of
-            SrcStrict -> markEpAnnL an lidl AnnBang
+            SrcStrict -> markEpAnnL' an lidl AnnBang
             _ -> pure an
         case fixity of
           Prefix -> do
@@ -2454,18 +2556,18 @@ exactMatch (Match an mctxt pats grhss) = do
                     p2'  <- markAnnotated p2
                     return (an0', FunRhs fun' fixity strictness, [p1',p2'])
                 | otherwise -> do
-                    an0  <- markEpAnnL an0' lidl AnnOpenP
+                    an0  <- markEpAnnL' an0' lidl AnnOpenP
                     p1'  <- markAnnotated p1
                     fun' <- markAnnotated fun
                     p2'  <- markAnnotated p2
-                    an1  <- markEpAnnL an0 lidl AnnCloseP
+                    an1  <- markEpAnnL' an0 lidl AnnCloseP
                     rest' <- mapM markAnnotated rest
                     return (an1, FunRhs fun' fixity strictness, p1':p2':rest')
               _ -> panic "FunRhs"
 
       -- ToDo: why is LamSingle treated differently?
       LamAlt LamSingle -> do
-        an0' <- markEpAnnL an lidl AnnLam
+        an0' <- markEpAnnL' an lidl AnnLam
         pats' <- markAnnotated pats
         return (an0', LamAlt LamSingle, pats')
       LamAlt v -> do
@@ -2570,12 +2672,12 @@ instance ExactPrint (HsIPBinds GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (IPBind GhcPs) where
-  getAnnotationEntry (IPBind an _ _) = fromAnn an
-  setAnnotationAnchor (IPBind an a b) anc ts cs = IPBind (setAnchorEpa an anc ts cs) a b
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (IPBind an lr rhs) = do
     lr' <- markAnnotated lr
-    an0 <- markEpAnnL an lidl AnnEqual
+    an0 <- markEpAnnL' an lidl AnnEqual
     rhs' <- markAnnotated rhs
     return (IPBind an0 lr' rhs')
 
@@ -2592,7 +2694,7 @@ instance ExactPrint HsIPName where
 -- Managing lists which have been separated, e.g. Sigs and Binds
 
 prepareListAnnotationF :: (Monad m, Monoid w) =>
-  EpAnn [AddEpAnn] -> [LDataFamInstDecl GhcPs] -> [(RealSrcSpan,EP w m Dynamic)]
+  [AddEpAnn] -> [LDataFamInstDecl GhcPs] -> [(RealSrcSpan,EP w m Dynamic)]
 prepareListAnnotationF an ls = map (\b -> (realSrcSpan $ getLocA b, go b)) ls
   where
     go (L l a) = do
@@ -2621,42 +2723,23 @@ orderByFst (a,_) (b,_) = compare a b
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (Sig GhcPs) where
-  getAnnotationEntry (TypeSig a _ _)  = fromAnn a
-  getAnnotationEntry (PatSynSig a _ _) = fromAnn a
-  getAnnotationEntry (ClassOpSig a _ _ _) = fromAnn a
-  getAnnotationEntry (FixSig a _) = fromAnn a
-  getAnnotationEntry (InlineSig a _ _) = fromAnn a
-  getAnnotationEntry (SpecSig a _ _ _) = fromAnn a
-  getAnnotationEntry (SpecInstSig (a, _) _) = fromAnn a
-  getAnnotationEntry (MinimalSig (a, _) _) = fromAnn a
-  getAnnotationEntry (SCCFunSig (a, _) _ _) = fromAnn a
-  getAnnotationEntry (CompleteMatchSig (a, _) _ _) = fromAnn a
-
-  setAnnotationAnchor (TypeSig a x y)  anc           ts cs = (TypeSig (setAnchorEpa a anc ts cs) x y)
-  setAnnotationAnchor (PatSynSig a x y) anc          ts cs = (PatSynSig (setAnchorEpa a anc ts cs) x y)
-  setAnnotationAnchor (ClassOpSig a x y z) anc       ts cs = (ClassOpSig (setAnchorEpa a anc ts cs) x y z)
-  setAnnotationAnchor (FixSig a x) anc               ts cs = (FixSig (setAnchorEpa a anc ts cs) x)
-  setAnnotationAnchor (InlineSig a x y) anc          ts cs = (InlineSig (setAnchorEpa a anc ts cs) x y)
-  setAnnotationAnchor (SpecSig a x y z) anc          ts cs = (SpecSig (setAnchorEpa a anc ts cs) x y z)
-  setAnnotationAnchor (SpecInstSig (a,x) y) anc      ts cs = (SpecInstSig ((setAnchorEpa a anc ts cs),x) y)
-  setAnnotationAnchor (MinimalSig (a,x) y) anc       ts cs = (MinimalSig ((setAnchorEpa a anc ts cs),x) y)
-  setAnnotationAnchor (SCCFunSig (a,x) y z) anc      ts cs = (SCCFunSig ((setAnchorEpa a anc ts cs),x) y z)
-  setAnnotationAnchor (CompleteMatchSig (a,x) y z) anc ts cs = (CompleteMatchSig ((setAnchorEpa a anc ts cs),x) y z)
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (TypeSig an vars ty)  = do
     (an', vars', ty') <- exactVarSig an vars ty
     return (TypeSig an' vars' ty')
 
   exact (PatSynSig an lns typ) = do
-    an0 <- markEpAnnL an lasRest AnnPattern
+    an0 <- markEpAnnL' an lasRest AnnPattern
     lns' <- markAnnotated lns
-    an1 <- markLensAA an0 lasDcolon
+    an1 <- markLensAA' an0 lasDcolon
     typ' <- markAnnotated typ
     return (PatSynSig an1 lns' typ')
 
   exact (ClassOpSig an is_deflt vars ty)
     | is_deflt  = do
-        an0 <- markEpAnnL an lasRest AnnDefault
+        an0 <- markEpAnnL' an lasRest AnnDefault
         (an1, vars',ty') <- exactVarSig an0 vars ty
         return (ClassOpSig an1 is_deflt vars' ty')
     | otherwise = do
@@ -2668,8 +2751,8 @@ instance ExactPrint (Sig GhcPs) where
          InfixL -> "infixl"
          InfixR -> "infixr"
          InfixN -> "infix"
-    an0 <- markEpAnnLMS an  lidl AnnInfix (Just fixstr)
-    an1 <- markEpAnnLMS an0 lidl AnnVal (Just (sourceTextToString src (show v)))
+    an0 <- markEpAnnLMS'' an  lidl AnnInfix (Just fixstr)
+    an1 <- markEpAnnLMS'' an0 lidl AnnVal (Just (sourceTextToString src (show v)))
     names' <- markAnnotated names
     return (FixSig an1 (FixitySig x names' (Fixity src v fdir)))
 
@@ -2677,40 +2760,36 @@ instance ExactPrint (Sig GhcPs) where
     an0 <- markAnnOpen an (inl_src inl) "{-# INLINE"
     an1 <- markActivation an0 id (inl_act inl)
     ln' <- markAnnotated ln
-    debugM $ "InlineSig:an=" ++ showAst an
-    p <- getPosP
-    debugM $ "InlineSig: p=" ++ show p
-    an2 <- markEpAnnLMS an1 lidl AnnClose (Just "#-}")
-    debugM $ "InlineSig:done"
+    an2 <- markEpAnnLMS'' an1 lidl AnnClose (Just "#-}")
     return (InlineSig an2 ln' inl)
 
   exact (SpecSig an ln typs inl) = do
     an0 <- markAnnOpen an (inl_src inl) "{-# SPECIALISE" -- Note: may be {-# SPECIALISE_INLINE
     an1 <- markActivation an0 lidl (inl_act inl)
     ln' <- markAnnotated ln
-    an2 <- markEpAnnL an1 lidl AnnDcolon
+    an2 <- markEpAnnL' an1 lidl AnnDcolon
     typs' <- markAnnotated typs
-    an3 <- markEpAnnLMS an2 lidl AnnClose (Just "#-}")
+    an3 <- markEpAnnLMS'' an2 lidl AnnClose (Just "#-}")
     return (SpecSig an3 ln' typs' inl)
 
   exact (SpecInstSig (an,src) typ) = do
     an0 <- markAnnOpen an src "{-# SPECIALISE"
-    an1 <- markEpAnnL an0 lidl AnnInstance
+    an1 <- markEpAnnL' an0 lidl AnnInstance
     typ' <- markAnnotated typ
-    an2 <- markEpAnnLMS an1 lidl AnnClose (Just "#-}")
+    an2 <- markEpAnnLMS'' an1 lidl AnnClose (Just "#-}")
     return (SpecInstSig (an2,src) typ')
 
   exact (MinimalSig (an,src) formula) = do
     an0 <- markAnnOpen an src "{-# MINIMAL"
     formula' <- markAnnotated formula
-    an1 <- markEpAnnLMS an0 lidl AnnClose (Just "#-}")
+    an1 <- markEpAnnLMS'' an0 lidl AnnClose (Just "#-}")
     return (MinimalSig (an1,src) formula')
 
   exact (SCCFunSig (an,src) ln ml) = do
     an0 <- markAnnOpen an src "{-# SCC"
     ln' <- markAnnotated ln
     ml' <- markAnnotated ml
-    an1 <- markEpAnnLMS an0 lidl AnnClose (Just "#-}")
+    an1 <- markEpAnnLMS'' an0 lidl AnnClose (Just "#-}")
     return (SCCFunSig (an1,src) ln' ml')
 
   exact (CompleteMatchSig (an,src) cs mty) = do
@@ -2720,71 +2799,71 @@ instance ExactPrint (Sig GhcPs) where
       case mty of
         Nothing -> return (an0, mty)
         Just ty -> do
-          an1 <- markEpAnnL an0 lidl AnnDcolon
+          an1 <- markEpAnnL' an0 lidl AnnDcolon
           ty' <- markAnnotated ty
           return (an1, Just ty')
-    an2 <- markEpAnnLMS an1 lidl AnnClose (Just "#-}")
+    an2 <- markEpAnnLMS'' an1 lidl AnnClose (Just "#-}")
     return (CompleteMatchSig (an2,src) cs' mty')
 
 -- ---------------------------------------------------------------------
 
 exactVarSig :: (Monad m, Monoid w, ExactPrint a)
-  => EpAnn AnnSig -> [LocatedN RdrName] -> a -> EP w m (EpAnn AnnSig, [LocatedN RdrName], a)
+  => AnnSig -> [LocatedN RdrName] -> a -> EP w m (AnnSig, [LocatedN RdrName], a)
 exactVarSig an vars ty = do
   vars' <- mapM markAnnotated vars
-  an0 <- markLensAA an lasDcolon
+  an0 <- markLensAA' an lasDcolon
   ty' <- markAnnotated ty
   return (an0, vars', ty')
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (StandaloneKindSig GhcPs) where
-  getAnnotationEntry (StandaloneKindSig an _ _) = fromAnn an
-  setAnnotationAnchor (StandaloneKindSig an a b) anc ts cs = StandaloneKindSig (setAnchorEpa an anc ts cs) a b
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (StandaloneKindSig an vars sig) = do
-    an0 <- markEpAnnL an lidl AnnType
+    an0 <- markEpAnnL' an lidl AnnType
     vars' <- markAnnotated vars
-    an1 <- markEpAnnL an0 lidl AnnDcolon
+    an1 <- markEpAnnL' an0 lidl AnnDcolon
     sig' <- markAnnotated sig
     return (StandaloneKindSig an1 vars' sig')
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (DefaultDecl GhcPs) where
-  getAnnotationEntry (DefaultDecl an _) = fromAnn an
-  setAnnotationAnchor (DefaultDecl an a) anc ts cs = DefaultDecl (setAnchorEpa an anc ts cs) a
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (DefaultDecl an tys) = do
-    an0 <- markEpAnnL an lidl AnnDefault
-    an1 <- markEpAnnL an0 lidl AnnOpenP
+    an0 <- markEpAnnL' an lidl AnnDefault
+    an1 <- markEpAnnL' an0 lidl AnnOpenP
     tys' <- markAnnotated tys
-    an2 <- markEpAnnL an1 lidl AnnCloseP
+    an2 <- markEpAnnL' an1 lidl AnnCloseP
     return (DefaultDecl an2 tys')
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (AnnDecl GhcPs) where
-  getAnnotationEntry (HsAnnotation (an, _) _ _) = fromAnn an
-  setAnnotationAnchor (HsAnnotation (an,a) b c) anc ts cs = HsAnnotation ((setAnchorEpa an anc ts cs),a) b c
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (HsAnnotation (an, src) prov e) = do
-    an0 <- markAnnOpenP an src "{-# ANN"
+    an0 <- markAnnOpenP' an src "{-# ANN"
     (an1, prov') <-
       case prov of
         (ValueAnnProvenance n) -> do
           n' <- markAnnotated n
           return (an0, ValueAnnProvenance n')
         (TypeAnnProvenance n) -> do
-          an1 <- markEpAnnL an0 lapr_rest AnnType
+          an1 <- markEpAnnL' an0 lapr_rest AnnType
           n' <- markAnnotated n
           return (an1, TypeAnnProvenance n')
         ModuleAnnProvenance -> do
-          an1 <- markEpAnnL an lapr_rest AnnModule
+          an1 <- markEpAnnL' an lapr_rest AnnModule
           return (an1, prov)
 
     e' <- markAnnotated e
-    an2 <- markAnnCloseP an1
+    an2 <- markAnnCloseP' an1
     return (HsAnnotation (an2,src) prov' e')
 
 -- ---------------------------------------------------------------------
@@ -2844,81 +2923,8 @@ instance ExactPrint (GRHS GhcPs (LocatedA (HsCmd GhcPs))) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (HsExpr GhcPs) where
-  getAnnotationEntry (HsVar{})                    = NoEntryVal
-  getAnnotationEntry (HsUnboundVar an _)          = fromAnn an
-  getAnnotationEntry (HsRecSel{})                 = NoEntryVal
-  getAnnotationEntry (HsOverLabel an _ _)         = fromAnn an
-  getAnnotationEntry (HsIPVar an _)               = fromAnn an
-  getAnnotationEntry (HsOverLit an _)             = fromAnn an
-  getAnnotationEntry (HsLit an _)                 = fromAnn an
-  getAnnotationEntry (HsLam an _ _)               = fromAnn an
-  getAnnotationEntry (HsApp an _ _)               = fromAnn an
-  getAnnotationEntry (HsAppType _ _ _)            = NoEntryVal
-  getAnnotationEntry (OpApp an _ _ _)             = fromAnn an
-  getAnnotationEntry (NegApp an _ _)              = fromAnn an
-  getAnnotationEntry (HsPar{})                    = NoEntryVal
-  getAnnotationEntry (SectionL an _ _)            = fromAnn an
-  getAnnotationEntry (SectionR an _ _)            = fromAnn an
-  getAnnotationEntry (ExplicitTuple an _ _)       = fromAnn an
-  getAnnotationEntry (ExplicitSum an _ _ _)       = fromAnn an
-  getAnnotationEntry (HsCase an _ _)              = fromAnn an
-  getAnnotationEntry (HsIf an _ _ _)              = fromAnn an
-  getAnnotationEntry (HsMultiIf an _)             = fromAnn an
-  getAnnotationEntry (HsLet _ _ _)                = NoEntryVal
-  getAnnotationEntry (HsDo an _ _)                = fromAnn an
-  getAnnotationEntry (ExplicitList an _)          = fromAnn an
-  getAnnotationEntry (RecordCon an _ _)           = fromAnn an
-  getAnnotationEntry (RecordUpd an _ _)           = fromAnn an
-  getAnnotationEntry (HsGetField an _ _)          = fromAnn an
-  getAnnotationEntry (HsProjection an _)          = fromAnn an
-  getAnnotationEntry (ExprWithTySig an _ _)       = fromAnn an
-  getAnnotationEntry (ArithSeq an _ _)            = fromAnn an
-  getAnnotationEntry (HsTypedBracket an _)        = fromAnn an
-  getAnnotationEntry (HsUntypedBracket an _)      = fromAnn an
-  getAnnotationEntry (HsTypedSplice (_, an) _)    = fromAnn an
-  getAnnotationEntry (HsUntypedSplice an _)       = fromAnn an
-  getAnnotationEntry (HsProc an _ _)              = fromAnn an
-  getAnnotationEntry (HsStatic an _)              = fromAnn an
-  getAnnotationEntry (HsPragE{})                  = NoEntryVal
-  getAnnotationEntry (HsEmbTy{})                  = NoEntryVal
-
-  setAnnotationAnchor a@(HsVar{})               _ _ _s = a
-  setAnnotationAnchor (HsUnboundVar an a)    anc ts cs = (HsUnboundVar (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor a@(HsRecSel{})           _ _ _s  = a
-  setAnnotationAnchor (HsOverLabel an s a)   anc ts cs = (HsOverLabel (setAnchorEpa an anc ts cs) s a)
-  setAnnotationAnchor (HsIPVar an a)         anc ts cs = (HsIPVar (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (HsOverLit an a)       anc ts cs = (HsOverLit (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (HsLit an a)           anc ts cs = (HsLit (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (HsLam an a b)         anc ts cs = (HsLam (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsApp an a b)         anc ts cs = (HsApp (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor a@(HsAppType {})          _ _ _s = a
-  setAnnotationAnchor (OpApp an a b c)       anc ts cs = (OpApp (setAnchorEpa an anc ts cs) a b c)
-  setAnnotationAnchor (NegApp an a b)        anc ts cs = (NegApp (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor a@(HsPar {})              _ _ _s = a
-  setAnnotationAnchor (SectionL an a b)      anc ts cs = (SectionL (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (SectionR an a b)      anc ts cs = (SectionR (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (ExplicitTuple an a b) anc ts cs = (ExplicitTuple (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (ExplicitSum an a b c) anc ts cs = (ExplicitSum (setAnchorEpa an anc ts cs) a b c)
-  setAnnotationAnchor (HsCase an a b)        anc ts cs = (HsCase (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsIf an a b c)        anc ts cs = (HsIf (setAnchorEpa an anc ts cs) a b c)
-  setAnnotationAnchor (HsMultiIf an a)       anc ts cs = (HsMultiIf (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor a@(HsLet{})            _ _ _s    = a
-  setAnnotationAnchor (HsDo an a b)          anc ts cs = (HsDo (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (ExplicitList an a)    anc ts cs = (ExplicitList (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (RecordCon an a b)     anc ts cs = (RecordCon (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (RecordUpd an a b)     anc ts cs = (RecordUpd (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsGetField an a b)    anc ts cs = (HsGetField (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsProjection an a)    anc ts cs = (HsProjection (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (ExprWithTySig an a b) anc ts cs = (ExprWithTySig (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (ArithSeq an a b)      anc ts cs = (ArithSeq (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsTypedBracket an a)   anc ts cs = (HsTypedBracket (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (HsUntypedBracket an a) anc ts cs = (HsUntypedBracket (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (HsTypedSplice (x,an) e) anc ts cs = (HsTypedSplice (x,(setAnchorEpa an anc ts cs)) e)
-  setAnnotationAnchor (HsUntypedSplice an e)  anc ts cs = (HsUntypedSplice (setAnchorEpa an anc ts cs) e)
-  setAnnotationAnchor (HsProc an a b)         anc ts cs = (HsProc (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsStatic an a)         anc ts cs = (HsStatic (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor a@(HsPragE{})              _ _ _s = a
-  setAnnotationAnchor a@(HsEmbTy{})              _ _ _s = a
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _s = a
 
   exact (HsVar x n) = do
     -- The parser inserts a placeholder value for a record pun rhs. This must be
@@ -2930,7 +2936,7 @@ instance ExactPrint (HsExpr GhcPs) where
     return (HsVar x n')
   exact x@(HsUnboundVar an _) = do
     case an of
-      EpAnn _ (Just (EpAnnUnboundVar (ob,cb) l)) _ -> do
+      Just (EpAnnUnboundVar (ob,cb) l) -> do
         printStringAtAA ob "`" >> return ()
         printStringAtAA l  "_" >> return ()
         printStringAtAA cb "`" >> return ()
@@ -2963,11 +2969,11 @@ instance ExactPrint (HsExpr GhcPs) where
     return (HsLit an lit')
 
   exact (HsLam an lam_variant mg) = do
-    an0 <- markEpAnnL an lidl AnnLam
+    an0 <- mark' an AnnLam
     an1 <- case lam_variant of
              LamSingle -> return an0
-             LamCase -> markEpAnnL an0 lidl AnnCase
-             LamCases -> markEpAnnL an0 lidl AnnCases
+             LamCase -> mark' an0 AnnCase
+             LamCases -> mark' an0 AnnCases
     mg' <- markAnnotated mg
     return (HsLam an1 lam_variant mg')
 
@@ -2989,7 +2995,7 @@ instance ExactPrint (HsExpr GhcPs) where
     return (OpApp an e1' e2' e3')
 
   exact (NegApp an e s) = do
-    an0 <- markEpAnnL an lidl AnnMinus
+    an0 <- markEpAnnL' an lidl AnnMinus
     e' <- markAnnotated e
     return (NegApp an0 e' s)
 
@@ -3012,50 +3018,50 @@ instance ExactPrint (HsExpr GhcPs) where
     return (SectionR an op' expr')
 
   exact (ExplicitTuple an args b) = do
-    an0 <- if b == Boxed then markEpAnnL an lidl AnnOpenP
-                         else markEpAnnL an lidl AnnOpenPH
+    an0 <- if b == Boxed then markEpAnnL' an lidl AnnOpenP
+                         else markEpAnnL' an lidl AnnOpenPH
 
     args' <- mapM markAnnotated args
 
-    an1 <- if b == Boxed then markEpAnnL an0 lidl AnnCloseP
-                         else markEpAnnL an0 lidl AnnClosePH
+    an1 <- if b == Boxed then markEpAnnL' an0 lidl AnnCloseP
+                         else markEpAnnL' an0 lidl AnnClosePH
     debugM $ "ExplicitTuple done"
     return (ExplicitTuple an1 args' b)
 
   exact (ExplicitSum an alt arity expr) = do
-    an0 <- markLensKw an laesOpen AnnOpenPH
+    an0 <- markLensKw' an laesOpen AnnOpenPH
     an1 <- markAnnKwAllL an0 laesBarsBefore AnnVbar
     expr' <- markAnnotated expr
     an2 <- markAnnKwAllL an1 laesBarsAfter AnnVbar
-    an3 <- markLensKw an2 laesClose AnnClosePH
+    an3 <- markLensKw' an2 laesClose AnnClosePH
     return (ExplicitSum an3 alt arity expr')
 
   exact (HsCase an e alts) = do
-    an0 <- markAnnKwL an lhsCaseAnnCase AnnCase
+    an0 <- markLensKw' an lhsCaseAnnCase AnnCase
     e' <- markAnnotated e
-    an1 <- markAnnKwL an0 lhsCaseAnnOf AnnOf
-    an2 <- markEpAnnL an1 lhsCaseAnnsRest AnnOpenC
-    an3 <- markEpAnnAllL an2 lhsCaseAnnsRest AnnSemi
+    an1 <- markLensKw' an0 lhsCaseAnnOf AnnOf
+    an2 <- markEpAnnL' an1 lhsCaseAnnsRest AnnOpenC
+    an3 <- markEpAnnAllL' an2 lhsCaseAnnsRest AnnSemi
     alts' <- setLayoutBoth $ markAnnotated alts
-    an4 <- markEpAnnL an3 lhsCaseAnnsRest AnnCloseC
+    an4 <- markEpAnnL' an3 lhsCaseAnnsRest AnnCloseC
     return (HsCase an4 e' alts')
 
   exact (HsIf an e1 e2 e3) = do
-    an0 <- markAnnKwL an laiIf AnnIf
+    an0 <- markLensKw' an laiIf AnnIf
     e1' <- markAnnotated e1
-    an1 <- markLensKwM an0 laiThenSemi AnnSemi
-    an2 <- markAnnKwL an1 laiThen AnnThen
+    an1 <- markLensKwM' an0 laiThenSemi AnnSemi
+    an2 <- markLensKw' an1 laiThen AnnThen
     e2' <- markAnnotated e2
-    an3 <- markLensKwM an2 laiElseSemi AnnSemi
-    an4 <- markAnnKwL an3 laiElse AnnElse
+    an3 <- markLensKwM' an2 laiElseSemi AnnSemi
+    an4 <- markLensKw' an3 laiElse AnnElse
     e3' <- markAnnotated e3
     return (HsIf an4 e1' e2' e3')
 
   exact (HsMultiIf an mg) = do
-    an0 <- markEpAnnL an lidl AnnIf
-    an1 <- markEpAnnL an0 lidl AnnOpenC -- optional
+    an0 <- markEpAnnL' an lidl AnnIf
+    an1 <- markEpAnnL' an0 lidl AnnOpenC -- optional
     mg' <- markAnnotated mg
-    an2 <- markEpAnnL an1 lidl AnnCloseC -- optional
+    an2 <- markEpAnnL' an1 lidl AnnCloseC -- optional
     return (HsMultiIf an2 mg')
 
   exact (HsLet (tkLet, tkIn) binds e) = do
@@ -3068,137 +3074,138 @@ instance ExactPrint (HsExpr GhcPs) where
 
   exact (HsDo an do_or_list_comp stmts) = do
     debugM $ "HsDo"
-    (an',stmts') <- markAnnListA an $ \a -> exactDo a do_or_list_comp stmts
+    (an',stmts') <- markAnnListA' an $ \a -> exactDo a do_or_list_comp stmts
     return (HsDo an' do_or_list_comp stmts')
 
   exact (ExplicitList an es) = do
     debugM $ "ExplicitList start"
-    an0 <- markLensMAA an lal_open
+    an0 <- markLensMAA' an lal_open
     es' <- markAnnotated es
-    an1 <- markLensMAA an0 lal_close
+    an1 <- markLensMAA' an0 lal_close
     debugM $ "ExplicitList end"
     return (ExplicitList an1 es')
   exact (RecordCon an con_id binds) = do
     con_id' <- markAnnotated con_id
-    an0 <- markEpAnnL an lidl AnnOpenC
+    an0 <- markEpAnnL' an lidl AnnOpenC
     binds' <- markAnnotated binds
-    an1 <- markEpAnnL an0 lidl AnnCloseC
+    an1 <- markEpAnnL' an0 lidl AnnCloseC
     return (RecordCon an1 con_id' binds')
   exact (RecordUpd an expr fields) = do
     expr' <- markAnnotated expr
-    an0 <- markEpAnnL an lidl AnnOpenC
+    an0 <- markEpAnnL' an lidl AnnOpenC
     fields' <- markAnnotated fields
-    an1 <- markEpAnnL an0 lidl AnnCloseC
+    an1 <- markEpAnnL' an0 lidl AnnCloseC
     return (RecordUpd an1 expr' fields')
   exact (HsGetField an expr field) = do
     expr' <- markAnnotated expr
     field' <- markAnnotated field
     return (HsGetField an expr' field')
   exact (HsProjection an flds) = do
-    an0 <- markAnnKwL an lapOpen AnnOpenP
+    an0 <- markLensKw' an lapOpen AnnOpenP
     flds' <- mapM markAnnotated flds
-    an1 <- markAnnKwL an0 lapClose AnnCloseP
+    an1 <- markLensKw' an0 lapClose AnnCloseP
     return (HsProjection an1 flds')
   exact (ExprWithTySig an expr sig) = do
     expr' <- markAnnotated expr
-    an0 <- markEpAnnL an lidl AnnDcolon
+    an0 <- markEpAnnL' an lidl AnnDcolon
     sig' <- markAnnotated sig
     return (ExprWithTySig an0 expr' sig')
   exact (ArithSeq an s seqInfo) = do
-    an0 <- markEpAnnL an lidl AnnOpenS -- '['
+    an0 <- markEpAnnL' an lidl AnnOpenS -- '['
     (an1, seqInfo') <-
       case seqInfo of
         From e -> do
           e' <- markAnnotated e
-          an' <- markEpAnnL an0 lidl AnnDotdot
+          an' <- markEpAnnL' an0 lidl AnnDotdot
           return (an', From e')
         FromTo e1 e2 -> do
           e1' <- markAnnotated e1
-          an' <- markEpAnnL an0 lidl AnnDotdot
+          an' <- markEpAnnL' an0 lidl AnnDotdot
           e2' <- markAnnotated e2
           return (an', FromTo e1' e2')
         FromThen e1 e2 -> do
           e1' <- markAnnotated e1
-          an' <- markEpAnnL an0 lidl AnnComma
+          an' <- markEpAnnL' an0 lidl AnnComma
           e2' <- markAnnotated e2
-          an'' <- markEpAnnL an' lidl AnnDotdot
+          an'' <- markEpAnnL' an' lidl AnnDotdot
           return (an'', FromThen e1' e2')
         FromThenTo e1 e2 e3 -> do
           e1' <- markAnnotated e1
-          an' <- markEpAnnL an0 lidl AnnComma
+          an' <- markEpAnnL' an0 lidl AnnComma
           e2' <- markAnnotated e2
-          an'' <- markEpAnnL an' lidl AnnDotdot
+          an'' <- markEpAnnL' an' lidl AnnDotdot
           e3' <- markAnnotated e3
           return (an'', FromThenTo e1' e2' e3')
-    an2 <- markEpAnnL an1 lidl AnnCloseS -- ']'
+    an2 <- markEpAnnL' an1 lidl AnnCloseS -- ']'
     return (ArithSeq an2 s seqInfo')
 
 
   exact (HsTypedBracket an e) = do
-    an0 <- markEpAnnLMS an lidl AnnOpen (Just "[||")
-    an1 <- markEpAnnLMS an0 lidl AnnOpenE (Just "[e||")
+    an0 <- markEpAnnLMS'' an lidl AnnOpen (Just "[||")
+    an1 <- markEpAnnLMS'' an0 lidl AnnOpenE (Just "[e||")
     e' <- markAnnotated e
-    an2 <- markEpAnnLMS an1 lidl AnnClose (Just "||]")
+    an2 <- markEpAnnLMS'' an1 lidl AnnClose (Just "||]")
     return (HsTypedBracket an2 e')
 
   exact (HsUntypedBracket an (ExpBr a e)) = do
-    an0 <- markEpAnnL an  lidl AnnOpenEQ -- "[|"
-    an1 <- markEpAnnL an0 lidl AnnOpenE  -- "[e|" -- optional
+    an0 <- markEpAnnL' an  lidl AnnOpenEQ -- "[|"
+    an1 <- markEpAnnL' an0 lidl AnnOpenE  -- "[e|" -- optional
     e' <- markAnnotated e
-    an2 <- markEpAnnL an1 lidl AnnCloseQ -- "|]"
+    an2 <- markEpAnnL' an1 lidl AnnCloseQ -- "|]"
     return (HsUntypedBracket an2 (ExpBr a e'))
 
   exact (HsUntypedBracket an (PatBr a e)) = do
-    an0 <- markEpAnnLMS an lidl AnnOpen (Just "[p|")
+    an0 <- markEpAnnLMS'' an lidl AnnOpen (Just "[p|")
     e' <- markAnnotated e
-    an1 <- markEpAnnL an0 lidl AnnCloseQ -- "|]"
+    an1 <- markEpAnnL' an0 lidl AnnCloseQ -- "|]"
     return (HsUntypedBracket an1 (PatBr a e'))
 
   exact (HsUntypedBracket an (DecBrL a e)) = do
-    an0 <- markEpAnnLMS an lidl AnnOpen (Just "[d|")
-    an1 <- markEpAnnL an0 lidl AnnOpenC
+    an0 <- markEpAnnLMS'' an lidl AnnOpen (Just "[d|")
+    an1 <- markEpAnnL' an0 lidl AnnOpenC
     e' <- markAnnotated e
-    an2 <- markEpAnnL an1 lidl AnnCloseC
-    an3 <- markEpAnnL an2 lidl AnnCloseQ -- "|]"
+    an2 <- markEpAnnL' an1 lidl AnnCloseC
+    an3 <- markEpAnnL' an2 lidl AnnCloseQ -- "|]"
     return (HsUntypedBracket an3 (DecBrL a e'))
 
   exact (HsUntypedBracket an (TypBr a e)) = do
-    an0 <- markEpAnnLMS an lidl AnnOpen (Just "[t|")
+    an0 <- markEpAnnLMS'' an lidl AnnOpen (Just "[t|")
     e' <- markAnnotated e
-    an1 <- markEpAnnL an0 lidl AnnCloseQ -- "|]"
+    an1 <- markEpAnnL' an0 lidl AnnCloseQ -- "|]"
     return (HsUntypedBracket an1 (TypBr a e'))
 
   exact (HsUntypedBracket an (VarBr a b e)) = do
     (an0, e') <- if b
       then do
-        an' <- markEpAnnL an lidl AnnSimpleQuote
+        an' <- markEpAnnL' an lidl AnnSimpleQuote
         e' <- markAnnotated e
         return (an', e')
       else do
-        an' <- markEpAnnL an lidl AnnThTyQuote
+        an' <- markEpAnnL' an lidl AnnThTyQuote
         e' <- markAnnotated e
         return (an', e')
     return (HsUntypedBracket an0 (VarBr a b e'))
 
-  exact (HsTypedSplice (x,an) s)   = do
-    an0 <- markEpAnnL an lidl AnnDollarDollar
+  exact (HsTypedSplice an s)   = do
+    an0 <- markEpAnnL' an lidl AnnDollarDollar
     s' <- exact s
-    return (HsTypedSplice (x,an0) s')
+    return (HsTypedSplice an0 s')
+
   exact (HsUntypedSplice an s) = do
     s' <- exact s
     return (HsUntypedSplice an s')
 
   exact (HsProc an p c) = do
     debugM $ "HsProc start"
-    an0 <- markEpAnnL an lidl AnnProc
+    an0 <- markEpAnnL' an lidl AnnProc
     p' <- markAnnotated p
-    an1 <- markEpAnnL an0 lidl AnnRarrow
+    an1 <- markEpAnnL' an0 lidl AnnRarrow
     debugM $ "HsProc after AnnRarrow"
     c' <- markAnnotated c
     return (HsProc an1 p' c')
 
   exact (HsStatic an e) = do
-    an0 <- markEpAnnL an lidl AnnStatic
+    an0 <- markEpAnnL' an lidl AnnStatic
     e' <- markAnnotated e
     return (HsStatic an0 e')
 
@@ -3217,23 +3224,23 @@ instance ExactPrint (HsExpr GhcPs) where
 -- ---------------------------------------------------------------------
 
 exactDo :: (Monad m, Monoid w, ExactPrint (LocatedAn an a))
-        => EpAnn AnnList -> HsDoFlavour -> LocatedAn an a
-        -> EP w m (EpAnn AnnList, LocatedAn an a)
-exactDo an (DoExpr m)    stmts = exactMdo an m AnnDo          >>= \an0 -> markMaybeDodgyStmts an0 stmts
-exactDo an GhciStmtCtxt  stmts = markEpAnnL an lal_rest AnnDo >>= \an0 -> markMaybeDodgyStmts an0 stmts
-exactDo an (MDoExpr m)   stmts = exactMdo an m AnnMdo         >>= \an0 -> markMaybeDodgyStmts an0 stmts
+        => AnnList -> HsDoFlavour -> LocatedAn an a
+        -> EP w m (AnnList, LocatedAn an a)
+exactDo an (DoExpr m)    stmts = exactMdo an m AnnDo           >>= \an0 -> markMaybeDodgyStmts an0 stmts
+exactDo an GhciStmtCtxt  stmts = markEpAnnL' an lal_rest AnnDo >>= \an0 -> markMaybeDodgyStmts an0 stmts
+exactDo an (MDoExpr m)   stmts = exactMdo an m AnnMdo          >>= \an0 -> markMaybeDodgyStmts an0 stmts
 exactDo an ListComp      stmts = markMaybeDodgyStmts an stmts
 exactDo an MonadComp     stmts = markMaybeDodgyStmts an stmts
 
 exactMdo :: (Monad m, Monoid w)
-  => EpAnn AnnList -> Maybe ModuleName -> AnnKeywordId -> EP w m (EpAnn AnnList)
-exactMdo an Nothing            kw = markEpAnnL   an lal_rest kw
-exactMdo an (Just module_name) kw = markEpAnnLMS an lal_rest kw (Just n)
+  => AnnList -> Maybe ModuleName -> AnnKeywordId -> EP w m AnnList
+exactMdo an Nothing            kw = markEpAnnL'    an lal_rest kw
+exactMdo an (Just module_name) kw = markEpAnnLMS'' an lal_rest kw (Just n)
     where
       n = (moduleNameString module_name) ++ "." ++ (keywordToString kw)
 
 markMaybeDodgyStmts :: (Monad m, Monoid w, ExactPrint (LocatedAn an a))
-  => EpAnn AnnList -> LocatedAn an a -> EP w m (EpAnn AnnList, LocatedAn an a)
+  => AnnList -> LocatedAn an a -> EP w m (AnnList, LocatedAn an a)
 markMaybeDodgyStmts an stmts =
   if isGoodSrcSpan (getLocA stmts)
     then do
@@ -3247,25 +3254,23 @@ instance ExactPrint (HsPragE GhcPs) where
   setAnnotationAnchor a _ _ _ = a
 
   exact (HsPragSCC (an,st) sl) = do
-    an0 <- markAnnOpenP an st "{-# SCC"
+    an0 <- markAnnOpenP' an st "{-# SCC"
     let txt = sourceTextToString (sl_st sl) (unpackFS $ sl_fs sl)
-    an1 <- markEpAnnLMS an0 lapr_rest AnnVal    (Just txt) -- optional
-    an2 <- markEpAnnLMS an1 lapr_rest AnnValStr (Just txt) -- optional
-    an3 <- markAnnCloseP an2
+    an1 <- markEpAnnLMS'' an0 lapr_rest AnnVal    (Just txt) -- optional
+    an2 <- markEpAnnLMS'' an1 lapr_rest AnnValStr (Just txt) -- optional
+    an3 <- markAnnCloseP' an2
     return (HsPragSCC (an3,st) sl)
 
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (HsUntypedSplice GhcPs) where
-  getAnnotationEntry (HsUntypedSpliceExpr an _) = fromAnn an
-  getAnnotationEntry (HsQuasiQuote _ _ _)       = NoEntryVal
+  getAnnotationEntry _ = NoEntryVal
 
-  setAnnotationAnchor (HsUntypedSpliceExpr an e) anc ts cs = HsUntypedSpliceExpr (setAnchorEpa an anc ts cs) e
-  setAnnotationAnchor a@HsQuasiQuote {}         _ _  _= a
+  setAnnotationAnchor a _ _  _= a
 
   exact (HsUntypedSpliceExpr an e) = do
-    an0 <- markEpAnnL an lidl AnnDollar
+    an0 <- markEpAnnL' an lidl AnnDollar
     e' <- markAnnotated e
     return (HsUntypedSpliceExpr an0 e')
 
@@ -3321,14 +3326,15 @@ instance (ExactPrint body) => ExactPrint (HsRecFields GhcPs body) where
 
 instance (ExactPrint body)
     => ExactPrint (HsFieldBind (LocatedA (FieldOcc GhcPs)) body) where
-  getAnnotationEntry x = fromAnn (hfbAnn x)
-  setAnnotationAnchor (HsFieldBind an f arg isPun) anc ts cs = (HsFieldBind (setAnchorEpa an anc ts cs) f arg isPun)
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
+
   exact (HsFieldBind an f arg isPun) = do
     debugM $ "HsFieldBind"
     f' <- markAnnotated f
     (an0, arg') <- if isPun then return (an, arg)
              else do
-               an0 <- markEpAnnL an lidl AnnEqual
+               an0 <- markEpAnnL' an lidl AnnEqual
                arg' <- markAnnotated arg
                return (an0, arg')
     return (HsFieldBind an0 f' arg' isPun)
@@ -3337,15 +3343,15 @@ instance (ExactPrint body)
 
 instance (ExactPrint body)
     => ExactPrint (HsFieldBind (LocatedAn NoEpAnns (FieldLabelStrings GhcPs)) body) where
-  getAnnotationEntry x = fromAnn (hfbAnn x)
-  setAnnotationAnchor (HsFieldBind an f arg isPun) anc ts cs = (HsFieldBind (setAnchorEpa an anc ts cs) f arg isPun)
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (HsFieldBind an f arg isPun) = do
     debugM $ "HsFieldBind FieldLabelStrings"
     f' <- markAnnotated f
     (an0, arg') <- if isPun then return (an, arg)
              else do
-               an0 <- markEpAnnL an lidl AnnEqual
+               an0 <- markEpAnnL' an lidl AnnEqual
                arg' <- markAnnotated arg
                return (an0, arg')
     return (HsFieldBind an0 f' arg' isPun)
@@ -3354,13 +3360,14 @@ instance (ExactPrint body)
 
 instance (ExactPrint (LocatedA body))
     => ExactPrint (HsFieldBind (LocatedA (AmbiguousFieldOcc GhcPs)) (LocatedA body)) where
-  getAnnotationEntry x = fromAnn (hfbAnn x)
-  setAnnotationAnchor (HsFieldBind an f arg isPun) anc ts cs = (HsFieldBind (setAnchorEpa an anc ts cs) f arg isPun)
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
+
   exact (HsFieldBind an f arg isPun) = do
     debugM $ "HsRecUpdField"
     f' <- markAnnotated f
     an0 <- if isPun then return an
-             else markEpAnnL an lidl AnnEqual
+             else markEpAnnL' an lidl AnnEqual
     arg' <- if isPun
               then return arg
               else markAnnotated arg
@@ -3390,12 +3397,11 @@ instance ExactPrint (FieldLabelStrings GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (DotFieldOcc GhcPs) where
-  getAnnotationEntry (DotFieldOcc an _) = fromAnn an
-
-  setAnnotationAnchor (DotFieldOcc an a) anc ts cs = DotFieldOcc (setAnchorEpa an anc ts cs) a
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (DotFieldOcc an (L loc (FieldLabelString fs))) = do
-    an0 <- markLensKwM an lafDot  AnnDot
+    an0 <- markLensKwM' an lafDot  AnnDot
     -- The field name has a SrcSpanAnnN, print it as a
     -- LocatedN RdrName
     L loc' _ <- markAnnotated (L loc (mkVarUnqual fs))
@@ -3426,43 +3432,24 @@ instance ExactPrint (HsCmdTop GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (HsCmd GhcPs) where
-  getAnnotationEntry (HsCmdArrApp an _ _ _ _)   = fromAnn an
-  getAnnotationEntry (HsCmdArrForm an _ _ _ _ ) = fromAnn an
-  getAnnotationEntry (HsCmdApp an _ _ )         = fromAnn an
-  getAnnotationEntry (HsCmdPar _ _)             = NoEntryVal
-  getAnnotationEntry (HsCmdCase an _ _)         = fromAnn an
-  getAnnotationEntry (HsCmdLam an _ _)          = fromAnn an
-  getAnnotationEntry (HsCmdIf an _ _ _ _)       = fromAnn an
-  getAnnotationEntry (HsCmdLet _ _ _)           = NoEntryVal
-  getAnnotationEntry (HsCmdDo an _)             = fromAnn an
-
-  setAnnotationAnchor (HsCmdArrApp an a b c d)   anc ts cs = (HsCmdArrApp (setAnchorEpa an anc ts cs) a b c d)
-  setAnnotationAnchor (HsCmdArrForm an a b c d ) anc ts cs = (HsCmdArrForm (setAnchorEpa an anc ts cs) a b c d )
-  setAnnotationAnchor (HsCmdApp an a b )         anc ts cs = (HsCmdApp (setAnchorEpa an anc ts cs) a b )
-  setAnnotationAnchor (HsCmdLam an a b)          anc ts cs = (HsCmdLam (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor a@(HsCmdPar _ _)              _ _ _s = a
-  setAnnotationAnchor (HsCmdCase an a b)         anc ts cs = (HsCmdCase (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsCmdIf an a b c d)       anc ts cs = (HsCmdIf (setAnchorEpa an anc ts cs) a b c d)
-  setAnnotationAnchor a@(HsCmdLet _ _ _)            _ _ _s = a
-  setAnnotationAnchor (HsCmdDo an a)             anc ts cs = (HsCmdDo (setAnchorEpa an anc ts cs) a)
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (HsCmdArrApp an arr arg o isRightToLeft) = do
     if isRightToLeft
       then do
         arr' <- markAnnotated arr
-        an0 <- markKw (anns an)
+        an0 <- markKw an
         arg' <- markAnnotated arg
-        let an1 = an{anns = an0}
-        return (HsCmdArrApp an1 arr' arg' o isRightToLeft)
+        return (HsCmdArrApp an0 arr' arg' o isRightToLeft)
       else do
         arg' <- markAnnotated arg
-        an0 <- markKw (anns an)
+        an0 <- markKw an
         arr' <- markAnnotated arr
-        let an1 = an {anns = an0}
-        return (HsCmdArrApp an1 arr' arg' o isRightToLeft)
+        return (HsCmdArrApp an0 arr' arg' o isRightToLeft)
 
   exact (HsCmdArrForm an e fixity mf cs) = do
-    an0 <- markLensMAA an lal_open
+    an0 <- markLensMAA' an lal_open
     (e',cs') <- case (fixity, cs) of
       (Infix, (arg1:argrest)) -> do
         arg1' <- markAnnotated arg1
@@ -3474,7 +3461,7 @@ instance ExactPrint (HsCmd GhcPs) where
         cs' <- markAnnotated cs
         return (e', cs')
       (Infix, []) -> error "Not possible"
-    an1 <- markLensMAA an0 lal_close
+    an1 <- markLensMAA' an0 lal_close
     return (HsCmdArrForm an1 e' fixity mf cs')
 
   exact (HsCmdApp an e1 e2) = do
@@ -3483,11 +3470,11 @@ instance ExactPrint (HsCmd GhcPs) where
     return (HsCmdApp an e1' e2')
 
   exact (HsCmdLam an lam_variant matches) = do
-    an0 <- markEpAnnL an lidl AnnLam
+    an0 <- markEpAnnL' an lidl AnnLam
     an1 <- case lam_variant of
              LamSingle -> return an0
-             LamCase -> markEpAnnL an0 lidl AnnCase
-             LamCases -> markEpAnnL an0 lidl AnnCases
+             LamCase -> markEpAnnL' an0 lidl AnnCase
+             LamCases -> markEpAnnL' an0 lidl AnnCases
     matches' <- markAnnotated matches
     return (HsCmdLam an1 lam_variant matches')
 
@@ -3498,23 +3485,23 @@ instance ExactPrint (HsCmd GhcPs) where
     return (HsCmdPar (lpar', rpar') e')
 
   exact (HsCmdCase an e alts) = do
-    an0 <- markLensKw an lhsCaseAnnCase AnnCase
+    an0 <- markLensKw' an lhsCaseAnnCase AnnCase
     e' <- markAnnotated e
-    an1 <- markLensKw an0 lhsCaseAnnOf AnnOf
-    an2 <- markEpAnnL an1 lhsCaseAnnsRest AnnOpenC
-    an3 <- markEpAnnAllL an2 lhsCaseAnnsRest AnnSemi
+    an1 <- markLensKw' an0 lhsCaseAnnOf AnnOf
+    an2 <- markEpAnnL' an1 lhsCaseAnnsRest AnnOpenC
+    an3 <- markEpAnnAllL' an2 lhsCaseAnnsRest AnnSemi
     alts' <- markAnnotated alts
-    an4 <- markEpAnnL an3 lhsCaseAnnsRest AnnCloseC
+    an4 <- markEpAnnL' an3 lhsCaseAnnsRest AnnCloseC
     return (HsCmdCase an4 e' alts')
 
   exact (HsCmdIf an a e1 e2 e3) = do
-    an0 <- markLensKw an laiIf AnnIf
+    an0 <- markLensKw' an laiIf AnnIf
     e1' <- markAnnotated e1
-    an1 <- markLensKwM an0 laiThenSemi AnnSemi
-    an2 <- markLensKw an1 laiThen AnnThen
+    an1 <- markLensKwM' an0 laiThenSemi AnnSemi
+    an2 <- markLensKw' an1 laiThen AnnThen
     e2' <- markAnnotated e2
-    an3 <- markLensKwM an2 laiElseSemi AnnSemi
-    an4 <- markLensKw an3 laiElse AnnElse
+    an3 <- markLensKwM' an2 laiElseSemi AnnSemi
+    an4 <- markLensKw' an3 laiElse AnnElse
     e3' <- markAnnotated e3
     return (HsCmdIf an4 a e1' e2' e3')
 
@@ -3528,7 +3515,7 @@ instance ExactPrint (HsCmd GhcPs) where
 
   exact (HsCmdDo an es) = do
     debugM $ "HsCmdDo"
-    an0 <- markEpAnnL an lal_rest AnnDo
+    an0 <- markEpAnnL' an lal_rest AnnDo
     es' <- markAnnotated es
     return (HsCmdDo an0 es')
 
@@ -3540,27 +3527,8 @@ instance (
            Anno [GenLocated SrcSpanAnnA (StmtLR GhcPs GhcPs (LocatedA (body GhcPs)))] ~ SrcSpanAnnL,
            (ExactPrint (LocatedL [LocatedA (StmtLR GhcPs GhcPs (LocatedA (body GhcPs)))])))
    => ExactPrint (StmtLR GhcPs GhcPs (LocatedA (body GhcPs))) where
-  getAnnotationEntry (LastStmt _ _ _ _)             = NoEntryVal
-  getAnnotationEntry (BindStmt an _ _)              = fromAnn an
-  getAnnotationEntry (ApplicativeStmt _ _ _)        = NoEntryVal
-  getAnnotationEntry (BodyStmt _ _ _ _)             = NoEntryVal
-  getAnnotationEntry (LetStmt an _)                 = fromAnn an
-  getAnnotationEntry (ParStmt _ _ _ _)              = NoEntryVal
-  getAnnotationEntry (TransStmt an _ _ _ _ _ _ _ _) = fromAnn an
-  getAnnotationEntry (RecStmt an _ _ _ _ _ _)       = fromAnn an
-
-  -----------------------------------------------------------------
-
-  setAnnotationAnchor a@(LastStmt _ _ _ _)              _ _ _s = a
-  setAnnotationAnchor (BindStmt an a b)              anc ts cs = (BindStmt (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor a@(ApplicativeStmt _ _ _)         _ _ _s = a
-  setAnnotationAnchor a@(BodyStmt _ _ _ _)              _ _ _s = a
-  setAnnotationAnchor (LetStmt an a)                 anc ts cs = (LetStmt (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor a@(ParStmt _ _ _ _)               _ _ _s = a
-  setAnnotationAnchor (TransStmt an a b c d e f g h) anc ts cs = (TransStmt (setAnchorEpa an anc ts cs) a b c d e f g h)
-  setAnnotationAnchor (RecStmt an a b c d e f)       anc ts cs = (RecStmt (setAnchorEpa an anc ts cs) a b c d e f)
-
-  -----------------------------------------------------------------
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _s = a
 
   exact (LastStmt a body b c) = do
     debugM $ "LastStmt"
@@ -3570,7 +3538,7 @@ instance (
   exact (BindStmt an pat body) = do
     debugM $ "BindStmt"
     pat' <- markAnnotated pat
-    an0 <- markEpAnnL an lidl AnnLarrow
+    an0 <- markEpAnnL' an lidl AnnLarrow
     body' <- markAnnotated body
     return (BindStmt an0 pat' body')
 
@@ -3584,7 +3552,7 @@ instance (
 
   exact (LetStmt an binds) = do
     debugM $ "LetStmt"
-    an0 <- markEpAnnL an lidl AnnLet
+    an0 <- markEpAnnL' an lidl AnnLet
     binds' <- markAnnotated binds
     return (LetStmt an0 binds')
 
@@ -3601,8 +3569,8 @@ instance (
 
   exact (RecStmt an stmts a b c d e) = do
     debugM $ "RecStmt"
-    an0 <- markEpAnnL an lal_rest AnnRec
-    (an1, stmts') <- markAnnList an0 (markAnnotated stmts)
+    an0 <- markEpAnnL' an lal_rest AnnRec
+    (an1, stmts') <- markAnnList' an0 (markAnnotated stmts)
     return (RecStmt an1 stmts' a b c d e)
 
 -- ---------------------------------------------------------------------
@@ -3615,46 +3583,37 @@ instance ExactPrint (ParStmtBlock GhcPs GhcPs) where
     return (ParStmtBlock a stmts' b c)
 
 exactTransStmt :: (Monad m, Monoid w)
-  => EpAnn [AddEpAnn] -> Maybe (LHsExpr GhcPs) -> (LHsExpr GhcPs) -> TransForm
-  -> EP w m (EpAnn [AddEpAnn], Maybe (LHsExpr GhcPs), (LHsExpr GhcPs))
+  => [AddEpAnn] -> Maybe (LHsExpr GhcPs) -> (LHsExpr GhcPs) -> TransForm
+  -> EP w m ([AddEpAnn], Maybe (LHsExpr GhcPs), (LHsExpr GhcPs))
 exactTransStmt an by using ThenForm = do
   debugM $ "exactTransStmt:ThenForm"
-  an0 <- markEpAnnL an lidl AnnThen
+  an0 <- markEpAnnL' an lidl AnnThen
   using' <- markAnnotated using
   case by of
     Nothing -> return (an0, by, using')
     Just b -> do
-      an1 <- markEpAnnL an0 lidl AnnBy
+      an1 <- markEpAnnL' an0 lidl AnnBy
       b' <- markAnnotated b
       return (an1, Just b', using')
 exactTransStmt an by using GroupForm = do
   debugM $ "exactTransStmt:GroupForm"
-  an0 <- markEpAnnL an lidl AnnThen
-  an1 <- markEpAnnL an0 lidl AnnGroup
+  an0 <- markEpAnnL' an lidl AnnThen
+  an1 <- markEpAnnL' an0 lidl AnnGroup
   (an2, by') <- case by of
     Nothing -> return (an1, by)
     Just b -> do
-      an2 <- markEpAnnL an1 lidl AnnBy
+      an2 <- markEpAnnL' an1 lidl AnnBy
       b' <- markAnnotated b
       return (an2, Just b')
-  an3 <- markEpAnnL an2 lidl AnnUsing
+  an3 <- markEpAnnL' an2 lidl AnnUsing
   using' <- markAnnotated using
   return (an3, by', using')
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (TyClDecl GhcPs) where
-  getAnnotationEntry (FamDecl   { })                   = NoEntryVal
-  getAnnotationEntry (SynDecl   { tcdSExt = an })      = fromAnn an
-  getAnnotationEntry (DataDecl  { tcdDExt = an })      = fromAnn an
-  getAnnotationEntry (ClassDecl { tcdCExt = (an, _, _) }) = fromAnn an
-
-  setAnnotationAnchor a@FamDecl{}      _ _ _s = a
-  setAnnotationAnchor x@SynDecl{}   anc ts cs = x { tcdSExt = setAnchorEpa (tcdSExt x) anc ts cs }
-  setAnnotationAnchor x@DataDecl{}  anc ts cs = x { tcdDExt = setAnchorEpa (tcdDExt x) anc ts cs }
-  setAnnotationAnchor x@ClassDecl{} anc ts cs = x { tcdCExt = (setAnchorEpa an anc ts cs, layout, a) }
-    where
-      (an,layout,a) = tcdCExt x
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _s = a
 
   exact (FamDecl a decl) = do
     decl' <- markAnnotated decl
@@ -3667,10 +3626,10 @@ instance ExactPrint (TyClDecl GhcPs) where
     -- that are infix.  Turn these into comments so that they feed
     -- into the right place automatically
     an0 <- annotationsToComments an lidl [AnnOpenP,AnnCloseP]
-    an1 <- markEpAnnL an0 lidl AnnType
+    an1 <- markEpAnnL' an0 lidl AnnType
 
     (_anx, ltycon', tyvars',_,_) <- exactVanillaDeclHead ltycon tyvars fixity Nothing
-    an2 <- markEpAnnL an1 lidl AnnEqual
+    an2 <- markEpAnnL' an1 lidl AnnEqual
     rhs' <- markAnnotated rhs
     return (SynDecl { tcdSExt = an2
                     , tcdLName = ltycon', tcdTyVars = tyvars', tcdFixity = fixity
@@ -3697,8 +3656,8 @@ instance ExactPrint (TyClDecl GhcPs) where
       | null sigs && isEmptyBag methods && null ats && null at_defs -- No "where" part
       = do
           (an0, fds', lclas', tyvars',context') <- top_matter
-          an1 <- markEpAnnL an0 lidl AnnOpenC
-          an2 <- markEpAnnL an1 lidl AnnCloseC
+          an1 <- markEpAnnL' an0 lidl AnnOpenC
+          an2 <- markEpAnnL' an1 lidl AnnCloseC
           return (ClassDecl {tcdCExt = (an2, lo, sortKey),
                              tcdCtxt = context', tcdLName = lclas', tcdTyVars = tyvars',
                              tcdFixity = fixity,
@@ -3710,8 +3669,8 @@ instance ExactPrint (TyClDecl GhcPs) where
       | otherwise       -- Laid out
       = do
           (an0, fds', lclas', tyvars',context') <- top_matter
-          an1 <- markEpAnnL    an0 lidl AnnOpenC
-          an2 <- markEpAnnAllL an1 lidl AnnSemi
+          an1 <- markEpAnnL'    an0 lidl AnnOpenC
+          an2 <- markEpAnnAllL' an1 lidl AnnSemi
           ds <- withSortKey sortKey
                                [(ClsSigTag, prepareListAnnotationA sigs),
                                 (ClsMethodTag, prepareListAnnotationA (bagToList methods)),
@@ -3719,7 +3678,7 @@ instance ExactPrint (TyClDecl GhcPs) where
                                 (ClsAtdTag, prepareListAnnotationA at_defs)
                              -- ++ prepareListAnnotation docs
                                ]
-          an3 <- markEpAnnL an2 lidl AnnCloseC
+          an3 <- markEpAnnL' an2 lidl AnnCloseC
           let
             sigs'    = undynamic ds
             methods' = listToBag $ undynamic ds
@@ -3735,35 +3694,35 @@ instance ExactPrint (TyClDecl GhcPs) where
       where
         top_matter = do
           an' <- annotationsToComments an lidl  [AnnOpenP, AnnCloseP]
-          an0 <- markEpAnnL an' lidl AnnClass
+          an0 <- markEpAnnL' an' lidl AnnClass
           (_, lclas', tyvars',_,context') <-  exactVanillaDeclHead lclas tyvars fixity context
           (an1, fds') <- if (null fds)
             then return (an0, fds)
             else do
-              an1 <- markEpAnnL an0 lidl AnnVbar
+              an1 <- markEpAnnL' an0 lidl AnnVbar
               fds' <- markAnnotated fds
               return (an1, fds')
-          an2 <- markEpAnnL an1 lidl AnnWhere
+          an2 <- markEpAnnL' an1 lidl AnnWhere
           return (an2, fds', lclas', tyvars',context')
 
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (FunDep GhcPs) where
-  getAnnotationEntry (FunDep an _ _) = fromAnn an
-  setAnnotationAnchor (FunDep an a b) anc ts cs = FunDep (setAnchorEpa an anc ts cs) a b
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (FunDep an ls rs') = do
     ls' <- markAnnotated ls
-    an0 <- markEpAnnL an lidl AnnRarrow
+    an0 <- markEpAnnL' an lidl AnnRarrow
     rs'' <- markAnnotated rs'
     return (FunDep an0 ls' rs'')
 
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (FamilyDecl GhcPs) where
-  getAnnotationEntry (FamilyDecl { fdExt = an }) = fromAnn an
-  setAnnotationAnchor x anc ts cs = x { fdExt = setAnchorEpa (fdExt x) anc ts cs}
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (FamilyDecl { fdExt = an
                     , fdInfo = info
@@ -3782,23 +3741,23 @@ instance ExactPrint (FamilyDecl GhcPs) where
       case mb_inj of
         Nothing -> return (an3, mb_inj)
         Just inj -> do
-          an4 <- markEpAnnL an3 lidl AnnVbar
+          an4 <- markEpAnnL' an3 lidl AnnVbar
           inj' <- markAnnotated inj
           return (an4, Just inj')
     (an5, info') <-
              case info of
                ClosedTypeFamily mb_eqns -> do
-                 an5 <- markEpAnnL an4 lidl AnnWhere
-                 an6 <- markEpAnnL an5 lidl AnnOpenC
+                 an5 <- markEpAnnL' an4 lidl AnnWhere
+                 an6 <- markEpAnnL' an5 lidl AnnOpenC
                  (an7, mb_eqns') <-
                    case mb_eqns of
                      Nothing -> do
-                       an7 <- markEpAnnL an6 lidl AnnDotdot
+                       an7 <- markEpAnnL' an6 lidl AnnDotdot
                        return (an7, mb_eqns)
                      Just eqns -> do
                        eqns' <- markAnnotated eqns
                        return (an6, Just eqns')
-                 an8 <- markEpAnnL an7 lidl AnnCloseC
+                 an8 <- markEpAnnL' an7 lidl AnnCloseC
                  return (an8, ClosedTypeFamily mb_eqns')
                _ -> return (an4, info)
     return (FamilyDecl { fdExt = an5
@@ -3812,44 +3771,44 @@ instance ExactPrint (FamilyDecl GhcPs) where
     where
       exact_top_level an' =
         case top_level of
-          TopLevel    -> markEpAnnL an' lidl AnnFamily
+          TopLevel    -> markEpAnnL' an' lidl AnnFamily
           NotTopLevel -> do
             -- It seems that in some kind of legacy
             -- mode the 'family' keyword is still
             -- accepted.
-            markEpAnnL an' lidl AnnFamily
+            markEpAnnL' an' lidl AnnFamily
 
       exact_kind an' =
         case result of
           NoSig    _         -> return (an', result)
           KindSig  x kind    -> do
-            an0 <- markEpAnnL an' lidl AnnDcolon
+            an0 <- markEpAnnL' an' lidl AnnDcolon
             kind' <- markAnnotated kind
             return (an0, KindSig  x kind')
           TyVarSig x tv_bndr -> do
-            an0 <- markEpAnnL an' lidl AnnEqual
+            an0 <- markEpAnnL' an' lidl AnnEqual
             tv_bndr' <- markAnnotated tv_bndr
             return (an0, TyVarSig x tv_bndr')
 
 
-exactFlavour :: (Monad m, Monoid w) => EpAnn [AddEpAnn] -> FamilyInfo GhcPs -> EP w m (EpAnn [AddEpAnn])
-exactFlavour an DataFamily            = markEpAnnL an lidl AnnData
-exactFlavour an OpenTypeFamily        = markEpAnnL an lidl AnnType
-exactFlavour an (ClosedTypeFamily {}) = markEpAnnL an lidl AnnType
+exactFlavour :: (Monad m, Monoid w) => [AddEpAnn] -> FamilyInfo GhcPs -> EP w m [AddEpAnn]
+exactFlavour an DataFamily            = markEpAnnL' an lidl AnnData
+exactFlavour an OpenTypeFamily        = markEpAnnL' an lidl AnnType
+exactFlavour an (ClosedTypeFamily {}) = markEpAnnL' an lidl AnnType
 
 -- ---------------------------------------------------------------------
 
 exactDataDefn
   :: (Monad m, Monoid w)
-  => EpAnn [AddEpAnn]
-  -> (Maybe (LHsContext GhcPs) -> EP w m (EpAnn [AddEpAnn]
+  => [AddEpAnn]
+  -> (Maybe (LHsContext GhcPs) -> EP w m ([AddEpAnn]
                                          , LocatedN RdrName
                                          , a
                                          , b
                                          , Maybe (LHsContext GhcPs))) -- Printing the header
   -> HsDataDefn GhcPs
-  -> EP w m ( EpAnn [AddEpAnn] -- ^ from exactHdr
-            , EpAnn [AddEpAnn] -- ^ updated one passed in
+  -> EP w m ( [AddEpAnn] -- ^ from exactHdr
+            , [AddEpAnn] -- ^ updated one passed in
             , LocatedN RdrName, a, b, Maybe (LHsContext GhcPs), HsDataDefn GhcPs)
 exactDataDefn an exactHdr
                  (HsDataDefn { dd_ext = x, dd_ctxt = context
@@ -3862,31 +3821,31 @@ exactDataDefn an exactHdr
   an0 <- case condecls of
     DataTypeCons is_type_data _ -> do
       an0' <- if is_type_data
-                then markEpAnnL an' lidl AnnType
+                then markEpAnnL' an' lidl AnnType
                 else return an'
-      markEpAnnL an0' lidl AnnData
-    NewTypeCon   _ -> markEpAnnL an' lidl AnnNewtype
+      markEpAnnL' an0' lidl AnnData
+    NewTypeCon   _ -> markEpAnnL' an' lidl AnnNewtype
 
-  an1 <- markEpAnnL an0 lidl AnnInstance -- optional
+  an1 <- markEpAnnL' an0 lidl AnnInstance -- optional
   mb_ct' <- mapM markAnnotated mb_ct
   (anx, ln', tvs', b, mctxt') <- exactHdr context
   (an2, mb_sig') <- case mb_sig of
     Nothing -> return (an1, Nothing)
     Just kind -> do
-      an2 <- markEpAnnL an1 lidl AnnDcolon
+      an2 <- markEpAnnL' an1 lidl AnnDcolon
       kind' <- markAnnotated kind
       return (an2, Just kind')
   an3 <- if (needsWhere condecls)
-    then markEpAnnL an2 lidl AnnWhere
+    then markEpAnnL' an2 lidl AnnWhere
     else return an2
-  an4 <- markEpAnnL an3 lidl AnnOpenC
+  an4 <- markEpAnnL' an3 lidl AnnOpenC
   (an5, condecls') <- exact_condecls an4 (toList condecls)
   let condecls'' = case condecls of
         DataTypeCons d _ -> DataTypeCons d condecls'
         NewTypeCon _     -> case condecls' of
           [decl] -> NewTypeCon decl
           _ -> panic "exacprint NewTypeCon"
-  an6 <- markEpAnnL an5 lidl AnnCloseC
+  an6 <- markEpAnnL' an5 lidl AnnCloseC
   derivings' <- mapM markAnnotated derivings
   return (anx, an6, ln', tvs', b, mctxt',
                  (HsDataDefn { dd_ext = x, dd_ctxt = context
@@ -3900,7 +3859,7 @@ exactVanillaDeclHead :: (Monad m, Monoid w)
                      -> LHsQTyVars GhcPs
                      -> LexicalFixity
                      -> Maybe (LHsContext GhcPs)
-                     -> EP w m ( EpAnn [AddEpAnn]
+                     -> EP w m ( [AddEpAnn]
                                , LocatedN RdrName
                                , LHsQTyVars GhcPs
                                , (), Maybe (LHsContext GhcPs))
@@ -3933,12 +3892,12 @@ exactVanillaDeclHead thing tvs@(HsQTvs { hsq_explicit = tyvars }) fixity context
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (InjectivityAnn GhcPs) where
-  getAnnotationEntry (InjectivityAnn an _ _) = fromAnn an
-  setAnnotationAnchor (InjectivityAnn an a b) anc ts cs = InjectivityAnn (setAnchorEpa an anc ts cs) a b
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
   exact (InjectivityAnn an lhs rhs) = do
-    an0 <- markEpAnnL an lidl AnnVbar
+    an0 <- markEpAnnL' an lidl AnnVbar
     lhs' <- markAnnotated lhs
-    an1 <- markEpAnnL an0 lidl AnnRarrow
+    an1 <- markEpAnnL' an0 lidl AnnRarrow
     rhs' <- mapM markAnnotated rhs
     return (InjectivityAnn an1 lhs' rhs')
 
@@ -3946,21 +3905,21 @@ instance ExactPrint (InjectivityAnn GhcPs) where
 
 class Typeable flag => ExactPrintTVFlag flag where
   exactTVDelimiters :: (Monad m, Monoid w)
-    => EpAnn [AddEpAnn] -> flag -> EP w m (HsTyVarBndr flag GhcPs)
-    -> EP w m (EpAnn [AddEpAnn], (HsTyVarBndr flag GhcPs))
+    => [AddEpAnn] -> flag -> EP w m (HsTyVarBndr flag GhcPs)
+    -> EP w m ([AddEpAnn], (HsTyVarBndr flag GhcPs))
 
 instance ExactPrintTVFlag () where
   exactTVDelimiters an _ thing_inside = do
-    an0 <- markEpAnnAllL an lid AnnOpenP
+    an0 <- markEpAnnAllL' an lid AnnOpenP
     r <- thing_inside
-    an1 <- markEpAnnAllL an0 lid AnnCloseP
+    an1 <- markEpAnnAllL' an0 lid AnnCloseP
     return (an1, r)
 
 instance ExactPrintTVFlag Specificity where
   exactTVDelimiters an s thing_inside = do
-    an0 <- markEpAnnAllL an lid open
+    an0 <- markEpAnnAllL' an lid open
     r <- thing_inside
-    an1 <- markEpAnnAllL an0 lid close
+    an1 <- markEpAnnAllL' an0 lid close
     return (an1, r)
     where
       (open, close) = case s of
@@ -3972,17 +3931,14 @@ instance ExactPrintTVFlag (HsBndrVis GhcPs) where
     case bvis of
       HsBndrRequired _ -> return ()
       HsBndrInvisible at -> markEpToken at >> return ()
-    an1 <- markEpAnnAllL an0 lid AnnOpenP
+    an1 <- markEpAnnAllL' an0 lid AnnOpenP
     r <- thing_inside
-    an2 <- markEpAnnAllL an1 lid AnnCloseP
+    an2 <- markEpAnnAllL' an1 lid AnnCloseP
     return (an2, r)
 
 instance ExactPrintTVFlag flag => ExactPrint (HsTyVarBndr flag GhcPs) where
-  getAnnotationEntry (UserTyVar an _ _)     = fromAnn an
-  getAnnotationEntry (KindedTyVar an _ _ _) = fromAnn an
-
-  setAnnotationAnchor (UserTyVar an a b)     anc ts cs = UserTyVar (setAnchorEpa an anc ts cs) a b
-  setAnnotationAnchor (KindedTyVar an a b c) anc ts cs = KindedTyVar (setAnchorEpa an anc ts cs) a b c
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (UserTyVar an flag n) = do
     r <- exactTVDelimiters an flag $ do
@@ -3994,7 +3950,7 @@ instance ExactPrintTVFlag flag => ExactPrint (HsTyVarBndr flag GhcPs) where
   exact (KindedTyVar an flag n k) = do
     r <- exactTVDelimiters an flag $ do
           n' <- markAnnotated n
-          an0 <- markEpAnnL an lidl AnnDcolon
+          an0 <- markEpAnnL' an lidl AnnDcolon
           k' <- markAnnotated k
           return (KindedTyVar an0 flag n' k')
     case r of
@@ -4004,53 +3960,8 @@ instance ExactPrintTVFlag flag => ExactPrint (HsTyVarBndr flag GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (HsType GhcPs) where
-  getAnnotationEntry (HsForAllTy _ _ _)        = NoEntryVal
-  getAnnotationEntry (HsQualTy _ _ _)          = NoEntryVal
-  getAnnotationEntry (HsTyVar an _ _)          = fromAnn an
-  getAnnotationEntry (HsAppTy _ _ _)           = NoEntryVal
-  getAnnotationEntry (HsAppKindTy _ _ _)       = NoEntryVal
-  getAnnotationEntry (HsFunTy an _ _ _)        = fromAnn an
-  getAnnotationEntry (HsListTy an _)           = fromAnn an
-  getAnnotationEntry (HsTupleTy an _ _)        = fromAnn an
-  getAnnotationEntry (HsSumTy an _)            = fromAnn an
-  getAnnotationEntry (HsOpTy an _ _ _ _)       = fromAnn an
-  getAnnotationEntry (HsParTy an _)            = fromAnn an
-  getAnnotationEntry (HsIParamTy an _ _)       = fromAnn an
-  getAnnotationEntry (HsStarTy _ _)            = NoEntryVal
-  getAnnotationEntry (HsKindSig an _ _)        = fromAnn an
-  getAnnotationEntry (HsSpliceTy _ _)          = NoEntryVal
-  getAnnotationEntry (HsDocTy an _ _)          = fromAnn an
-  getAnnotationEntry (HsBangTy an _ _)         = fromAnn an
-  getAnnotationEntry (HsRecTy an _)            = fromAnn an
-  getAnnotationEntry (HsExplicitListTy an _ _) = fromAnn an
-  getAnnotationEntry (HsExplicitTupleTy an _)  = fromAnn an
-  getAnnotationEntry (HsTyLit _ _)             = NoEntryVal
-  getAnnotationEntry (HsWildCardTy _)          = NoEntryVal
-  getAnnotationEntry (XHsType _)               = NoEntryVal
-
-  setAnnotationAnchor a@(HsForAllTy _ _ _)         _ _ _s = a
-  setAnnotationAnchor a@(HsQualTy _ _ _)           _ _ _s = a
-  setAnnotationAnchor (HsTyVar an a b)          anc ts cs = (HsTyVar (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor a@(HsAppTy _ _ _)            _ _ _s = a
-  setAnnotationAnchor a@(HsAppKindTy _ _ _)        _ _ _s = a
-  setAnnotationAnchor (HsFunTy an a b c)        anc ts cs = (HsFunTy (setAnchorEpa an anc ts cs) a b c)
-  setAnnotationAnchor (HsListTy an a)           anc ts cs = (HsListTy (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (HsTupleTy an a b)        anc ts cs = (HsTupleTy (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsSumTy an a)            anc ts cs = (HsSumTy (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor a@(HsOpTy _ _ _ _ _)         _ _ _s = a
-  setAnnotationAnchor (HsParTy an a)            anc ts cs = (HsParTy (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (HsIParamTy an a b)       anc ts cs = (HsIParamTy (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor a@(HsStarTy _ _)             _ _ _s = a
-  setAnnotationAnchor (HsKindSig an a b)        anc ts cs = (HsKindSig (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor a@(HsSpliceTy _ _)           _ _ _s = a
-  setAnnotationAnchor (HsDocTy an a b)          anc ts cs = (HsDocTy (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsBangTy an a b)         anc ts cs = (HsBangTy (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsRecTy an a)            anc ts cs = (HsRecTy (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (HsExplicitListTy an a b) anc ts cs = (HsExplicitListTy (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (HsExplicitTupleTy an a)  anc ts cs = (HsExplicitTupleTy (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor a@(HsTyLit _ _)              _ _ _s = a
-  setAnnotationAnchor a@(HsWildCardTy _)           _ _ _s = a
-  setAnnotationAnchor a@(XHsType _)                _ _ _s = a
+  getAnnotationEntry _         = NoEntryVal
+  setAnnotationAnchor a _ _ _s = a
 
   exact (HsForAllTy { hst_xforall = an
                     , hst_tele = tele, hst_body = ty }) = do
@@ -4065,7 +3976,7 @@ instance ExactPrint (HsType GhcPs) where
     return (HsQualTy an ctxt' ty')
   exact (HsTyVar an promoted name) = do
     an0 <- if (promoted == IsPromoted)
-             then markEpAnnL an lidl AnnSimpleQuote
+             then markEpAnnL' an lidl AnnSimpleQuote
              else return an
     name' <- markAnnotated name
     return (HsTyVar an0 promoted name')
@@ -4100,7 +4011,7 @@ instance ExactPrint (HsType GhcPs) where
     return (HsSumTy an1 tys')
   exact (HsOpTy an promoted t1 lo t2) = do
     an0 <- if (isPromoted promoted)
-        then markEpAnnL an lidl AnnSimpleQuote
+        then markEpAnnL' an lidl AnnSimpleQuote
         else return an
     t1' <- markAnnotated t1
     lo' <- markAnnotated lo
@@ -4113,7 +4024,7 @@ instance ExactPrint (HsType GhcPs) where
     return (HsParTy an1 ty')
   exact (HsIParamTy an n t) = do
     n' <- markAnnotated n
-    an0 <- markEpAnnL an lidl AnnDcolon
+    an0 <- markEpAnnL' an lidl AnnDcolon
     t' <- markAnnotated t
     return (HsIParamTy an0 n' t')
   exact (HsStarTy an isUnicode) = do
@@ -4123,7 +4034,7 @@ instance ExactPrint (HsType GhcPs) where
     return (HsStarTy an isUnicode)
   exact (HsKindSig an ty k) = do
     ty' <- markAnnotated ty
-    an0 <- markEpAnnL an lidl AnnDcolon
+    an0 <- markEpAnnL' an lidl AnnDcolon
     k' <- markAnnotated k
     return (HsKindSig an0 ty' k')
   exact (HsSpliceTy a splice) = do
@@ -4138,30 +4049,30 @@ instance ExactPrint (HsType GhcPs) where
         NoSourceText -> return an
         SourceText src -> do
           debugM $ "HsBangTy: src=" ++ showAst src
-          an0 <- markEpAnnLMS an lid AnnOpen  (Just $ unpackFS src)
-          an1 <- markEpAnnLMS an0 lid AnnClose (Just "#-}")
+          an0 <- markEpAnnMS' an AnnOpen  (Just $ unpackFS src)
+          an1 <- markEpAnnMS' an0 AnnClose (Just "#-}")
           debugM $ "HsBangTy: done unpackedness"
           return an1
     an1 <-
       case str of
-        SrcLazy     -> markEpAnnL an0 lidl AnnTilde
-        SrcStrict   -> markEpAnnL an0 lidl AnnBang
+        SrcLazy     -> mark' an0 AnnTilde
+        SrcStrict   -> mark' an0 AnnBang
         NoSrcStrict -> return an0
     ty' <- markAnnotated ty
     return (HsBangTy an1 (HsSrcBang mt up str) ty')
   exact (HsExplicitListTy an prom tys) = do
     an0 <- if (isPromoted prom)
-             then markEpAnnL an lidl AnnSimpleQuote
+             then mark' an AnnSimpleQuote
              else return an
-    an1 <- markEpAnnL an0 lidl AnnOpenS
+    an1 <- mark' an0 AnnOpenS
     tys' <- markAnnotated tys
-    an2 <- markEpAnnL an1 lidl AnnCloseS
+    an2 <- mark' an1 AnnCloseS
     return (HsExplicitListTy an2 prom tys')
   exact (HsExplicitTupleTy an tys) = do
-    an0 <- markEpAnnL an lidl AnnSimpleQuote
-    an1 <- markEpAnnL an0 lidl AnnOpenP
+    an0 <- mark' an AnnSimpleQuote
+    an1 <- mark' an0 AnnOpenP
     tys' <- markAnnotated tys
-    an2 <- markEpAnnL an1 lidl AnnCloseP
+    an2 <- mark' an1 AnnCloseP
     return (HsExplicitTupleTy an2 tys')
   exact (HsTyLit a lit) = do
     case lit of
@@ -4196,14 +4107,13 @@ instance ExactPrint (HsForAllTelescope GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (HsDerivingClause GhcPs) where
-  getAnnotationEntry d@(HsDerivingClause{}) = fromAnn (deriv_clause_ext d)
-  setAnnotationAnchor x anc ts cs = (x { deriv_clause_ext = setAnchorEpa (deriv_clause_ext x) anc ts cs})
-                                      `debug` ("setAnnotationAnchor HsDerivingClause: (anc,cs):" ++ showAst (anc,cs))
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (HsDerivingClause { deriv_clause_ext      = an
                           , deriv_clause_strategy = dcs
                           , deriv_clause_tys      = dct }) = do
-    an0 <- markEpAnnL an lidl AnnDeriving
+    an0 <- markEpAnnL' an lidl AnnDeriving
     exact_strat_before
     dct' <- markAnnotated dct
     exact_strat_after
@@ -4219,27 +4129,20 @@ instance ExactPrint (HsDerivingClause GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (DerivStrategy GhcPs) where
-  getAnnotationEntry (StockStrategy an)    = fromAnn an
-  getAnnotationEntry (AnyclassStrategy an) = fromAnn an
-  getAnnotationEntry (NewtypeStrategy an)  = fromAnn an
-  getAnnotationEntry (ViaStrategy (XViaStrategyPs an  _)) = fromAnn an
-
-  setAnnotationAnchor (StockStrategy an)    anc ts cs = (StockStrategy (setAnchorEpa an anc ts cs))
-  setAnnotationAnchor (AnyclassStrategy an) anc ts cs = (AnyclassStrategy (setAnchorEpa an anc ts cs))
-  setAnnotationAnchor (NewtypeStrategy an)  anc ts cs = (NewtypeStrategy (setAnchorEpa an anc ts cs))
-  setAnnotationAnchor (ViaStrategy (XViaStrategyPs an  a)) anc ts cs = (ViaStrategy (XViaStrategyPs (setAnchorEpa an anc ts cs)  a))
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (StockStrategy an)    = do
-    an0 <- markEpAnnL an lid AnnStock
+    an0 <- markEpAnnL' an lid AnnStock
     return (StockStrategy an0)
   exact (AnyclassStrategy an) = do
-    an0 <- markEpAnnL an lid AnnAnyclass
+    an0 <- markEpAnnL' an lid AnnAnyclass
     return (AnyclassStrategy an0)
   exact (NewtypeStrategy an)  = do
-    an0 <- markEpAnnL an lid AnnNewtype
+    an0 <- markEpAnnL' an lid AnnNewtype
     return (NewtypeStrategy an0)
   exact (ViaStrategy (XViaStrategyPs an ty)) = do
-    an0 <- markEpAnnL an lid AnnVia
+    an0 <- markEpAnnL' an lid AnnVia
     ty' <- markAnnotated ty
     return (ViaStrategy (XViaStrategyPs an0 ty'))
 
@@ -4382,7 +4285,7 @@ markTrailing ts = do
 
 -- based on pp_condecls in Decls.hs
 exact_condecls :: (Monad m, Monoid w)
-  => EpAnn [AddEpAnn] -> [LConDecl GhcPs] -> EP w m (EpAnn [AddEpAnn],[LConDecl GhcPs])
+  => [AddEpAnn] -> [LConDecl GhcPs] -> EP w m ([AddEpAnn],[LConDecl GhcPs])
 exact_condecls an cs
   | gadt_syntax                  -- In GADT syntax
   = do
@@ -4390,7 +4293,7 @@ exact_condecls an cs
       return (an, cs')
   | otherwise                    -- In H98 syntax
   = do
-      an0 <- markEpAnnL an lidl AnnEqual
+      an0 <- markEpAnnL' an lidl AnnEqual
       cs' <- mapM markAnnotated cs
       return (an0, cs')
   where
@@ -4402,11 +4305,8 @@ exact_condecls an cs
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (ConDecl GhcPs) where
-  getAnnotationEntry x@(ConDeclGADT{}) = fromAnn (snd (con_g_ext x))
-  getAnnotationEntry x@(ConDeclH98{})  = fromAnn (con_ext x)
-
-  setAnnotationAnchor x@ConDeclGADT{} anc ts cs = x { con_g_ext = fmap (\an -> setAnchorEpa an anc ts cs) (con_g_ext x) }
-  setAnnotationAnchor x@ConDeclH98{}  anc ts cs = x { con_ext   = setAnchorEpa (con_ext x) anc ts cs}
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
 -- based on pprConDecl
   exact (ConDeclH98 { con_ext = an
@@ -4417,15 +4317,15 @@ instance ExactPrint (ConDecl GhcPs) where
                     , con_args = args
                     , con_doc = doc }) = do
     an0 <- if has_forall
-      then markEpAnnL an lidl AnnForall
+      then markEpAnnL' an lidl AnnForall
       else return an
     ex_tvs' <- mapM markAnnotated ex_tvs
     an1 <- if has_forall
-      then markEpAnnL an0 lidl AnnDot
+      then markEpAnnL' an0 lidl AnnDot
       else return an0
     mcxt' <- mapM markAnnotated mcxt
     an2 <- if (isJust mcxt)
-      then markEpAnnL an1 lidl AnnDarrow
+      then markEpAnnL' an1 lidl AnnDarrow
       else return an1
 
     (con', args') <- exact_details args
@@ -4473,7 +4373,7 @@ instance ExactPrint (ConDecl GhcPs) where
 
     mcxt' <- mapM markAnnotated mcxt
     an2 <- if (isJust mcxt)
-      then markEpAnnL an1 lidl AnnDarrow
+      then markEpAnnL' an1 lidl AnnDarrow
       else return an1
     args' <-
       case args of
@@ -4517,15 +4417,13 @@ instance ExactPrintTVFlag flag => ExactPrint (HsOuterTyVarBndrs flag GhcPs) wher
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (ConDeclField GhcPs) where
-  getAnnotationEntry f@(ConDeclField{}) = fromAnn (cd_fld_ext f)
-
-  setAnnotationAnchor x anc ts cs = x { cd_fld_ext = setAnchorEpa (cd_fld_ext x) anc ts cs}
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (ConDeclField an names ftype mdoc) = do
     names' <- markAnnotated names
-    an0 <- markEpAnnL an lidl AnnDcolon
+    an0 <- markEpAnnL' an lidl AnnDcolon
     ftype' <- markAnnotated ftype
-    -- mdoc' <- mapM markAnnotated mdoc
     return (ConDeclField an0 names' ftype' mdoc)
 
 -- ---------------------------------------------------------------------
@@ -4665,23 +4563,8 @@ instance ExactPrint (LocatedL (BF.BooleanFormula (LocatedN RdrName))) where
 -- =====================================================================
 
 instance ExactPrint (IE GhcPs) where
-  getAnnotationEntry (IEVar _ _)            = NoEntryVal
-  getAnnotationEntry (IEThingAbs (_, an) _)      = fromAnn an
-  getAnnotationEntry (IEThingAll (_, an) _)      = fromAnn an
-  getAnnotationEntry (IEThingWith (_, an) _ _ _) = fromAnn an
-  getAnnotationEntry (IEModuleContents (_, an) _)= fromAnn an
-  getAnnotationEntry (IEGroup _ _ _)        = NoEntryVal
-  getAnnotationEntry (IEDoc _ _)            = NoEntryVal
-  getAnnotationEntry (IEDocNamed _ _)       = NoEntryVal
-
-  setAnnotationAnchor a@(IEVar _ _)                      _ _ _s = a
-  setAnnotationAnchor (IEThingAbs (depr, an) a)       anc ts cs = (IEThingAbs (depr, setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (IEThingAll (depr, an) a)       anc ts cs = (IEThingAll (depr, setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (IEThingWith (depr, an) a b c)  anc ts cs = (IEThingWith (depr, setAnchorEpa an anc ts cs) a b c)
-  setAnnotationAnchor (IEModuleContents (depr, an) a) anc ts cs = (IEModuleContents (depr, setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor a@(IEGroup _ _ _)         _ _ _s = a
-  setAnnotationAnchor a@(IEDoc _ _)             _ _ _s = a
-  setAnnotationAnchor a@(IEDocNamed _ _)        _ _ _s = a
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (IEVar depr ln) = do
     depr' <- markAnnotated depr
@@ -4694,15 +4577,15 @@ instance ExactPrint (IE GhcPs) where
   exact (IEThingAll (depr, an) thing) = do
     depr' <- markAnnotated depr
     thing' <- markAnnotated thing
-    an0 <- markEpAnnL an  lidl AnnOpenP
-    an1 <- markEpAnnL an0 lidl AnnDotdot
-    an2 <- markEpAnnL an1 lidl AnnCloseP
+    an0 <- markEpAnnL' an  lidl AnnOpenP
+    an1 <- markEpAnnL' an0 lidl AnnDotdot
+    an2 <- markEpAnnL' an1 lidl AnnCloseP
     return (IEThingAll (depr', an2) thing')
 
   exact (IEThingWith (depr, an) thing wc withs) = do
     depr' <- markAnnotated depr
     thing' <- markAnnotated thing
-    an0 <- markEpAnnL an lidl AnnOpenP
+    an0 <- markEpAnnL' an lidl AnnOpenP
     (an1, wc', withs') <-
       case wc of
         NoIEWildcard -> do
@@ -4711,16 +4594,16 @@ instance ExactPrint (IE GhcPs) where
         IEWildcard pos -> do
           let (bs, as) = splitAt pos withs
           bs' <- markAnnotated bs
-          an1 <- markEpAnnL an0 lidl AnnDotdot
-          an2 <- markEpAnnL an1 lidl AnnComma
+          an1 <- markEpAnnL' an0 lidl AnnDotdot
+          an2 <- markEpAnnL' an1 lidl AnnComma
           as' <- markAnnotated as
           return (an2, wc, bs'++as')
-    an2 <- markEpAnnL an1 lidl AnnCloseP
+    an2 <- markEpAnnL' an1 lidl AnnCloseP
     return (IEThingWith (depr', an2) thing' wc' withs')
 
   exact (IEModuleContents (depr, an) m) = do
     depr' <- markAnnotated depr
-    an0 <- markEpAnnL an lidl AnnModule
+    an0 <- markEpAnnL' an lidl AnnModule
     m' <- markAnnotated m
     return (IEModuleContents (depr', an0) m')
 
@@ -4754,41 +4637,8 @@ instance ExactPrint (IEWrappedName GhcPs) where
 -- ---------------------------------------------------------------------
 
 instance ExactPrint (Pat GhcPs) where
-  getAnnotationEntry (WildPat _)              = NoEntryVal
-  getAnnotationEntry (VarPat _ _)             = NoEntryVal
-  getAnnotationEntry (LazyPat an _)           = fromAnn an
-  getAnnotationEntry (AsPat _ _ _)            = NoEntryVal
-  getAnnotationEntry (ParPat _ _)             = NoEntryVal
-  getAnnotationEntry (BangPat an _)           = fromAnn an
-  getAnnotationEntry (ListPat an _)           = fromAnn an
-  getAnnotationEntry (TuplePat an _ _)        = fromAnn an
-  getAnnotationEntry (SumPat an _ _ _)        = fromAnn an
-  getAnnotationEntry (ConPat an _ _)          = fromAnn an
-  getAnnotationEntry (ViewPat an _ _)         = fromAnn an
-  getAnnotationEntry (SplicePat _ _)          = NoEntryVal
-  getAnnotationEntry (LitPat _ _)             = NoEntryVal
-  getAnnotationEntry (NPat an _ _ _)          = fromAnn an
-  getAnnotationEntry (NPlusKPat an _ _ _ _ _) = fromAnn an
-  getAnnotationEntry (SigPat an _ _)          = fromAnn an
-  getAnnotationEntry (EmbTyPat _ _)           = NoEntryVal
-
-  setAnnotationAnchor a@(WildPat _)                _ _ _s = a
-  setAnnotationAnchor a@(VarPat _ _)               _ _ _s = a
-  setAnnotationAnchor (LazyPat an a)            anc ts cs = (LazyPat (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor a@(AsPat _ _ _)              _ _ _s = a
-  setAnnotationAnchor a@(ParPat _ _)               _ _ _s = a
-  setAnnotationAnchor (BangPat an a)            anc ts cs = (BangPat (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (ListPat an a)            anc ts cs = (ListPat (setAnchorEpa an anc ts cs) a)
-  setAnnotationAnchor (TuplePat an a b)         anc ts cs = (TuplePat (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (SumPat an a b c)         anc ts cs = (SumPat (setAnchorEpa an anc ts cs) a b c)
-  setAnnotationAnchor (ConPat an a b)           anc ts cs = (ConPat (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor (ViewPat an a b)          anc ts cs = (ViewPat (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor a@(SplicePat _ _)            _ _ _s = a
-  setAnnotationAnchor a@(LitPat _ _)               _ _ _s = a
-  setAnnotationAnchor (NPat an a b c)           anc ts cs = (NPat (setAnchorEpa an anc ts cs) a b c)
-  setAnnotationAnchor (NPlusKPat an a b c d e)  anc ts cs = (NPlusKPat (setAnchorEpa an anc ts cs) a b c d e)
-  setAnnotationAnchor (SigPat an a b)           anc ts cs = (SigPat (setAnchorEpa an anc ts cs) a b)
-  setAnnotationAnchor a@(EmbTyPat _ _)             _ _ _s = a
+  getAnnotationEntry _ = NoEntryVal
+  setAnnotationAnchor a _ _ _ = a
 
   exact (WildPat w) = do
     anchor' <- getAnchorU
@@ -4804,7 +4654,7 @@ instance ExactPrint (Pat GhcPs) where
       else return n
     return (VarPat x n')
   exact (LazyPat an pat) = do
-    an0 <- markEpAnnL an lidl AnnTilde
+    an0 <- markEpAnnL' an lidl AnnTilde
     pat' <- markAnnotated pat
     return (LazyPat an0 pat')
   exact (AsPat at n pat) = do
@@ -4819,30 +4669,30 @@ instance ExactPrint (Pat GhcPs) where
     return (ParPat (lpar', rpar') pat')
 
   exact (BangPat an pat) = do
-    an0 <- markEpAnnL an lidl AnnBang
+    an0 <- markEpAnnL' an lidl AnnBang
     pat' <- markAnnotated pat
     return (BangPat an0 pat')
 
   exact (ListPat an pats) = do
-    (an', pats') <- markAnnList an (markAnnotated pats)
+    (an', pats') <- markAnnList' an (markAnnotated pats)
     return (ListPat an' pats')
 
   exact (TuplePat an pats boxity) = do
     an0 <- case boxity of
-             Boxed   -> markEpAnnL an lidl AnnOpenP
-             Unboxed -> markEpAnnL an lidl AnnOpenPH
+             Boxed   -> markEpAnnL' an lidl AnnOpenP
+             Unboxed -> markEpAnnL' an lidl AnnOpenPH
     pats' <- markAnnotated pats
     an1 <- case boxity of
-             Boxed   -> markEpAnnL an0 lidl AnnCloseP
-             Unboxed -> markEpAnnL an0 lidl AnnClosePH
+             Boxed   -> markEpAnnL' an0 lidl AnnCloseP
+             Unboxed -> markEpAnnL' an0 lidl AnnClosePH
     return (TuplePat an1 pats' boxity)
 
   exact (SumPat an pat alt arity) = do
-    an0 <- markEpAnnL an lsumPatParens AnnOpenPH
+    an0 <- markEpAnnL' an lsumPatParens AnnOpenPH
     an1 <- markAnnKwAllL an0 lsumPatVbarsBefore AnnVbar
     pat' <- markAnnotated pat
     an2 <- markAnnKwAllL an1 lsumPatVbarsAfter AnnVbar
-    an3 <- markEpAnnL an2 lsumPatParens AnnClosePH
+    an3 <- markEpAnnL' an2 lsumPatParens AnnClosePH
     return (SumPat an3 pat' alt arity)
 
   exact (ConPat an con details) = do
@@ -4850,7 +4700,7 @@ instance ExactPrint (Pat GhcPs) where
     return (ConPat an' con' details')
   exact (ViewPat an expr pat) = do
     expr' <- markAnnotated expr
-    an0 <- markEpAnnL an lidl AnnRarrow
+    an0 <- markEpAnnL' an lidl AnnRarrow
     pat' <- markAnnotated pat
     return (ViewPat an0 expr' pat')
   exact (SplicePat x splice) = do
@@ -4859,7 +4709,7 @@ instance ExactPrint (Pat GhcPs) where
   exact p@(LitPat _ lit) = printStringAdvance (hsLit2String lit) >> return p
   exact (NPat an ol mn z) = do
     an0 <- if (isJust mn)
-      then markEpAnnL an lidl AnnMinus
+      then markEpAnnL' an lidl AnnMinus
       else return an
     ol' <- markAnnotated ol
     return (NPat an0 ol' mn z)
@@ -4872,7 +4722,7 @@ instance ExactPrint (Pat GhcPs) where
 
   exact (SigPat an pat sig) = do
     pat' <- markAnnotated pat
-    an0 <- markEpAnnL an lidl AnnDcolon
+    an0 <- markEpAnnL' an lidl AnnDcolon
     sig' <- markAnnotated sig
     return (SigPat an0 pat' sig')
 
@@ -4951,8 +4801,8 @@ sourceTextToString (SourceText txt) _ = unpackFS txt
 -- ---------------------------------------------------------------------
 
 exactUserCon :: (Monad m, Monoid w, ExactPrint con)
-  => EpAnn [AddEpAnn] -> con -> HsConPatDetails GhcPs
-  -> EP w m (EpAnn [AddEpAnn], con, HsConPatDetails GhcPs)
+  => [AddEpAnn] -> con -> HsConPatDetails GhcPs
+  -> EP w m ([AddEpAnn], con, HsConPatDetails GhcPs)
 exactUserCon an c (InfixCon p1 p2) = do
   p1' <- markAnnotated p1
   c' <- markAnnotated c
@@ -4960,9 +4810,9 @@ exactUserCon an c (InfixCon p1 p2) = do
   return (an, c', InfixCon p1' p2')
 exactUserCon an c details = do
   c' <- markAnnotated c
-  an0 <- markEpAnnL an lidl AnnOpenC
+  an0 <- markEpAnnL' an lidl AnnOpenC
   details' <- exactConArgs details
-  an1 <- markEpAnnL an0 lidl AnnCloseC
+  an1 <- markEpAnnL' an0 lidl AnnCloseC
   return (an1, c', details')
 
 instance ExactPrint (HsConPatTyArg GhcPs) where
diff --git a/utils/check-exact/Transform.hs b/utils/check-exact/Transform.hs
index 2474aa8136c0..e5ce02c43183 100644
--- a/utils/check-exact/Transform.hs
+++ b/utils/check-exact/Transform.hs
@@ -210,8 +210,8 @@ captureLineSpacing ds = map (\(_,_,x) -> x) $ go (map to ds)
 -- ---------------------------------------------------------------------
 
 captureTypeSigSpacing :: LHsDecl GhcPs -> LHsDecl GhcPs
-captureTypeSigSpacing (L l (SigD x (TypeSig (EpAnn anc (AnnSig dc rs') cs) ns (HsWC xw ty))))
-  = (L l (SigD x (TypeSig (EpAnn anc (AnnSig dc' rs') cs) ns (HsWC xw ty'))))
+captureTypeSigSpacing (L l (SigD x (TypeSig (AnnSig dc rs') ns (HsWC xw ty))))
+  = (L l (SigD x (TypeSig (AnnSig dc' rs') ns (HsWC xw ty'))))
   where
     -- we want DPs for the distance from the end of the ns to the
     -- AnnDColon, and to the start of the ty
diff --git a/utils/haddock b/utils/haddock
index e16028bdd538..65453a581857 160000
--- a/utils/haddock
+++ b/utils/haddock
@@ -1 +1 @@
-Subproject commit e16028bdd538ccff31d732dc70855addd8aa2bfa
+Subproject commit 65453a58185726aab95289c2da0d9fb27b7ce0af
-- 
GitLab