+#include "HsVersions.h"
+
+import Class ( FunDep )
+import TcType ( Type, Kind, ThetaType, SourceType(..),
+ tcSplitSigmaTy, liftedTypeKind, eqKind, tcEqType
+ )
+import TypeRep ( Type(..), TyNote(..) ) -- toHsType sees the representation
+import TyCon ( isTupleTyCon, tupleTyConBoxity, tyConArity, isNewTyCon, getSynTyConDefn )
+import RdrName ( RdrName, mkUnqual )
+import Name ( Name, getName )
+import OccName ( NameSpace, tvName )
+import Var ( TyVar, tyVarKind )
+import Subst ( substTyWith )
+import PprType ( {- instance Outputable Kind -}, pprParendKind, pprKind )
+import BasicTypes ( Boxity(..), Arity, IPName, tupleParens )
+import PrelNames ( mkTupConRdrName, listTyConKey, parrTyConKey,
+ usOnceTyConKey, usManyTyConKey, hasKey,
+ usOnceTyConName, usManyTyConName )
+import FiniteMap
+import Util ( eqListBy, lengthIs )
+import Outputable
+\end{code}
+
+
+%************************************************************************
+%* *
+\subsection{Annotating the syntax}
+%* *
+%************************************************************************