internal void Release () {
uint count = Messaging.uint_objc_msgSend (handle, selRetainCount);
Messaging.void_objc_msgSendSuper (new IntPtr [] {handle, class_ptr}, selRelease);
if (count == 2) {
IntPtr hptr = GetObjCIvar ("__monoObjectGCHandle");
if (hptr != IntPtr.Zero) {
GCHandle h = (GCHandle) hptr;
h.Free ();
SetObjCIvar ("__monoObjectGCHandle", IntPtr.Zero);
} else {
Console.WriteLine ("WARNING: How did this happen: ReleaseImpl");
}
}
}