content: -- | This module should provide all that is required to write further
  -- refactorings.
  -- NOTE: it is currently unstable, and may change without notice on minor version number bumps
  module Language.Haskell.Refact.API
   (
   -- * from `Language.Haskell.Refact.Utils.Monad`
           ParseResult
         , VerboseLevel(..)
         , RefactSettings(..)
         , TargetModule
         , RefactFlags(..)
         , StateStorage(..)
  
         -- ** The GHC Monad
         , RefactGhc
         , runRefactGhc
         , getRefacSettings
         , defaultSettings
         , logSettings
  
         , logm
         , logDataWithAnns
         , logExactprint
         , logParsedSource
   -- * from `Language.Haskell.Refact.Utils.Utils`
  
         -- ** Managing the GHC / project environment
         , parseSourceFileGhc
         , getTargetGhc
  
         -- ** The bits that do the work
         , runRefacSession
         , runMultRefacSession
         , applyRefac
         , applyRefac'
         , refactDone
         , ApplyRefacResult
         , RefacSource(..)
  
         , nameSybQuery
         , fileNameFromModSummary
         , getModuleName
         , clientModsAndFiles
         , serverModsAndFiles
         -- , lookupAnns
  
         , stripCallStack
  
  
   -- * from `Language.Haskell.Refact.Utils.MonadFunctions`
  
         -- ** Conveniences for state access
  
         , getTypecheckedModule
         , RefacResult(..)
         , getRefactStreamModified
         , setRefactStreamModified
         , getRefactInscopes
         , getRefactRenamed
         , putRefactRenamed
         , getRefactParsed
         , putRefactParsed
         , putParsedModule
         , clearParsedModule
         , getRefactFileName
         , getRefactTargetModule
         , getRefactNameMap
  
         , getRefactModule
         , getRefactModuleName
  
         -- * New ghc-exactprint interfacing
         -- , refactRunTransform
         , liftT
  
         -- ** State flags for managing generic traversals
         , getRefactDone
         , setRefactDone
         , clearRefactDone
  
         , setStateStorage
         , getStateStorage
         , fetchAnnsFinal
  
         -- * Parsing source
         , parseDeclWithAnns
  
         -- , logm
  
  
   -- * from `Language.Haskell.Refact.Utils.LocUtils`
  
                       , SimpPos
  
                       , getGhcLoc
                       , getGhcLocEnd
                       , getLocatedStart
                       , getLocatedEnd
                       , getStartEndLoc
                       , startEndLocGhc
                       , emptyList
                       , nonEmptyList
  
  
   -- * from `Language.Haskell.Refact.Utils.TypeSyn`
      , InScopes
      , ghead
      , glast
      , gtail
      , gfromJust
  
   -- * from `Language.Haskell.Refact.Utils.TypeUtils`
  
   -- ** Program Analysis
      -- ** Imports and exports
     , inScopeInfo, isInScopeAndUnqualified, isInScopeAndUnqualifiedGhc, inScopeNames
     , isExported, isExplicitlyExported, modIsExported
     , equivalentNameInNewMod
     , hsQualifier
  
      -- *** Variable analysis
      , isFieldName
      , isClassName
      , isInstanceName
      , hsTypeVbls
      , hsNamessRdr
      , isDeclaredInRdr
      , FreeNames(..),DeclaredNames(..)
      , hsFreeAndDeclaredNameStrings
      , hsFreeAndDeclaredRdr
      , hsFreeAndDeclaredPNs
      , getDeclaredVarsRdr
  
      , hsVisibleNamesRdr
      , hsFDsFromInsideRdr, hsFDNamesFromInsideRdr, hsFDNamesFromInsideRdrPure
      , hsVisibleDsRdr
      , rdrName2Name, rdrName2NamePure
      , eqRdrNamePure
      , sameNameSpace
  
      -- *** Property checking
      ,isVarId,isConId,isOperator,isTopLevelPN,isLocalPN,isNonLibraryName -- ,isTopLevelPNT
      ,isQualifiedPN, isFunOrPatName,isTypeSig
      ,isFunBindP,isFunBindR,isPatBindP,isPatBindR,isSimplePatBind,isSimplePatDecl
      ,isComplexPatBind,isComplexPatDecl,isFunOrPatBindP,isFunOrPatBindR
      ,usedWithoutQualR
      ,findNameInRdr
      ,findNamesRdr, findEntity, findEntity'
      ,sameOccurrence
      , findIdForName
      , getTypeForName
      , definesTypeSigRdr,definesSigDRdr
      , sameBindRdr
      , UsedByRhs(..)
  
      -- *** Modules and files
      , isMainModule
      , getModule
  
      -- *** Locations
      ,defineLoc, useLoc, locToExp
      ,findLRdrName
      ,locToNameRdr
      ,locToNameRdrPure
      ,locToRdrName
      ,getName
  
   -- * Program transformation
      -- *** Adding
      ,addDecl, addItemsToImport, addItemsToExport, addHiding
      ,addParamsToDecls, addParamsToSigs, addActualParamsToRhs, addImportDecl, duplicateDecl
  
      -- *** Removing
      ,rmDecl, rmTypeSig, rmTypeSigs
  
      -- *** Updating
      -- ,Update(update)
      ,rmQualifier,qualifyToplevelName,renamePN, HowToQual(..), autoRenameLocalVar
  
      -- *** Identifiers, expressions, patterns and declarations
      , expToNameRdr
      , patToNameRdr
      , nameToString
      , pNtoPat
      , definedPNsRdr,definedNamesRdr
      , definingDeclsRdrNames, definingDeclsRdrNames', definingSigsRdrNames
      , definingTyClDeclsNames
  
      -- *** Others
      , divideDecls
      , mkRdrName,mkQualifiedRdrName,mkNewGhcName,mkNewName,mkNewToplevelName
      , registerRdrName
  
      -- The following functions are not in the the API yet.
      , causeNameClashInExports
  
      , declsSybTransform
  
      -- ** Typed AST traversals (added by CMB)
      -- ** Miscellous
  
   -- ** from `Language.Haskell.Refact.Utils.GhcUtils`
      -- ** SYB versions
      , everywhereMStaged'
      , everywhereStaged
      , everywhereStaged'
      , listifyStaged
      , everywhereButM
  
      -- ** Scrap Your Zipper versions
      , zeverywhereStaged
      , zopenStaged
      , zsomewhereStaged
      , transZ
      , transZM
      , zopenStaged'
      , ztransformStagedM
      -- *** SYZ utilities
      , upUntil
      , findAbove
  
   -- * from `Language.Haskell.Refact.Utils.GhcVersionSpecific`
    , showGhc
    , showGhcQual
    , prettyprint
    , prettyprint2
    , ppType
    , setGhcContext
  
   -- * from `Language.Haskell.Refact.Utils.TokenUtils`
    , NameMap
  
   -- * from `Language.Haskell.Refact.Utils.ExactPrint'`
    , replace
    , setRefactAnns
    , mergeRefactAnns
    , setAnnKeywordDP
    , copyAnn
    , clearPriorComments
    , balanceAllComments
  
    , exactPrintParsed
    , exactPrintExpr
    , zeroDP
    , setDP
    , handleParseResult
    , removeAnns
    , synthesizeAnns
    , addNewKeyword
    , addNewKeywords
  
    , addEmptyAnn
    , addAnnVal
    , addAnn
  
     -- from Language.Haskell.Refact.Utils.Synonyms
   , UnlocParsedHsBind
   , ParsedGRHSs
   , ParsedMatchGroup
   , ParsedLMatch
   , ParsedExpr
   , ParsedLStmt
   , ParsedLExpr
   , ParsedBind
  
   -- from Language.Haskell.Refact.Utils.Transform
    , addSimpleImportDecl
    , wrapInLambda
    , wrapInPars
    , removePars
    , addNewLines
    , wrapInParsWithDPs
    , locate
  -- from Language.Haskell.Refact.Utils.Query
    , getVarAndRHS
    , getHsBind
    , isHsVar
   ) where
  
  import Language.Haskell.Refact.Utils.ExactPrint
  import Language.Haskell.Refact.Utils.GhcUtils
  import Language.Haskell.Refact.Utils.GhcVersionSpecific
  import Language.Haskell.Refact.Utils.LocUtils
  import Language.Haskell.Refact.Utils.Monad
  import Language.Haskell.Refact.Utils.MonadFunctions
  import Language.Haskell.Refact.Utils.TypeSyn
  import Language.Haskell.Refact.Utils.TypeUtils
  import Language.Haskell.Refact.Utils.Types
  import Language.Haskell.Refact.Utils.Utils
  import Language.Haskell.Refact.Utils.Variables
  import Language.Haskell.Refact.Utils.Transform
  import Language.Haskell.GHC.ExactPrint.Utils
  import Language.Haskell.Refact.Utils.Synonyms
  import Language.Haskell.Refact.Utils.Query
  