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 ClassPrivateTool_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(global::ClassPrivateTool);
              args = new Type[]{typeof(System.Object), typeof(System.String)};
              method = type.GetMethod("GetPrivateField", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, GetPrivateField_0);
              args = new Type[]{typeof(System.Object), typeof(System.String)};
              method = type.GetMethod("GetPrivateProperty", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, GetPrivateProperty_1);
              args = new Type[]{typeof(System.Object), typeof(System.String), typeof(System.Object)};
              method = type.GetMethod("SetPrivateField", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, SetPrivateField_2);
              args = new Type[]{typeof(System.Object), typeof(System.String), typeof(System.Object)};
              method = type.GetMethod("SetPrivateProperty", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, SetPrivateProperty_3);
              args = new Type[]{typeof(System.Object), typeof(System.String), typeof(System.Object[])};
              method = type.GetMethod("CallPrivateMethod", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, CallPrivateMethod_4);
              args = new Type[]{typeof(System.Type), typeof(System.String), typeof(System.Object)};
              method = type.GetMethod("SetStaticPrivateField", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, SetStaticPrivateField_5);
              args = new Type[]{typeof(System.Type), typeof(System.String)};
              method = type.GetMethod("GetStaticPrivateField", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, GetStaticPrivateField_6);
              args = new Type[]{typeof(System.Type), typeof(System.String)};
              method = type.GetMethod("GetStaticPrivateProperty", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, GetStaticPrivateProperty_7);
              args = new Type[]{typeof(System.Type), typeof(System.String), typeof(System.Object)};
              method = type.GetMethod("SetStaticPrivateProperty", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, SetStaticPrivateProperty_8);
              args = new Type[]{typeof(System.Type), typeof(System.String), typeof(System.Object[])};
              method = type.GetMethod("CallStaticPrivateMethod", flag, null, args, null);
              app.RegisterCLRMethodRedirection(method, CallStaticPrivateMethod_9);
  
  
  
  
  
          }
  
  
          static StackObject* GetPrivateField_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.String @fieldname = (System.String)typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              System.Object @instance = (System.Object)typeof(System.Object).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
  
              var result_of_this_method = global::ClassPrivateTool.GetPrivateField(@instance, @fieldname);
  
              object obj_result_of_this_method = result_of_this_method;
              if(obj_result_of_this_method is CrossBindingAdaptorType)
              {    
                  return ILIntepreter.PushObject(__ret, __mStack, ((CrossBindingAdaptorType)obj_result_of_this_method).ILInstance, true);
              }
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method, true);
          }
  
          static StackObject* GetPrivateProperty_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);
              System.String @propertyname = (System.String)typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              System.Object @instance = (System.Object)typeof(System.Object).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
  
              var result_of_this_method = global::ClassPrivateTool.GetPrivateProperty(@instance, @propertyname);
  
              object obj_result_of_this_method = result_of_this_method;
              if(obj_result_of_this_method is CrossBindingAdaptorType)
              {    
                  return ILIntepreter.PushObject(__ret, __mStack, ((CrossBindingAdaptorType)obj_result_of_this_method).ILInstance, true);
              }
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method, true);
          }
  
          static StackObject* SetPrivateField_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, 3);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              System.Object @value = (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);
              System.String @fieldname = (System.String)typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 3);
              System.Object @instance = (System.Object)typeof(System.Object).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
  
              global::ClassPrivateTool.SetPrivateField(@instance, @fieldname, @value);
  
              return __ret;
          }
  
          static StackObject* SetPrivateProperty_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, 3);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              System.Object @value = (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);
              System.String @propertyname = (System.String)typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 3);
              System.Object @instance = (System.Object)typeof(System.Object).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
  
              global::ClassPrivateTool.SetPrivateProperty(@instance, @propertyname, @value);
  
              return __ret;
          }
  
          static StackObject* CallPrivateMethod_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, 3);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              System.Object[] @param = (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);
              System.String @name = (System.String)typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 3);
              System.Object @instance = (System.Object)typeof(System.Object).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
  
              var result_of_this_method = global::ClassPrivateTool.CallPrivateMethod(@instance, @name, @param);
  
              object obj_result_of_this_method = result_of_this_method;
              if(obj_result_of_this_method is CrossBindingAdaptorType)
              {    
                  return ILIntepreter.PushObject(__ret, __mStack, ((CrossBindingAdaptorType)obj_result_of_this_method).ILInstance, true);
              }
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method, true);
          }
  
          static StackObject* SetStaticPrivateField_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, 3);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              System.Object @value = (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);
              System.String @name = (System.String)typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 3);
              System.Type @t = (System.Type)typeof(System.Type).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
  
              global::ClassPrivateTool.SetStaticPrivateField(@t, @name, @value);
  
              return __ret;
          }
  
          static StackObject* GetStaticPrivateField_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);
              System.String @name = (System.String)typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              System.Type @t = (System.Type)typeof(System.Type).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
  
              var result_of_this_method = global::ClassPrivateTool.GetStaticPrivateField(@t, @name);
  
              object obj_result_of_this_method = result_of_this_method;
              if(obj_result_of_this_method is CrossBindingAdaptorType)
              {    
                  return ILIntepreter.PushObject(__ret, __mStack, ((CrossBindingAdaptorType)obj_result_of_this_method).ILInstance, true);
              }
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method, true);
          }
  
          static StackObject* GetStaticPrivateProperty_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, 2);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
              System.String @propertyname = (System.String)typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
              ptr_of_this_method = ILIntepreter.Minus(__esp, 2);
              System.Type @t = (System.Type)typeof(System.Type).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
              __intp.Free(ptr_of_this_method);
  
  
              var result_of_this_method = global::ClassPrivateTool.GetStaticPrivateProperty(@t, @propertyname);
  
              object obj_result_of_this_method = result_of_this_method;
              if(obj_result_of_this_method is CrossBindingAdaptorType)
              {    
                  return ILIntepreter.PushObject(__ret, __mStack, ((CrossBindingAdaptorType)obj_result_of_this_method).ILInstance, true);
              }
              return ILIntepreter.PushObject(__ret, __mStack, result_of_this_method, true);
          }
  
          static StackObject* SetStaticPrivateProperty_8(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)
          {
              CSHotFix.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;
              StackObject* ptr_of_this_method;
  
gt:             StackObject* __ret = ILIntepreter.Minus(__esp, 3);