tcExpandTyCon_maybe, coreExpandTyCon_maybe
        :: TyCon
        -> [tyco]                 -- ^ Arguments to 'TyCon'
        -> Maybe ([(TyVar,tyco)],
                  Type,
                  [tyco])         -- ^ Returns a 'TyVar' substitution, the body
                                  -- type of the synonym (not yet substituted)
                                  -- and any arguments remaining from the
                                  -- application

-- ^ Used to create the view the /typechecker/ has on 'TyCon's.
-- We expand (closed) synonyms only, cf. 'coreExpandTyCon_maybe'
tcExpandTyCon_maybe (SynonymTyCon { tyConTyVars = tvs
                                  , synTcRhs    = rhs }) tys
   = expand tvs rhs tys
tcExpandTyCon_maybe, coreExpandTyCon_maybe
        :: TyCon
        -> [tyco]                 -- ^ Arguments to 'TyCon'
        -> Maybe ([(TyVar,tyco)],
                  Type,
                  [tyco])
tcExpandTyCon_maybe (SynonymTyCon { tyConTyVars = tvs
                                  , synTcRhs    = rhs }) tys
   = expand tvs rhs tys
tcExpandTyCon_maybe (SynonymTyCon { tyConTyVars = tvs
                                  , synTcRhs    = rhs }) tys
   = expand tvs rhs tys