		#region Method #{MethodName}

		[DllImport(DllName.m_dllName, CallingConvention = CallingConvention.Cdecl)]
		private static extern void Export#{ThisName}_#{MethodName}_#{ValueName1}_#{ValueName2}_#{ValueName3}_#{ValueName4}(IntPtr _native,
			#{ValueMarshalAs1}#{ValueTypePrefix1}#{ValueTypeName1} #{ValueName1},
			#{ValueMarshalAs2}#{ValueTypePrefix2}#{ValueTypeName2} #{ValueName2},
			#{ValueMarshalAs3}#{ValueTypePrefix3}#{ValueTypeName3} #{ValueName3},
			#{ValueMarshalAs4}#{ValueTypePrefix4}#{ValueTypeName4} #{ValueName4});

		public void #{MethodName}(
			#{TypeName1} #{ValueName1},
			#{TypeName2} #{ValueName2},
			#{TypeName3} #{ValueName3},
			#{TypeName4} #{ValueName4})
		{
			Export#{ThisName}_#{MethodName}_#{ValueName1}_#{ValueName2}_#{ValueName3}_#{ValueName4}(Native,
				#{ConvertBefore1}#{ValueTypePrefix1}#{ValueName1}#{ConvertPost1},
				#{ConvertBefore2}#{ValueTypePrefix2}#{ValueName2}#{ConvertPost2},
				#{ConvertBefore3}#{ValueTypePrefix3}#{ValueName3}#{ConvertPost3},
				#{ConvertBefore4}#{ValueTypePrefix4}#{ValueName4}#{ConvertPost4});
		}

		[DllImport(DllName.m_dllName, CallingConvention = CallingConvention.Cdecl)]
		private static extern void Export#{ThisName}_#{MethodName}_#{ValueName1}_#{ValueName2}_#{ValueName3}(IntPtr _native,
			#{ValueMarshalAs1}#{ValueTypePrefix1}#{ValueTypeName1} #{ValueName1},
			#{ValueMarshalAs2}#{ValueTypePrefix2}#{ValueTypeName2} #{ValueName2},
			#{ValueMarshalAs3}#{ValueTypePrefix3}#{ValueTypeName3} #{ValueName3});

		public void #{MethodName}(
			#{TypeName1} #{ValueName1},
			#{TypeName2} #{ValueName2},
			#{TypeName3} #{ValueName3})
		{
			Export#{ThisName}_#{MethodName}_#{ValueName1}_#{ValueName2}_#{ValueName3}(Native,
				#{ConvertBefore1}#{ValueTypePrefix1}#{ValueName1}#{ConvertPost1},
				#{ConvertBefore2}#{ValueTypePrefix2}#{ValueName2}#{ConvertPost2},
				#{ConvertBefore3}#{ValueTypePrefix3}#{ValueName3}#{ConvertPost3});
		}

		#endregion
