import Type ( mkArrowKind, boxedTypeKind )
-import Class ( Class )
-import Var ( TyVar, tyVarKind )
import FiniteMap
import Bag
-import VarSet
import Digraph ( stronglyConnComp, SCC(..) )
import Name ( Name, NamedThing(..), getSrcLoc, isTvOcc, nameOccName )
import Outputable
unitUniqSet, unionUniqSets,
unionManyUniqSets, uniqSetToList )
import ErrUtils ( Message )
-import SrcLoc ( SrcLoc )
import TyCon ( TyCon, ArgVrcs )
import Variance ( calcTyConArgVrcs )
import Unique ( Unique, Uniquable(..) )