static Type PeelType (Type t) { if (t.HasElementType) return PeelType (t.GetElementType ()); if (t.IsGenericType && !t.IsGenericParameter) return t.GetGenericTypeDefinition (); return t; }