public static int CreateKMessageBox(KDialog dialog, QMessageBox.Icon icon, string text, List<string> strlist, string ask, ref bool checkboxReturn, uint options, string details)
{
StackItem[] stack = new StackItem[9];
#if DEBUG
stack[1].s_class = (IntPtr) DebugGCHandle.Alloc(dialog);
#else
stack[1].s_class = (IntPtr) GCHandle.Alloc(dialog);
#endif
stack[2].s_int = (int) icon;
#if DEBUG
stack[3].s_class = (IntPtr) DebugGCHandle.Alloc(text);
#else
stack[3].s_class = (IntPtr) GCHandle.Alloc(text);
#endif
#if DEBUG
stack[4].s_class = (IntPtr) DebugGCHandle.Alloc(strlist);
#else
stack[4].s_class = (IntPtr) GCHandle.Alloc(strlist);
#endif
#if DEBUG
stack[5].s_class = (IntPtr) DebugGCHandle.Alloc(ask);
#else
stack[5].s_class = (IntPtr) GCHandle.Alloc(ask);
#endif
stack[6].s_bool = checkboxReturn;
stack[7].s_uint = options;
#if DEBUG
stack[8].s_class = (IntPtr) DebugGCHandle.Alloc(details);
#else
stack[8].s_class = (IntPtr) GCHandle.Alloc(details);
#endif
staticInterceptor.Invoke("createKMessageBox#$$?$$$$", "createKMessageBox(KDialog*, QMessageBox::Icon, const QString&, const QStringList&, const QString&, bool*, KMessageBox::Options, const QString&)", stack);
#if DEBUG
DebugGCHandle.Free((GCHandle) stack[1].s_class);
#else
((GCHandle) stack[1].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
#if DEBUG
DebugGCHandle.Free((GCHandle) stack[5].s_class);
#else
((GCHandle) stack[5].s_class).Free();
#endif
checkboxReturn = stack[6].s_bool;
#if DEBUG
DebugGCHandle.Free((GCHandle) stack[8].s_class);
#else
((GCHandle) stack[8].s_class).Free();
#endif
return stack[0].s_int;
}