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; }