One way to prevent https://bugzilla.xamarin.com/show_bug.cgi?id=15574 is to add the problematic array type to the `known_types`.
On the other hand, this might not be the intended use of `known_types`. In that case, perhaps a better fix would be to guard against recursion in the `foreach` loop:
if (t != type)
RegisterTypeAsKnown (t);
return;
Type elementType = type;
- if (type.HasElementType)
+ if (type.HasElementType) {
+ known_types.Add (type);
elementType = type.GetElementType ();
+ }
known_types.Add (elementType);