public virtual Type getRawType()
{
if (!isGenericParameter()) return this;
if (this == Sys.LType) return Sys.ListType;
if (this == Sys.MType) return Sys.MapType;
if (this is ListType) return Sys.ListType;
if (this is MapType) return Sys.MapType;
if (this is FuncType) return Sys.FuncType;
return Sys.ObjType;
}