+ subst_dom= varEnvKeys$ getTvSubstEnv subst
+ subst_ran= varEnvElts$ getTvSubstEnv subst
+ new_tvs = [ tv | t <- subst_ran, let Just tv = getTyVar_maybe t]
+ ic_tyvars'= (`delVarSetListByKey` subst_dom)
+ . (`extendVarSetList` new_tvs)
+ $ ic_tyvars ictxt
+ ictxt' = ictxt { ic_type_env = type_env'
+ , ic_tyvars = ic_tyvars' }