public int NativeCallback(IntPtr pad, IntPtr parent, IntPtr peer)
 {
     try {
         Gst.PadLinkReturn __ret = managed(GLib.Object.GetObject(pad) as Gst.Pad, GLib.Object.GetObject(parent) as Gst.Object, GLib.Object.GetObject(peer) as Gst.Pad);
         if (release_on_call)
         {
             gch.Free();
         }
         return((int)__ret);
     } catch (Exception e) {
         GLib.ExceptionManager.RaiseUnhandledException(e, true);
         // NOTREACHED: Above call does not return.
         throw e;
     }
 }
 Gst.PadLinkReturn InvokeNative(Gst.Pad pad, Gst.Object parent, Gst.Pad peer)
 {
     Gst.PadLinkReturn __result = (Gst.PadLinkReturn)native_cb(pad == null ? IntPtr.Zero : pad.Handle, parent == null ? IntPtr.Zero : parent.Handle, peer == null ? IntPtr.Zero : peer.Handle);
     return(__result);
 }