//
// Copyright (C) 2003-2004, 2010 The University of Melbourne.
// This file may only be copied under the terms of the GNU Library General
// Public License - see the file COPYING.LIB in the Mercury distribution.
//

// mercury_dotnet.cs - This file defines the system runtime types and
// methods that are used when generating code for the .NET backend.

// the following "using" declaration works around a bug in GNU Portable.NET's
// C# compiler
using System.Runtime.InteropServices;

namespace mercury.runtime {

/*---------------------------------------------------------------------------*/

public delegate void MethodPtr1_r0  <A1> (A1 a1);
public delegate R1   MethodPtr1_r1  <A1, R1> (A1 a1);
public delegate R1   MethodPtr1_r2  <A1, R1, R2> (A1 a1, out R2 r2);
public delegate R1   MethodPtr1_r3  <A1, R1, R2, R3> (A1 a1, out R2 r2, out R3 r3);
public delegate R1   MethodPtr1_r4  <A1, R1, R2, R3, R4> (A1 a1, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr1_r5  <A1, R1, R2, R3, R4, R5> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr1_r6  <A1, R1, R2, R3, R4, R5, R6> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr1_r7  <A1, R1, R2, R3, R4, R5, R6, R7> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr1_r8  <A1, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr1_r9  <A1, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr1_r10 <A1, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr1_r11 <A1, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr1_r12 <A1, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr1_r13 <A1, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr1_r14 <A1, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr1_r15 <A1, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr1_r16 <A1, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr2_r0  <A1, A2> (A1 a1, A2 a2);
public delegate R1   MethodPtr2_r1  <A1, A2, R1> (A1 a1, A2 a2);
public delegate R1   MethodPtr2_r2  <A1, A2, R1, R2> (A1 a1, A2 a2, out R2 r2);
public delegate R1   MethodPtr2_r3  <A1, A2, R1, R2, R3> (A1 a1, A2 a2, out R2 r2, out R3 r3);
public delegate R1   MethodPtr2_r4  <A1, A2, R1, R2, R3, R4> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr2_r5  <A1, A2, R1, R2, R3, R4, R5> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr2_r6  <A1, A2, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr2_r7  <A1, A2, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr2_r8  <A1, A2, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr2_r9  <A1, A2, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr2_r10 <A1, A2, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr2_r11 <A1, A2, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr2_r12 <A1, A2, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr2_r13 <A1, A2, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr2_r14 <A1, A2, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr2_r15 <A1, A2, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr2_r16 <A1, A2, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr3_r0  <A1, A2, A3> (A1 a1, A2 a2, A3 a3);
public delegate R1   MethodPtr3_r1  <A1, A2, A3, R1> (A1 a1, A2 a2, A3 a3);
public delegate R1   MethodPtr3_r2  <A1, A2, A3, R1, R2> (A1 a1, A2 a2, A3 a3, out R2 r2);
public delegate R1   MethodPtr3_r3  <A1, A2, A3, R1, R2, R3> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3);
public delegate R1   MethodPtr3_r4  <A1, A2, A3, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr3_r5  <A1, A2, A3, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr3_r6  <A1, A2, A3, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr3_r7  <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr3_r8  <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr3_r9  <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr3_r10 <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr3_r11 <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr3_r12 <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr3_r13 <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr3_r14 <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr3_r15 <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr3_r16 <A1, A2, A3, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr4_r0  <A1, A2, A3, A4> (A1 a1, A2 a2, A3 a3, A4 a4);
public delegate R1   MethodPtr4_r1  <A1, A2, A3, A4, R1> (A1 a1, A2 a2, A3 a3, A4 a4);
public delegate R1   MethodPtr4_r2  <A1, A2, A3, A4, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2);
public delegate R1   MethodPtr4_r3  <A1, A2, A3, A4, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3);
public delegate R1   MethodPtr4_r4  <A1, A2, A3, A4, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr4_r5  <A1, A2, A3, A4, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr4_r6  <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr4_r7  <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr4_r8  <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr4_r9  <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr4_r10 <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr4_r11 <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr4_r12 <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr4_r13 <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr4_r14 <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr4_r15 <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr4_r16 <A1, A2, A3, A4, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr5_r0  <A1, A2, A3, A4, A5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5);
public delegate R1   MethodPtr5_r1  <A1, A2, A3, A4, A5, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5);
public delegate R1   MethodPtr5_r2  <A1, A2, A3, A4, A5, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2);
public delegate R1   MethodPtr5_r3  <A1, A2, A3, A4, A5, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3);
public delegate R1   MethodPtr5_r4  <A1, A2, A3, A4, A5, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr5_r5  <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr5_r6  <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr5_r7  <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr5_r8  <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr5_r9  <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr5_r10 <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr5_r11 <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr5_r12 <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr5_r13 <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr5_r14 <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr5_r15 <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr5_r16 <A1, A2, A3, A4, A5, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr6_r0  <A1, A2, A3, A4, A5, A6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6);
public delegate R1   MethodPtr6_r1  <A1, A2, A3, A4, A5, A6, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6);
public delegate R1   MethodPtr6_r2  <A1, A2, A3, A4, A5, A6, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2);
public delegate R1   MethodPtr6_r3  <A1, A2, A3, A4, A5, A6, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3);
public delegate R1   MethodPtr6_r4  <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr6_r5  <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr6_r6  <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr6_r7  <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr6_r8  <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr6_r9  <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr6_r10 <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr6_r11 <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr6_r12 <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr6_r13 <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr6_r14 <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr6_r15 <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr6_r16 <A1, A2, A3, A4, A5, A6, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr7_r0  <A1, A2, A3, A4, A5, A6, A7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7);
public delegate R1   MethodPtr7_r1  <A1, A2, A3, A4, A5, A6, A7, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7);
public delegate R1   MethodPtr7_r2  <A1, A2, A3, A4, A5, A6, A7, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2);
public delegate R1   MethodPtr7_r3  <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3);
public delegate R1   MethodPtr7_r4  <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr7_r5  <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr7_r6  <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr7_r7  <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr7_r8  <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr7_r9  <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr7_r10 <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr7_r11 <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr7_r12 <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr7_r13 <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr7_r14 <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr7_r15 <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr7_r16 <A1, A2, A3, A4, A5, A6, A7, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr8_r0  <A1, A2, A3, A4, A5, A6, A7, A8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8);
public delegate R1   MethodPtr8_r1  <A1, A2, A3, A4, A5, A6, A7, A8, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8);
public delegate R1   MethodPtr8_r2  <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2);
public delegate R1   MethodPtr8_r3  <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3);
public delegate R1   MethodPtr8_r4  <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr8_r5  <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr8_r6  <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr8_r7  <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr8_r8  <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr8_r9  <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr8_r10 <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr8_r11 <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr8_r12 <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr8_r13 <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr8_r14 <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr8_r15 <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr8_r16 <A1, A2, A3, A4, A5, A6, A7, A8, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr9_r0  <A1, A2, A3, A4, A5, A6, A7, A8, A9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9);
public delegate R1   MethodPtr9_r1  <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9);
public delegate R1   MethodPtr9_r2  <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2);
public delegate R1   MethodPtr9_r3  <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3);
public delegate R1   MethodPtr9_r4  <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr9_r5  <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr9_r6  <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr9_r7  <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr9_r8  <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr9_r9  <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr9_r10 <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr9_r11 <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr9_r12 <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr9_r13 <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr9_r14 <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr9_r15 <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr9_r16 <A1, A2, A3, A4, A5, A6, A7, A8, A9, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr10_r0  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10);
public delegate R1   MethodPtr10_r1  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10);
public delegate R1   MethodPtr10_r2  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2);
public delegate R1   MethodPtr10_r3  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3);
public delegate R1   MethodPtr10_r4  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr10_r5  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr10_r6  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr10_r7  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr10_r8  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr10_r9  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr10_r10 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr10_r11 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr10_r12 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr10_r13 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr10_r14 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr10_r15 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr10_r16 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr11_r0  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11);
public delegate R1   MethodPtr11_r1  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11);
public delegate R1   MethodPtr11_r2  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2);
public delegate R1   MethodPtr11_r3  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3);
public delegate R1   MethodPtr11_r4  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr11_r5  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr11_r6  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr11_r7  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr11_r8  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr11_r9  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr11_r10 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr11_r11 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr11_r12 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr11_r13 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr11_r14 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr11_r15 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr11_r16 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr12_r0  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12);
public delegate R1   MethodPtr12_r1  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12);
public delegate R1   MethodPtr12_r2  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2);
public delegate R1   MethodPtr12_r3  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3);
public delegate R1   MethodPtr12_r4  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr12_r5  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr12_r6  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr12_r7  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr12_r8  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr12_r9  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr12_r10 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr12_r11 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr12_r12 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr12_r13 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr12_r14 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr12_r15 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr12_r16 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr13_r0  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13);
public delegate R1   MethodPtr13_r1  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13);
public delegate R1   MethodPtr13_r2  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2);
public delegate R1   MethodPtr13_r3  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3);
public delegate R1   MethodPtr13_r4  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr13_r5  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr13_r6  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr13_r7  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr13_r8  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr13_r9  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr13_r10 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr13_r11 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr13_r12 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr13_r13 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr13_r14 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr13_r15 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr13_r16 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr14_r0  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14);
public delegate R1   MethodPtr14_r1  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14);
public delegate R1   MethodPtr14_r2  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2);
public delegate R1   MethodPtr14_r3  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3);
public delegate R1   MethodPtr14_r4  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr14_r5  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr14_r6  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr14_r7  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr14_r8  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr14_r9  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr14_r10 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr14_r11 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr14_r12 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr14_r13 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr14_r14 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr14_r15 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr14_r16 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr15_r0  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15);
public delegate R1   MethodPtr15_r1  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15);
public delegate R1   MethodPtr15_r2  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2);
public delegate R1   MethodPtr15_r3  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3);
public delegate R1   MethodPtr15_r4  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr15_r5  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr15_r6  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr15_r7  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr15_r8  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr15_r9  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr15_r10 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr15_r11 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr15_r12 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr15_r13 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr15_r14 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr15_r15 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr15_r16 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);
public delegate void MethodPtr16_r0  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16);
public delegate R1   MethodPtr16_r1  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16);
public delegate R1   MethodPtr16_r2  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2);
public delegate R1   MethodPtr16_r3  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3);
public delegate R1   MethodPtr16_r4  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4);
public delegate R1   MethodPtr16_r5  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5);
public delegate R1   MethodPtr16_r6  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6);
public delegate R1   MethodPtr16_r7  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7);
public delegate R1   MethodPtr16_r8  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7, R8> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8);
public delegate R1   MethodPtr16_r9  <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7, R8, R9> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9);
public delegate R1   MethodPtr16_r10 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10);
public delegate R1   MethodPtr16_r11 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11);
public delegate R1   MethodPtr16_r12 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12);
public delegate R1   MethodPtr16_r13 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13);
public delegate R1   MethodPtr16_r14 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14);
public delegate R1   MethodPtr16_r15 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15);
public delegate R1   MethodPtr16_r16 <A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16> (A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10, A11 a11, A12 a12, A13 a13, A14 a14, A15 a15, A16 a16, out R2 r2, out R3 r3, out R4 r4, out R5 r5, out R6 r6, out R7 r7, out R8 r8, out R9 r9, out R10 r10, out R11 r11, out R12 r12, out R13 r13, out R14 r14, out R15 r15, out R16 r16);

/*---------------------------------------------------------------------------*/

public enum TypeCtorRep {
    MR_TYPECTOR_REP_ENUM                    = 0,
    MR_TYPECTOR_REP_ENUM_USEREQ             = 1,
    MR_TYPECTOR_REP_DU                      = 2,
    MR_TYPECTOR_REP_DU_USEREQ               = 3,
    MR_TYPECTOR_REP_NOTAG                   = 4,
    MR_TYPECTOR_REP_NOTAG_USEREQ            = 5,
    MR_TYPECTOR_REP_EQUIV                   = 6,
    MR_TYPECTOR_REP_FUNC                    = 7,
    MR_TYPECTOR_REP_INT                     = 8,
    MR_TYPECTOR_REP_CHAR                    = 9,
    MR_TYPECTOR_REP_FLOAT                   = 10,
    MR_TYPECTOR_REP_STRING                  = 11,
    MR_TYPECTOR_REP_PRED                    = 12,
    MR_TYPECTOR_REP_SUBGOAL                 = 13,
    MR_TYPECTOR_REP_VOID                    = 14,
    MR_TYPECTOR_REP_C_POINTER               = 15,
    MR_TYPECTOR_REP_TYPEINFO                = 16,
    MR_TYPECTOR_REP_TYPECLASSINFO           = 17,
    MR_TYPECTOR_REP_ARRAY                   = 18,
    MR_TYPECTOR_REP_SUCCIP                  = 19,
    MR_TYPECTOR_REP_HP                      = 20,
    MR_TYPECTOR_REP_CURFR                   = 21,
    MR_TYPECTOR_REP_MAXFR                   = 22,
    MR_TYPECTOR_REP_REDOFR                  = 23,
    MR_TYPECTOR_REP_REDOIP                  = 24,
    MR_TYPECTOR_REP_TRAIL_PTR               = 25,
    MR_TYPECTOR_REP_TICKET                  = 26,
    MR_TYPECTOR_REP_NOTAG_GROUND            = 27,
    MR_TYPECTOR_REP_NOTAG_GROUND_USEREQ     = 28,
    MR_TYPECTOR_REP_EQUIV_GROUND            = 29,
    MR_TYPECTOR_REP_TUPLE                   = 30,
    MR_TYPECTOR_REP_RESERVED_ADDR           = 31,
    MR_TYPECTOR_REP_RESERVED_ADDR_USEREQ    = 32,
    MR_TYPECTOR_REP_TYPECTORINFO            = 33,
    MR_TYPECTOR_REP_BASETYPECLASSINFO       = 34,
    MR_TYPECTOR_REP_TYPEDESC                = 35,
    MR_TYPECTOR_REP_TYPECTORDESC            = 36,
    MR_TYPECTOR_REP_FOREIGN                 = 37,
    MR_TYPECTOR_REP_REFERENCE               = 38,
    MR_TYPECTOR_REP_STABLE_C_POINTER        = 39,
    MR_TYPECTOR_REP_STABLE_FOREIGN          = 40,
    MR_TYPECTOR_REP_PSEUDOTYPEDESC          = 41,
    MR_TYPECTOR_REP_DUMMY                   = 42,
    MR_TYPECTOR_REP_BITMAP                  = 43,
    MR_TYPECTOR_REP_FOREIGN_ENUM            = 44,
    MR_TYPECTOR_REP_FOREIGN_ENUM_USEREQ     = 45,
    MR_TYPECTOR_REP_UNKNOWN                 = 46,
    MR_TYPECTOR_REP_MAX                     = 47
}

public class PseudoTypeInfo {
    public readonly int variable_number;

    public static PseudoTypeInfo K1 = new PseudoTypeInfo(1);
    public static PseudoTypeInfo K2 = new PseudoTypeInfo(2);
    public static PseudoTypeInfo K3 = new PseudoTypeInfo(3);
    public static PseudoTypeInfo K4 = new PseudoTypeInfo(4);
    public static PseudoTypeInfo K5 = new PseudoTypeInfo(5);

    public PseudoTypeInfo() {
        this.variable_number = -1;
    }
    public PseudoTypeInfo(int variable_number) {
        this.variable_number = variable_number;
    }
}

public class TypeCtorInfo_Struct : PseudoTypeInfo {
    public int              arity;
    public int              type_ctor_version;
    public int              type_ctor_num_ptags;
    public TypeCtorRep      type_ctor_rep;
    public object           unify_pred;
    public object           compare_pred;
    public string           type_ctor_module_name;
    public string           type_ctor_name;
    public TypeFunctors     type_functors;
    public TypeLayout       type_layout;
    public int              type_ctor_num_functors;
    public short            type_ctor_flags;
    public int[]            type_functor_number_map;

    // This attribute is also to to prevent cyclic copying in deep_copy.
    [System.NonSerialized]
    private TypeInfo_Struct cached_type_info;

    public TypeCtorInfo_Struct() {
    }

    public TypeCtorInfo_Struct(TypeCtorInfo_Struct other, int arity) {
        this.init(
            arity,
            other.type_ctor_version,
            other.type_ctor_num_ptags,
            other.type_ctor_rep,
            other.unify_pred,
            other.compare_pred,
            other.type_ctor_module_name,
            other.type_ctor_name,
            other.type_functors,
            other.type_layout,
            other.type_ctor_num_functors,
            other.type_ctor_flags,
            other.type_functor_number_map
        );
    }

    public void init(
        int type_arity,
        int version,
        int num_ptags,
        TypeCtorRep rep,
        object unify_proc,
        object compare_proc,
        string module,
        string name,
        object name_ordered_functor_descs, // TypeFunctors
        object value_ordered_functor_descs, // TypeLayout
        int num_functors,
        short flags,
        int[] functor_number_map)
    {
        arity = type_arity;
        type_ctor_version = version;
        type_ctor_num_ptags = num_ptags;
        type_ctor_rep = rep;
        unify_pred = unify_proc;
        compare_pred = compare_proc;
        type_ctor_module_name = module;
        type_ctor_name = name;
        type_functors = (TypeFunctors) name_ordered_functor_descs;
        type_layout = (TypeLayout) value_ordered_functor_descs;
        type_ctor_num_functors = num_functors;
        type_ctor_flags = flags;
        type_functor_number_map = functor_number_map;
    }

    public override bool Equals(object other) {
        TypeCtorInfo_Struct tci = other as TypeCtorInfo_Struct;
        if ((System.Object)tci == null) {
            return false;
        }
        return this.Equals(tci);
    }

    public bool Equals(TypeCtorInfo_Struct tci) {
        if (tci == null) {
            return false;
        }
        if (this == tci) {
            return true;
        }
        return type_ctor_module_name.Equals(tci.type_ctor_module_name)
            && type_ctor_name.Equals(tci.type_ctor_name)
            && arity == tci.arity;
    }

    public override int GetHashCode() {
        return type_ctor_module_name.GetHashCode()
            ^ type_ctor_name.GetHashCode()
            ^ arity;
    }

    public override string ToString() {
        return type_ctor_module_name + "." + type_ctor_name + "/" + arity;
    }

    public TypeInfo_Struct ToTypeInfo() {
        if (cached_type_info == null) {
            cached_type_info = new TypeInfo_Struct(this);
        }
        return cached_type_info;
    }
}

public class TypeInfo_Struct : PseudoTypeInfo {
    public TypeCtorInfo_Struct  type_ctor;
    public PseudoTypeInfo[]     args;

    public TypeInfo_Struct() {
    }

    public TypeInfo_Struct(TypeCtorInfo_Struct tc) {
        type_ctor = tc;
    }

    public TypeInfo_Struct(TypeInfo_Struct ti, int arity, params object[] args)
    {
        init(ti.type_ctor, arity, args);
    }

    public TypeInfo_Struct(TypeInfo_Struct ti, params object[] args) {
        init(ti.type_ctor, args.Length, args);
    }

    public static TypeInfo_Struct maybe_new(TypeInfo_Struct ti) {
        return ti;
    }

    public static TypeInfo_Struct maybe_new(TypeCtorInfo_Struct tc) {
        return tc.ToTypeInfo();
    }

    public static TypeInfo_Struct maybe_new(PseudoTypeInfo obj) {
        TypeCtorInfo_Struct tc = obj as TypeCtorInfo_Struct;
        if (tc != null) {
            return tc.ToTypeInfo();
        }
        return (TypeInfo_Struct) obj;
    }

    public void init(TypeCtorInfo_Struct tc, PseudoTypeInfo[] args) {
        this.type_ctor = tc;
        this.args = args;
    }

    // XXX "as" should have type PseudoTypeInfo[],
    //     but because init_array/1 does not store the type.
    public void init(TypeCtorInfo_Struct tc, object[] os) {
        init(tc, os.Length, os);
    }

    // XXX "as" should have type PseudoTypeInfo[],
    //     but because init_array/1 does not store the type.
    public void init(TypeCtorInfo_Struct tc, int arity, object[] os) {
        PseudoTypeInfo[] ptis = new PseudoTypeInfo[arity];
        for (int i = 0; i < arity; i++) {
            ptis[i] = (PseudoTypeInfo) os[i];
        }
        init(tc, ptis);
    }

    public TypeInfo_Struct copy() {
        TypeInfo_Struct ti = new TypeInfo_Struct(type_ctor);
        if (args != null) {
            ti.args = (PseudoTypeInfo[]) args.Clone();
        }
        return ti;
    }

    public override bool Equals(object other) {
        TypeInfo_Struct ti = other as TypeInfo_Struct;
        if ((System.Object)ti == null) {
            return false;
        }
        return this.Equals(ti);
    }

    public bool Equals(TypeInfo_Struct ti) {
        if (ti == null) {
            return false;
        }

        if (this == ti) {
            return true;
        }

        TypeInfo_Struct self = this.collapse_equivalences();
        ti = ti.collapse_equivalences();

        if (self == ti) {
            return true;
        }

        if (!self.type_ctor.Equals(ti.type_ctor)) {
            return false;
        }

        int len1 = 0;
        int len2 = 0;
        if (self.args != null) {
            len1 = self.args.Length;
        }
        if (ti.args != null) {
            len2 = ti.args.Length;
        }
        if (len1 != len2) {
            return false;
        }

        for (int i = 0; i < len1; i++) {
            if (!self.args[i].Equals(ti.args[i])) {
                return false;
            }
        }
        return true;
    }

    private TypeInfo_Struct collapse_equivalences() {
        TypeInfo_Struct ti = this;

        /* Look past equivalences */
        while (ti.type_ctor.type_ctor_rep ==
                TypeCtorRep.MR_TYPECTOR_REP_EQUIV_GROUND
            || ti.type_ctor.type_ctor_rep ==
                TypeCtorRep.MR_TYPECTOR_REP_EQUIV)
        {
            ti = TypeInfo_Struct.maybe_new(
                ti.type_ctor.type_layout.layout_equiv());
        }

        return ti;
    }

    public override int GetHashCode() {
        int hash = type_ctor.GetHashCode();
        if (args != null) {
            foreach (PseudoTypeInfo a in args) {
                hash ^= a.GetHashCode();
            }
        }
        return hash;
    }

    /* Useful for debugging.
    public override string ToString() {
        string s = type_ctor.ToString() + "(";
        if (args != null) {
            foreach (PseudoTypeInfo a in args) {
                s += a.ToString() + ",";
            }
        }
        s += ")";
        return s;
    }
    */
}

public class TypeLayout {
    private readonly object layout_init;
    public TypeLayout(object init) {
        layout_init = init;
    }
    public DuPtagLayout[] layout_du() {
        return (DuPtagLayout[]) layout_init;
    }
    public EnumFunctorDesc[] layout_enum() {
        return (EnumFunctorDesc[]) layout_init;
    }
    public NotagFunctorDesc[] layout_notag() {
        return (NotagFunctorDesc[]) layout_init;
    }
    public PseudoTypeInfo layout_equiv() {
        return (PseudoTypeInfo) layout_init;
    }
}

public class TypeFunctors {
    private readonly object functors_init;
    public TypeFunctors(object init) {
        functors_init = init;
    }
    public DuFunctorDesc[] functors_du() {
        return (DuFunctorDesc[]) functors_init;
    }
    public EnumFunctorDesc[] functors_enum() {
        return (EnumFunctorDesc[]) functors_init;
    }
    public ForeignEnumFunctorDesc[] functors_foreign_enum() {
        return (ForeignEnumFunctorDesc[]) functors_init;
    }
    public NotagFunctorDesc functors_notag() {
        return (NotagFunctorDesc) functors_init;
    }
}

public class DuFunctorDesc {
    public string           du_functor_name;
    public int              du_functor_orig_arity;
    public int              du_functor_arg_type_contains_var;
    public Sectag_Locn      du_functor_sectag_locn;
    public int              du_functor_primary;
    public int              du_functor_secondary;
    public int              du_functor_ordinal;
    public PseudoTypeInfo[] du_functor_arg_types;
    public string[]         du_functor_arg_names;
    public DuExistInfo      du_functor_exist_info;

    public DuFunctorDesc() {
    }

    public void init(
        string functor_name,
        int orig_arity,
        int arg_type_contains_var,
        Sectag_Locn sectag_locn,
        int primary,
        int secondary,
        int ordinal,
        // XXX why do we need to use object here?
        object arg_types,
        object arg_names,
        object exist_info)
    {
        du_functor_name = functor_name;
        du_functor_orig_arity = orig_arity;
        du_functor_ordinal = ordinal;
        du_functor_arg_type_contains_var = arg_type_contains_var;
        du_functor_sectag_locn = sectag_locn;
        du_functor_primary = primary;
        du_functor_secondary = secondary;
        du_functor_ordinal = ordinal;
        du_functor_arg_types = (PseudoTypeInfo []) arg_types;
        du_functor_arg_names = (string[]) arg_names;
        du_functor_exist_info = (DuExistInfo) exist_info;
    }
}

public enum Sectag_Locn {
    MR_SECTAG_NONE              = 0,
    MR_SECTAG_NONE_DIRECT_ARG   = 1,
    MR_SECTAG_LOCAL             = 2,
    MR_SECTAG_REMOTE            = 3
}

public class DuPtagLayout {
    public int          sectag_sharers;
    public Sectag_Locn  sectag_locn;
    public /* final */ DuFunctorDesc[] sectag_alternatives;

    public DuPtagLayout(int sharers, Sectag_Locn locn, DuFunctorDesc[] alts) {
        sectag_sharers = sharers;
        sectag_locn = locn;
        sectag_alternatives = alts;
    }

    public DuPtagLayout(int sharers, int locn, DuFunctorDesc[] alts)
        : this(sharers, (Sectag_Locn)locn, alts)
    {
    }
}

public class DuExistInfo {
    public int exist_typeinfos_plain;
    public int exist_typeinfos_in_tci;
    public int exist_tcis;
    public /* final */ DuExistLocn[] exist_typeinfo_locns;
    public /* final */ TypeClassConstraint[] exist_constraints;

    public DuExistInfo() {
    }

    public void init(
        int typeinfos_plain,
        int typeinfos_in_tci,
        int tcis,
        DuExistLocn[] typeinfo_locns,
        TypeClassConstraint[] constraints)
    {
        exist_typeinfos_plain = typeinfos_plain;
        exist_typeinfos_in_tci = typeinfos_in_tci;
        exist_tcis = tcis;
        exist_typeinfo_locns = typeinfo_locns;
        exist_constraints = constraints;
    }
}

public class DuExistLocn {
    public int exist_arg_num;
    public int exist_offset_in_tci;

    public DuExistLocn(int arg_num, int offset_in_tci) {
        exist_arg_num = arg_num;
        exist_offset_in_tci = offset_in_tci;
    }
}

public class TypeClassConstraint {
    public TypeClassDeclStruct  tc_constr_type_class;
    public PseudoTypeInfo[]     tc_constr_arg_ptis;

    public TypeClassConstraint() {
    }

    public void init(
        TypeClassDeclStruct type_class,
        // XXX object[] should be PseudoTypeInfo[],
        //     but mlds_to_csharp.m generates Object[] since
        //     init_array/1 doesn't give type info
        object[] ptis)
    {
        tc_constr_type_class = type_class;
        tc_constr_arg_ptis = new PseudoTypeInfo[ptis.Length];
        for (int i = 0; i < ptis.Length; i++) {
            tc_constr_arg_ptis[i] = (PseudoTypeInfo) ptis[i];
        }
    }
}

public class TypeClassDeclStruct {
    public TypeClassId          tc_decl_id;
    public int                  tc_decl_version_number;
    public int                  tc_decl_num_supers; // redundant
    public TypeClassConstraint  tc_decl_supers;

    public TypeClassDeclStruct() {
    }

    public void init(
        TypeClassId id,
        int version_number,
        int num_supers,
        TypeClassConstraint supers)
    {
        tc_decl_id = id;
        tc_decl_version_number = version_number;
        tc_decl_num_supers = num_supers;
        tc_decl_supers = supers;
    }
}

public class TypeClassId {
    public string               tc_id_module_name;
    public string               tc_id_name;
    public int                  tc_id_arity;
    public int                  tc_id_num_type_vars; // XXX redundant
    public int                  tc_id_num_methods;   // XXX redundant
    public string[]             tc_id_var_names;
    public TypeClassMethod[]    tc_id_methods;

    public TypeClassId() {
    }

    public void init(
        string module_name,
        string name,
        int arity,
        int num_type_vars,
        int num_methods,
        string[] var_names,
        TypeClassMethod[] methods)
    {
        tc_id_module_name = module_name;
        tc_id_name = name;
        tc_id_arity = arity;
        tc_id_num_type_vars = num_type_vars;
        tc_id_num_methods = num_methods;
        tc_id_var_names = var_names;
        tc_id_methods = methods;
    }
}

public class TypeClassMethod {
    public string               tc_method_name;
    public int                  tc_method_arity;
    public int /* PredFunc */   tc_method_pred_func;

    public TypeClassMethod(string name, int arity, int pred_func) {
        tc_method_name = name;
        tc_method_arity = arity;
        tc_method_pred_func = pred_func;
    }
}

public class EnumFunctorDesc {
    public string   enum_functor_name;
    public int      enum_functor_ordinal;

    public EnumFunctorDesc() {
    }

    public void init(string name, int ordinal) {
        enum_functor_name = name;
        enum_functor_ordinal = ordinal;
    }
}

public class NotagFunctorDesc {
    public string           no_tag_functor_name;
    public PseudoTypeInfo   no_tag_functor_arg_type;
    public string           no_tag_functor_arg_name;

    public NotagFunctorDesc(
        string functor_name,
        PseudoTypeInfo functor_arg_type,
        object functor_arg_name)
    {
        no_tag_functor_name = functor_name;
        no_tag_functor_arg_type = functor_arg_type;
        // XXX cast might fail
        no_tag_functor_arg_name = (string) functor_arg_name;
    }
}

public class ForeignEnumFunctorDesc {
    public string   foreign_enum_functor_name;
    public int      foreign_enum_functor_ordinal;
    public int      foreign_enum_functor_value;

    public ForeignEnumFunctorDesc() {
    }

    public void init(string name, int ordinal, int val) {
        foreign_enum_functor_name = name;
        foreign_enum_functor_ordinal = ordinal;
        foreign_enum_functor_value = val;
    }
}

/*---------------------------------------------------------------------------*/

public class SystemException : System.Exception
{
    public SystemException(string Msg) : base(Msg)
    {
        // The parent constructor sets the error message that will be printed.
    }
}

public class Errors
{
    public static void SORRY(string s)
    {
        string msg;
        msg = System.String.Concat("Sorry, unimplemented: ", s);
        throw new mercury.runtime.SystemException(msg);
    }

    public static void fatal_error(string s)
    {
        string msg;
        msg = System.String.Concat("Fatal error: ", s);
        throw new mercury.runtime.SystemException(msg);
    }
}

public class Exception : System.Exception
{
    private object _exception; // univ.Univ_0

    public Exception(object exception) {
        this._exception = exception;
    }

    public object exception {
        get { return _exception; }
    }
};

public class Commit : System.Exception
{
}

public class UnreachableDefault : System.Exception {
}

/*---------------------------------------------------------------------------*/

public class ThreadLocalMutables
{
    // Child threads do not inherit [ThreadStatic] values so we cannot use the
    // attribute to implement `thread_local' mutables directly.  Instead, all
    // thread-local mutables are stored in a single array, which is copied from
    // the parent thread when a new thread is spawned.  The array indices are
    // allocated by module initialisation predicates.
    [System.ThreadStatic]
    private static object[] array = null;

    public static int new_index()
    {
        if (array == null) {
            array = new object[1];
            return 0;
        } else {
            int i = array.Length;
            System.Array.Resize(ref array, i + 1);
            return i;
        }
    }

    public static void set(int i, object val)
    {
        array[i] = val;
    }

    public static object get(int i)
    {
        return array[i];
    }

    public static object[] clone()
    {
        if (array == null) {
            return null;
        } else {
            return (object[]) array.Clone();
        }
    }

    public static void set_array(object[] arr)
    {
        array = arr;
    }
}

/*---------------------------------------------------------------------------*/

public class Constants
{
    public static readonly int MR_PREDICATE     = 0;
    public static readonly int MR_FUNCTION      = 1;

    public static readonly string MR_VERSION    = "11.07";
    public static readonly string MR_FULLARCH   = "x86_64-unknown-linux-gnu";
}

/*---------------------------------------------------------------------------*/

#if !MR_HIGHLEVEL_DATA
public class Environment
{
}

public class LowLevelData
{
	// Make a Mercury enumeration with the given integer value.
    public static object[] make_enum(int enum_value)
    {
        object[] e;
        e = make_MR_Word(enum_value, 0);
        return e;
    }

	// Make a MR_Word with the given tag and arity.
    public static object[] make_MR_Word(int tag, int arity)
    {
        object[] o = new object[arity + 1];
        o[0] = tag;
        return o;
    }

	// Set a field of an MR_Word with a given value.
	// The first field is at index 1.
    public static void set_MR_Word_field(object[] w, int index, object value)
    {
        w[index] = value;
    }

	// Get the value from an MR_Word.
	// The first field is at index 1.
    public static object get_MR_Word_field(object[] w, int index)
    {
        return w[index];
    }

    public static bool list_is_cons(object[] w)
    {
	    return (System.Convert.ToInt32(w[0]) != 0);
    }

    public static object list_get_head(object[] w)
    {
        return w[1];
    }

    public static object[] list_get_tail(object[] w)
    {
        return ((object[]) w[2]);
    }
}
#endif

class PInvoke {
    [System.Runtime.InteropServices.DllImport("msvcrt.dll")]
    public static extern int _putenv(string env);
}

}

/* vim: set sts=4 sw=4 et: */
