Google Maps Android API の Xamarin.Android 向け Binding ライブラリを使っていたときの話です。
[ポリゴンに穴を空けたい](https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polygon.html?hl=ja#setHoles(java.util.List extends java.util.List>)) と思って、Polygon.Holes を使おうとしました。
Polygon.Holes.Add の引数は IList<LatLng> です。
おっけ、.NET の System.Collections.Generic.List<LatLng> 使うンゴ。
エラー!
Java.Lang.RuntimeException: Parcel: unable to marshal value System.Collections.Generic.List`1[Android.Gms.Maps.Model.LatLng]
  at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in /Users/builder/data/lanes/4009/0a4ab
あー知ってる知ってる。Java.Lang.Object を継承したクラスでないとダメなやつでしょ?
えーと、IList<T>を実装してて Java.Lang.Object から派生してる ”Java の” リストはどれだ?
- 
ArrayList: Generic じゃない
- 
LinkedList<T>:IList<T>を実装してない
つか、Java の ArrayList<T> はどこだ?
うーんうーんと探し回っていたら、見つけました。
Android.Runtime.JavaList<T>!!
Java の ArrayList<T> は、Xamarin.Android では、 JavaList<T> にマップされています、気をつけて!
ちなみに Xamarin.Forms.GoogleMapsは、もうすぐポリゴンの「穴」に対応します。