context: 
  #if CSHotFix
  using System;
  using System.Collections.Generic;
  using System.Reflection;
  using System.Runtime.InteropServices;
  
  using CSHotFix.CLR.TypeSystem;
  using CSHotFix.CLR.Method;
  using CSHotFix.Runtime.Enviorment;
  using CSHotFix.Runtime.Intepreter;
  using CSHotFix.Runtime.Stack;
  using CSHotFix.Reflection;
  using CSHotFix.CLR.Utils;
  using System.Linq;
  namespace CSHotFix.Runtime.Generated
  {
      unsafe class UnityEngine_Gradient_Binding
      {
          public static void Register(CSHotFix.Runtime.Enviorment.AppDomain app)
          {
              BindingFlags flag = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly;
              MethodBase method;
              Type[] args;
              Type type = typeof(UnityEngine.Gradient);
              args = new Type[]{typeof(System.Single)};
              method = type.GetMethod("Evaluate", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, Evaluate_0);
              args = new Type[]{};
              method = type.GetMethod("get_colorKeys", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, get_colorKeys_1);
              args = new Type[]{typeof(UnityEngine.GradientColorKey[])};
              method = type.GetMethod("set_colorKeys", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, set_colorKeys_2);
              args = new Type[]{};
              method = type.GetMethod("get_alphaKeys", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, get_alphaKeys_3);
              args = new Type[]{typeof(UnityEngine.GradientAlphaKey[])};
              method = type.GetMethod("set_alphaKeys", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, set_alphaKeys_4);
              args = new Type[]{};
              method = type.GetMethod("get_mode", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, get_mode_5);
              args = new Type[]{typeof(UnityEngine.GradientMode)};
              method = type.GetMethod("set_mode", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, set_mode_6);
              args = new Type[]{typeof(UnityEngine.GradientColorKey[]), typeof(UnityEngine.GradientAlphaKey[])};
              method = type.GetMethod("SetKeys", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, SetKeys_7);
              args = new Type[]{typeof(System.Object)};
              method = type.GetMethod("Equals", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, Equals_8);
              args = new Type[]{typeof(UnityEngine.Gradient)};
              method = type.GetMethod("Equals", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, Equals_9);
              args = new Type[]{};
              method = type.GetMethod("GetHashCode", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, GetHashCode_10);
  
  
  
              app.RegisterCLRCreateDefaultInstance(type, () => new UnityEngine.Gradient());
              app.RegisterCLRCreateArrayInstance(type, s => new UnityEngine.Gradient[s]);
  
              args = new Type[]{};
              method = type.GetConstructor(flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, Ctor_0);
  
          }
  
  
          static StackObject* Evaluate_0(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 2);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              System.Single @time = *(float*)&ptr_of_this_method->Value;
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              var result_of_this_method = instance_of_this_method.Evaluate(@time);
  
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
          }
  
          static StackObject* get_colorKeys_1(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 1);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              var result_of_this_method = instance_of_this_method.colorKeys;
  
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
          }
  
          static StackObject* set_colorKeys_2(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 2);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.GradientColorKey[] @value = (UnityEngine.GradientColorKey[])typeof(UnityEngine.GradientColorKey[]).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              instance_of_this_method.colorKeys = value;
  
              return __ret;
          }
  
          static StackObject* get_alphaKeys_3(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 1);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              var result_of_this_method = instance_of_this_method.alphaKeys;
  
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
          }
  
          static StackObject* set_alphaKeys_4(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 2);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.GradientAlphaKey[] @value = (UnityEngine.GradientAlphaKey[])typeof(UnityEngine.GradientAlphaKey[]).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              instance_of_this_method.alphaKeys = value;
  
              return __ret;
          }
  
          static StackObject* get_mode_5(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 1);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              var result_of_this_method = instance_of_this_method.mode;
  
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
          }
  
          static StackObject* set_mode_6(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 2);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.GradientMode @value = (UnityEngine.GradientMode)typeof(UnityEngine.GradientMode).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              instance_of_this_method.mode = value;
  
              return __ret;
          }
  
          static StackObject* SetKeys_7(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 3);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.GradientAlphaKey[] @alphaKeys = (UnityEngine.GradientAlphaKey[])typeof(UnityEngine.GradientAlphaKey[]).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              UnityEngine.GradientColorKey[] @colorKeys = (UnityEngine.GradientColorKey[])typeof(UnityEngine.GradientColorKey[]).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 3);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              instance_of_this_method.SetKeys(@colorKeys, @alphaKeys);
  
              return __ret;
          }
  
          static StackObject* Equals_8(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 2);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              System.Object @o = (System.Object)typeof(System.Object).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              var result_of_this_method = instance_of_this_method.Equals(@o);
  
              __ret->ObjectType = ObjectTypes.Integer;
              __ret->Value = result_of_this_method ? 1 : 0;
              return __ret + 1;
          }
  
          static StackObject* Equals_9(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 2);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.Gradient @other = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              var result_of_this_method = instance_of_this_method.Equals(@other);
  
              __ret->ObjectType = ObjectTypes.Integer;
              __ret->Value = result_of_this_method ? 1 : 0;
              return __ret + 1;
          }
  
          static StackObject* GetHashCode_10(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
              StackObject* __ret = ILIntepreter.Minus(__esp, 1);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.Gradient instance_of_this_method = (UnityEngine.Gradient)typeof(UnityEngine.Gradient).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              var result_of_this_method = instance_of_this_method.GetHashCode();
  
              __ret->ObjectType = ObjectTypes.Integer;
              __ret->Value = result_of_this_method;
              return __ret + 1;
          }
  
  
  
  
          static StackObject* Ctor_0(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
  
gt:             StackObject* __ret = ILIntepreter.Minus(__esp, 0);