HsDecls

# Toplevel declarations

data HsDecl id
type LHsDecl id

## Class or type declarations

data TyClDecl name
type LTyClDecl name
isClassDecl
isSynDecl
isDataDecl
isTypeDecl
isFamilyDecl
isFamInstDecl
tcdName
tyClDeclNames
tyClDeclTyVars
countTyClDecls

## Instance declarations

data InstDecl name
type LInstDecl name
data NewOrData
data FamilyFlavour
instDeclATs

## Standalone deriving declarations

data DerivDecl name
type LDerivDecl name

## `RULE` declarations

data RuleDecl name
type LRuleDecl name
data RuleBndr name
collectRuleBndrSigTys

## `default` declarations

data DefaultDecl name
type LDefaultDecl name

## Top-level template haskell splice

data SpliceDecl id

## Foreign function interface declarations

data ForeignDecl name
type LForeignDecl name
data ForeignImport
data ForeignExport
data CImportSpec

## Data-constructor declarations

data ConDecl name
type LConDecl name
data ResType name
type HsConDeclDetails name
hsConDeclArgTys
hsConDeclsNames

## Document comments

data DocDecl
type LDocDecl
docDeclDoc

## Deprecations

data WarnDecl name
type LWarnDecl name

## Annotations

data AnnDecl name
type LAnnDecl name
data AnnProvenance name
annProvenanceName_maybe
modifyAnnProvenanceNameM

# Grouping

data HsGroup id
emptyRdrGroup
emptyRnGroup
appendGroups