text: // Autogenerated from CppHeaderCreator
  // Created by Sc2ad
  // =========================================================================
  #pragma once
  // Begin includes
  #include "extern/beatsaber-hook/shared/utils/typedefs.h"
  #include "extern/beatsaber-hook/shared/utils/byref.hpp"
  // Including type: RootMotion.FinalIK.IK
  #include "RootMotion/FinalIK/IK.hpp"
  #include "extern/beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
  #include "extern/beatsaber-hook/shared/utils/il2cpp-utils-properties.hpp"
  #include "extern/beatsaber-hook/shared/utils/il2cpp-utils-fields.hpp"
  #include "extern/beatsaber-hook/shared/utils/utils.h"
  // Completed includes
  // Begin forward declares
  // Forward declaring namespace: RootMotion::FinalIK
  namespace RootMotion::FinalIK {
    // Forward declaring type: IKSolverFABRIKRoot
    class IKSolverFABRIKRoot;
    // Forward declaring type: IKSolver
    class IKSolver;
  }
  // Completed forward declares
  // Type namespace: RootMotion.FinalIK
  namespace RootMotion::FinalIK {
    // Size: 0x40
    #pragma pack(push, 1)
    // Autogenerated type: RootMotion.FinalIK.FABRIKRoot
    // [TokenAttribute] Offset: FFFFFFFF
    // [HelpURLAttribute] Offset: E9E804
    // [AddComponentMenu] Offset: E9E804
    class FABRIKRoot : public RootMotion::FinalIK::IK {
      public:
      // Writing base type padding for base size: 0x33 to desired offset: 0x38
      char ___base_padding[0x5] = {};
      // public RootMotion.FinalIK.IKSolverFABRIKRoot solver
      // Size: 0x8
      // Offset: 0x38
      RootMotion::FinalIK::IKSolverFABRIKRoot* solver;
      // Field size check
      static_assert(sizeof(RootMotion::FinalIK::IKSolverFABRIKRoot*) == 0x8);
      // Creating value type constructor for type: FABRIKRoot
      FABRIKRoot(RootMotion::FinalIK::IKSolverFABRIKRoot* solver_ = {}) noexcept : solver{solver_} {}
      // Get instance field: public RootMotion.FinalIK.IKSolverFABRIKRoot solver
      RootMotion::FinalIK::IKSolverFABRIKRoot* _get_solver();
      // Set instance field: public RootMotion.FinalIK.IKSolverFABRIKRoot solver
      void _set_solver(RootMotion::FinalIK::IKSolverFABRIKRoot* value);
      // private System.Void SupportGroup()
      // Offset: 0x187E900
      void SupportGroup();
      // private System.Void ASThread()
      // Offset: 0x187E94C
      void ASThread();
      // public System.Void .ctor()
      // Offset: 0x187E9A0
      // Implemented from: RootMotion.FinalIK.IK
      // Base method: System.Void IK::.ctor()
      // Base method: System.Void SolverManager::.ctor()
      // Base method: System.Void MonoBehaviour::.ctor()
      // Base method: System.Void Behaviour::.ctor()
      // Base method: System.Void Component::.ctor()
      // Base method: System.Void Object::.ctor()
      // Base method: System.Void Object::.ctor()
      template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
      static FABRIKRoot* New_ctor() {
        static auto ___internal__logger = ::Logger::get().WithContext("RootMotion::FinalIK::FABRIKRoot::.ctor");
        return THROW_UNLESS((::il2cpp_utils::New<FABRIKRoot*, creationType>()));
      }
      // protected override System.Void OpenUserManual()
      // Offset: 0x187E868
      // Implemented from: RootMotion.FinalIK.IK
      // Base method: System.Void IK::OpenUserManual()
      void OpenUserManual();
      // protected override System.Void OpenScriptReference()
      // Offset: 0x187E8B4
      // Implemented from: RootMotion.FinalIK.IK
      // Base method: System.Void IK::OpenScriptReference()
      void OpenScriptReference();
      // public override RootMotion.FinalIK.IKSolver GetIKSolver()
      // Offset: 0x187E998
      // Implemented from: RootMotion.FinalIK.IK
      // Base method: RootMotion.FinalIK.IKSolver IK::GetIKSolver()
      RootMotion::FinalIK::IKSolver* GetIKSolver();
    }; // RootMotion.FinalIK.FABRIKRoot
    #pragma pack(pop)
    static check_size<sizeof(FABRIKRoot), 56 + sizeof(RootMotion::FinalIK::IKSolverFABRIKRoot*)> __RootMotion_FinalIK_FABRIKRootSizeCheck;
    static_assert(sizeof(FABRIKRoot) == 0x40);
  }
  DEFINE_IL2CPP_ARG_TYPE(RootMotion::FinalIK::FABRIKRoot*, "RootMotion.FinalIK", "FABRIKRoot");
  #include "extern/beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
  // Writing MetadataGetter for method: RootMotion::FinalIK::FABRIKRoot::SupportGroup
  // Il2CppName: SupportGroup
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (RootMotion::FinalIK::FABRIKRoot::*)()>(&RootMotion::FinalIK::FABRIKRoot::SupportGroup)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(RootMotion::FinalIK::FABRIKRoot*), "SupportGroup", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: RootMotion::FinalIK::FABRIKRoot::ASThread
  // Il2CppName: ASThread
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (RootMotion::FinalIK::FABRIKRoot::*)()>(&RootMotion::FinalIK::FABRIKRoot::ASThread)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(RootMotion::FinalIK::FABRIKRoot*), "ASThread", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: RootMotion::FinalIK::FABRIKRoot::New_ctor
  // Il2CppName: .ctor
  // Cannot get method pointer of value based method overload from template for constructor!
  // Try using FindMethod instead!
  // Writing MetadataGetter for method: RootMotion::FinalIK::FABRIKRoot::OpenUserManual
  // Il2CppName: OpenUserManual
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (RootMotion::FinalIK::FABRIKRoot::*)()>(&RootMotion::FinalIK::FABRIKRoot::OpenUserManual)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(RootMotion::FinalIK::FABRIKRoot*), "OpenUserManual", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: RootMotion::FinalIK::FABRIKRoot::OpenScriptReference
  // Il2CppName: OpenScriptReference
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (RootMotion::FinalIK::FABRIKRoot::*)()>(&RootMotion::FinalIK::FABRIKRoot::OpenScriptReference)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(RootMotion::FinalIK::FABRIKRoot*), "OpenScriptReference", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: RootMotion::FinalIK::FABRIKRoot::GetIKSolver
  // Il2CppName: GetIKSolver
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<RootMotion::FinalIK::IKSolver* (RootMotion::FinalIK::FABRIKRoot::*)()>(&RootMotion::FinalIK::FABRIKRoot::GetIKSolver)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(RootMotion::FinalIK::FABRIKRoot*), "GetIKSolver", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  