[DllImport ("gstreamersharpglue-0.10")] private extern static uint gstsharp_gst_bin_get_children_offset(); static uint children_offset = gstsharp_gst_bin_get_children_offset(); public Element [] Children { get { GLib.List list; unsafe { IntPtr* raw_ptr = (IntPtr*)(((byte*)Handle) + children_offset); list = new GLib.List((*raw_ptr)); } Element [] result = new Element[list.Count]; for(int i = 0; i < list.Count; i++) { result[i] = list[i] as Element; } return result; } } public bool AddMany(params Element[] elements) { if(elements == null) { return false; } foreach(Element element in elements) { if(element == null || !Add(element)) { return false; } } return true; }