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_Ray2D_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.Ray2D);
              args = new Type[]{};
              method = type.GetMethod("get_origin", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, get_origin_0);
              args = new Type[]{typeof(UnityEngine.Vector2)};
              method = type.GetMethod("set_origin", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, set_origin_1);
              args = new Type[]{};
              method = type.GetMethod("get_direction", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, get_direction_2);
              args = new Type[]{typeof(UnityEngine.Vector2)};
              method = type.GetMethod("set_direction", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, set_direction_3);
              args = new Type[]{typeof(System.Single)};
              method = type.GetMethod("GetPoint", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, GetPoint_4);
              args = new Type[]{};
              method = type.GetMethod("ToString", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, ToString_5);
              args = new Type[]{typeof(System.String)};
              method = type.GetMethod("ToString", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, ToString_6);
  
  
              app.RegisterCLRMemberwiseClone(type, PerformMemberwiseClone);
  
              app.RegisterCLRCreateDefaultInstance(type, () => new UnityEngine.Ray2D());
              app.RegisterCLRCreateArrayInstance(type, s => new UnityEngine.Ray2D[s]);
  
              args = new Type[]{typeof(UnityEngine.Vector2), typeof(UnityEngine.Vector2)};
              method = type.GetConstructor(flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, Ctor_0);
  
          }
  
          static void WriteBackInstance(CSHotFix.Runtime.Enviorment.AppDomain __domain, StackObject* ptr_of_this_method, IList<object> __mStack, ref UnityEngine.Ray2D instance_of_this_method)
          {
              ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
              switch(ptr_of_this_method->ObjectType)
              {
                  case ObjectTypes.Object:
                      {
                          __mStack[ptr_of_this_method->Value] = instance_of_this_method;
                      }
                      break;
                  case ObjectTypes.FieldReference:
                      {
                          var ___obj = __mStack[ptr_of_this_method->Value];
                          if(___obj is ILTypeInstance)
                          {
                              ((ILTypeInstance)___obj)[ptr_of_this_method->ValueLow] = instance_of_this_method;
                          }
                          else
                          {
                              var t = __domain.GetType(___obj.GetType()) as CLRType;
                              t.SetFieldValue(ptr_of_this_method->ValueLow, ref ___obj, instance_of_this_method);
                          }
                      }
                      break;
                  case ObjectTypes.StaticFieldReference:
                      {
                          var t = __domain.GetType(ptr_of_this_method->Value);
                          if(t is ILType)
                          {
                              ((ILType)t).StaticInstance[ptr_of_this_method->ValueLow] = instance_of_this_method;
                          }
                          else
                          {
                              ((CLRType)t).SetStaticFieldValue(ptr_of_this_method->ValueLow, instance_of_this_method);
                          }
                      }
                      break;
                   case ObjectTypes.ArrayReference:
                      {
                          var instance_of_arrayReference = __mStack[ptr_of_this_method->Value] as UnityEngine.Ray2D[];
                          instance_of_arrayReference[ptr_of_this_method->ValueLow] = instance_of_this_method;
                      }
                      break;
              }
          }
  
          static StackObject* get_origin_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, 1);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
              UnityEngine.Ray2D instance_of_this_method = (UnityEngine.Ray2D)typeof(UnityEngine.Ray2D).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
  
              var result_of_this_method = instance_of_this_method.origin;
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
  
              __intp.Free(ptr_of_this_method);
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
          }
  
          static StackObject* set_origin_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, 2);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.Vector2 @value = (UnityEngine.Vector2)typeof(UnityEngine.Vector2).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
              UnityEngine.Ray2D instance_of_this_method = (UnityEngine.Ray2D)typeof(UnityEngine.Ray2D).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
  
              instance_of_this_method.origin = value;
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
  
              __intp.Free(ptr_of_this_method);
              return __ret;
          }
  
          static StackObject* get_direction_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, 1);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
              UnityEngine.Ray2D instance_of_this_method = (UnityEngine.Ray2D)typeof(UnityEngine.Ray2D).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
  
              var result_of_this_method = instance_of_this_method.direction;
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
  
              __intp.Free(ptr_of_this_method);
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
          }
  
          static StackObject* set_direction_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, 2);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              UnityEngine.Vector2 @value = (UnityEngine.Vector2)typeof(UnityEngine.Vector2).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
              UnityEngine.Ray2D instance_of_this_method = (UnityEngine.Ray2D)typeof(UnityEngine.Ray2D).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
  
              instance_of_this_method.direction = value;
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
  
              __intp.Free(ptr_of_this_method);
              return __ret;
          }
  
          static StackObject* GetPoint_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);
              System.Single @distance = *(float*)&ptr_of_this_method->Value;
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
              UnityEngine.Ray2D instance_of_this_method = (UnityEngine.Ray2D)typeof(UnityEngine.Ray2D).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
  
              var result_of_this_method = instance_of_this_method.GetPoint(@distance);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
  
              __intp.Free(ptr_of_this_method);
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
          }
  
          static StackObject* ToString_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);
              ptr_of_this_method = ILIntepreter.GetObjectAndResolveReference(ptr_of_this_method);
              UnityEngine.Ray2D instance_of_this_method = (UnityEngine.Ray2D)typeof(UnityEngine.Ray2D).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
  
              var result_of_this_method = instance_of_this_method.ToString();
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              WriteBackInstance(__domain, ptr_of_this_method, __mStack, ref instance_of_this_method);
  
              __intp.Free(ptr_of_this_method);
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method);
          }
  
          static StackObject* ToString_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);
  
  
gt:             ptr_of_this_method = ILIntepreter.Minus(__esp, 1);