// // Exception audit: // // Verdict // No need to wrap thrown exceptions in a BCL class // // Rationale // `java.util.Collection.toArray()` is not documented to throw any exceptions. // public void CopyTo(Array array, int array_index) { if (array == null) { throw new ArgumentNullException("array"); } if (array_index < 0) { throw new ArgumentOutOfRangeException("array_index"); } if (array.Length < array_index + Count) { throw new ArgumentException("array"); } if (id_toArray == IntPtr.Zero) { id_toArray = JNIEnv.GetMethodID(collection_class, "toArray", "()[Ljava/lang/Object;"); } IntPtr lrefArray = JNIEnv.CallObjectMethod(Handle, id_toArray); for (int i = 0; i < Count; i++) { array.SetValue( JavaConvert.FromJniHandle( JNIEnv.GetObjectArrayElement(lrefArray, i), JniHandleOwnership.TransferLocalRef, array.GetType().GetElementType()), array_index + i); } JNIEnv.DeleteLocalRef(lrefArray); }