diff --git a/vapi/gstreamer-1.0.vapi b/vapi/gstreamer-1.0.vapi
index 54d4aa5..a276744 100644
--- a/vapi/gstreamer-1.0.vapi
+++ b/vapi/gstreamer-1.0.vapi
@@ -1070,7 +1070,8 @@ namespace Gst {
 		public uint size;
 		public GLib.Type type;
 		public Gst.Iterator filter (GLib.CompareFunc func, GLib.Value user_data);
-		public bool find_custom ([CCode (delegate_target_pos = 2.1)] GLib.CompareFunc func, out GLib.Value elem);
+		[CCode (simple_generics = true)]
+		public bool find_custom<T> (Gst.SearchFunc<GLib.Value,T> func, out GLib.Value elem, T user_data);
 		public Gst.IteratorResult fold ([CCode (delegate_target_pos = 2.1)] Gst.IteratorFoldFunction func, GLib.Value ret);
 		public Gst.IteratorResult @foreach (Gst.IteratorForeachFunction func);
 		public void free ();
@@ -2880,6 +2881,8 @@ namespace Gst {
 	public delegate bool PluginInitFullFunc (Gst.Plugin plugin);
 	[CCode (cheader_filename = "gst/gst.h", has_target = false)]
 	public delegate bool PluginInitFunc (Gst.Plugin plugin);
+	[CCode (cheader_filename = "gst/gst.h", cname = "GCompareFunc", has_target = false)]
+	public delegate int SearchFunc<A,B> (A a, B b);
 	[CCode (cheader_filename = "gst/gst.h", instance_pos = 2.9)]
 	public delegate bool StructureForeachFunc (GLib.Quark field_id, GLib.Value value);
 	[CCode (cheader_filename = "gst/gst.h", instance_pos = 2.9)]
diff --git a/vapi/metadata/Gst-1.0-custom.vala b/vapi/metadata/Gst-1.0-custom.vala
index dc26b9b..c952e0a 100644
--- a/vapi/metadata/Gst-1.0-custom.vala
+++ b/vapi/metadata/Gst-1.0-custom.vala
@@ -34,6 +34,8 @@ namespace Gst {
 	[CCode (cheader_filename = "gst/gst.h", copy_function = "gst_iterator_copy", free_function = "gst_iterator_free", type_id = "gst_iterator_get_type ()")]
 	[Compact]
 	public class Iterator {
+		[CCode (simple_generics = true)]
+		public bool find_custom<T> (Gst.SearchFunc<GLib.Value,T> func, out GLib.Value elem, T user_data);
 	}
 
 	[CCode (cheader_filename = "gst/gst.h", ref_function = "gst_mini_object_ref", unref_function = "gst_mini_object_unref")]
@@ -109,4 +111,7 @@ namespace Gst {
 		[CCode (cname = "gst_flow_get_name")]
 		public unowned string get_name ();
 	}
+
+	[CCode (cname = "GCompareFunc", has_target = false)]
+	public delegate int SearchFunc<A,B> (A a, B b);
 }
diff --git a/vapi/metadata/Gst-1.0.metadata b/vapi/metadata/Gst-1.0.metadata
index cdf212d..5fd7a64 100644
--- a/vapi/metadata/Gst-1.0.metadata
+++ b/vapi/metadata/Gst-1.0.metadata
@@ -14,6 +14,8 @@ Element
   .sinkpads type="GLib.List<unowned Gst.Pad>"
   .srcpads type="GLib.List<unowned Gst.Pad>"
   .state_cond unowned=false
+Iterator
+  .find_custom skip
 MapInfo
   .data array array_length_field="size"
 TagList
