public static List<string> GetItemList(string caption, string label, List<string> list, List<string> select, bool multiple, ref bool ok, QWidget parent)
{
StackItem[] stack = new StackItem[8];
#if DEBUG
stack[1].s_class = (IntPtr) DebugGCHandle.Alloc(caption);
#else
stack[1].s_class = (IntPtr) GCHandle.Alloc(caption);
#endif
#if DEBUG
stack[2].s_class = (IntPtr) DebugGCHandle.Alloc(label);
#else
stack[2].s_class = (IntPtr) GCHandle.Alloc(label);
#endif
#if DEBUG
stack[3].s_class = (IntPtr) DebugGCHandle.Alloc(list);
#else
stack[3].s_class = (IntPtr) GCHandle.Alloc(list);
#endif
#if DEBUG
stack[4].s_class = (IntPtr) DebugGCHandle.Alloc(select);
#else
stack[4].s_class = (IntPtr) GCHandle.Alloc(select);
#endif
stack[5].s_bool = multiple;
stack[6].s_bool = ok;
#if DEBUG
stack[7].s_class = (IntPtr) DebugGCHandle.Alloc(parent);
#else
stack[7].s_class = (IntPtr) GCHandle.Alloc(parent);
#endif
staticInterceptor.Invoke("getItemList$$??$$#", "getItemList(const QString&, const QString&, const QStringList&, const QStringList&, bool, bool*, QWidget*)", stack);
#if DEBUG
DebugGCHandle.Free((GCHandle) stack[1].s_class);
#else
((GCHandle) stack[1].s_class).Free();
#endif
#if DEBUG
DebugGCHandle.Free((GCHandle) stack[2].s_class);
#else
((GCHandle) stack[2].s_class).Free();
#endif
#if DEBUG
DebugGCHandle.Free((GCHandle) stack[3].s_class);
#else
((GCHandle) stack[3].s_class).Free();
#endif
#if DEBUG
DebugGCHandle.Free((GCHandle) stack[4].s_class);
#else
((GCHandle) stack[4].s_class).Free();
#endif
ok = stack[6].s_bool;
#if DEBUG
DebugGCHandle.Free((GCHandle) stack[7].s_class);
#else
((GCHandle) stack[7].s_class).Free();
#endif
object returnValue = ((GCHandle) stack[0].s_class).Target;
#if DEBUG
DebugGCHandle.Free((GCHandle) stack[0].s_class);
#else
((GCHandle) stack[0].s_class).Free();
#endif
return (List<string>) returnValue;
}