text: // Autogenerated from CppHeaderCreator
  // Created by Sc2ad
  // =========================================================================
  #pragma once
  // Begin includes
  #include "beatsaber-hook/shared/utils/typedefs.h"
  #include "beatsaber-hook/shared/utils/byref.hpp"
  // Including type: System.Buffers.ArrayPool`1
  #include "System/Buffers/ArrayPool_1.hpp"
  // Including type: System.Threading.SpinLock
  #include "System/Threading/SpinLock.hpp"
  #include "beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
  #include "beatsaber-hook/shared/utils/il2cpp-utils-properties.hpp"
  #include "beatsaber-hook/shared/utils/il2cpp-utils-fields.hpp"
  #include "beatsaber-hook/shared/utils/utils.h"
  #include "beatsaber-hook/shared/utils/typedefs-array.hpp"
  // Completed includes
  // Begin forward declares
  // Forward declaring namespace: System::Buffers
  namespace System::Buffers {
    // Skipping declaration: Bucket because it is already included!
  }
  // Completed forward declares
  // Type namespace: System.Buffers
  namespace System::Buffers {
    // Forward declaring type: DefaultArrayPool`1<T>
    template<typename T>
    class DefaultArrayPool_1;
  }
  #include "beatsaber-hook/shared/utils/il2cpp-type-check.hpp"
  DEFINE_IL2CPP_ARG_TYPE_GENERIC_CLASS(::System::Buffers::DefaultArrayPool_1, "System.Buffers", "DefaultArrayPool`1");
  // Type namespace: System.Buffers
  namespace System::Buffers {
    // WARNING Size may be invalid!
    // Autogenerated type: System.Buffers.DefaultArrayPool`1
    // [TokenAttribute] Offset: FFFFFFFF
    template<typename T>
    class DefaultArrayPool_1 : public ::System::Buffers::ArrayPool_1<T> {
      public:
      // Nested type: ::System::Buffers::DefaultArrayPool_1::Bucket<T>
      class Bucket;
      // WARNING Size may be invalid!
      // Autogenerated type: System.Buffers.DefaultArrayPool`1/System.Buffers.Bucket
      // [TokenAttribute] Offset: FFFFFFFF
      class Bucket : public ::il2cpp_utils::il2cpp_type_check::NestedType, public ::Il2CppObject {
        public:
        using declaring_type = DefaultArrayPool_1<T>*;
        static constexpr std::string_view NESTED_NAME = "Bucket";
        static constexpr bool IS_VALUE_TYPE = false;
        public:
        // readonly System.Int32 _bufferLength
        // Size: 0x4
        // Offset: 0x0
        int bufferLength;
        // Field size check
        static_assert(sizeof(int) == 0x4);
        // private readonly T[][] _buffers
        // Size: 0x8
        // Offset: 0x0
        ::ArrayW<::ArrayW<T>> buffers;
        // Field size check
        static_assert(sizeof(::ArrayW<::ArrayW<T>>) == 0x8);
        // private readonly System.Int32 _poolId
        // Size: 0x4
        // Offset: 0x0
        int poolId;
        // Field size check
        static_assert(sizeof(int) == 0x4);
        // private System.Threading.SpinLock _lock
        // Size: 0x4
        // Offset: 0x0
        ::System::Threading::SpinLock lock;
        // Field size check
        static_assert(sizeof(::System::Threading::SpinLock) == 0x4);
        // private System.Int32 _index
        // Size: 0x4
        // Offset: 0x0
        int index;
        // Field size check
        static_assert(sizeof(int) == 0x4);
        public:
        // Autogenerated instance field getter
        // Get instance field: readonly System.Int32 _bufferLength
        [[deprecated("Use field access instead!")]] int& dyn__bufferLength() {
          static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Bucket::dyn__bufferLength");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_bufferLength"))->offset;
          return *reinterpret_cast<int*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // Autogenerated instance field getter
        // Get instance field: private readonly T[][] _buffers
        [[deprecated("Use field access instead!")]] ::ArrayW<::ArrayW<T>>& dyn__buffers() {
          static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Bucket::dyn__buffers");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_buffers"))->offset;
          return *reinterpret_cast<::ArrayW<::ArrayW<T>>*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // Autogenerated instance field getter
        // Get instance field: private readonly System.Int32 _poolId
        [[deprecated("Use field access instead!")]] int& dyn__poolId() {
          static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Bucket::dyn__poolId");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_poolId"))->offset;
          return *reinterpret_cast<int*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // Autogenerated instance field getter
        // Get instance field: private System.Threading.SpinLock _lock
        [[deprecated("Use field access instead!")]] ::System::Threading::SpinLock& dyn__lock() {
          static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Bucket::dyn__lock");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_lock"))->offset;
          return *reinterpret_cast<::System::Threading::SpinLock*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // Autogenerated instance field getter
        // Get instance field: private System.Int32 _index
        [[deprecated("Use field access instead!")]] int& dyn__index() {
          static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Bucket::dyn__index");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_index"))->offset;
          return *reinterpret_cast<int*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // System.Int32 get_Id()
        // Offset: 0xFFFFFFFFFFFFFFFF
        int get_Id() {
          static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Bucket::get_Id");
          static auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "get_Id", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
          return ::il2cpp_utils::RunMethodRethrow<int, false>(this, ___internal__method);
        }
        // System.Void .ctor(System.Int32 bufferLength, System.Int32 numberOfBuffers, System.Int32 poolId)
        // Offset: 0xFFFFFFFFFFFFFFFF
        template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
        static typename DefaultArrayPool_1<T>::Bucket* New_ctor(int bufferLength, int numberOfBuffers, int poolId) {
          static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Bucket::.ctor");
          return THROW_UNLESS((::il2cpp_utils::New<typename DefaultArrayPool_1<T>::Bucket*, creationType>(bufferLength, numberOfBuffers, poolId)));
        }
        // T[] Rent()
        // Offset: 0xFFFFFFFFFFFFFFFF
        ::ArrayW<T> Rent() {
          static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Bucket::Rent");
          static auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "Rent", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
          return ::il2cpp_utils::RunMethodRethrow<::ArrayW<T>, false>(this, ___internal__method);
        }
        // System.Void Return(T[] array)
        // Offset: 0xFFFFFFFFFFFFFFFF
        void Return(::ArrayW<T> array) {
          static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Bucket::Return");
          static auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "Return", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{::il2cpp_utils::ExtractType(array)})));
          ::il2cpp_utils::RunMethodRethrow<void, false>(this, ___internal__method, array);
        }
      }; // System.Buffers.DefaultArrayPool`1/System.Buffers.Bucket
      // Could not write size check! Type: System.Buffers.DefaultArrayPool`1/System.Buffers.Bucket is generic, or has no fields that are valid for size checks!
      public:
      // private readonly System.Buffers.DefaultArrayPool`1/System.Buffers.Bucket<T>[] _buckets
      // Size: 0x8
      // Offset: 0x0
      ::ArrayW<typename ::System::Buffers::DefaultArrayPool_1<T>::Bucket*> buckets;
      // Field size check
      static_assert(sizeof(::ArrayW<typename ::System::Buffers::DefaultArrayPool_1<T>::Bucket*>) == 0x8);
      public:
      // Creating conversion operator: operator ::ArrayW<typename ::System::Buffers::DefaultArrayPool_1<T>::Bucket*>
      constexpr operator ::ArrayW<typename ::System::Buffers::DefaultArrayPool_1<T>::Bucket*>() const noexcept {
        return buckets;
      }
      // Autogenerated static field getter
      // Get static field: static private T[] s_emptyArray
      static ::ArrayW<T> _get_s_emptyArray() {
        static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::_get_s_emptyArray");
        return THROW_UNLESS(il2cpp_utils::GetFieldValue<::ArrayW<T>>(il2cpp_utils::il2cpp_type_check::il2cpp_no_arg_class<DefaultArrayPool_1<T>*>::get(), "s_emptyArray"));
      }
      // Autogenerated static field setter
      // Set static field: static private T[] s_emptyArray
      static void _set_s_emptyArray(::ArrayW<T> value) {
        static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::_set_s_emptyArray");
        THROW_UNLESS(il2cpp_utils::SetFieldValue(il2cpp_utils::il2cpp_type_check::il2cpp_no_arg_class<DefaultArrayPool_1<T>*>::get(), "s_emptyArray", value));
      }
      // Autogenerated instance field getter
      // Get instance field: private readonly System.Buffers.DefaultArrayPool`1/System.Buffers.Bucket<T>[] _buckets
      [[deprecated("Use field access instead!")]] ::ArrayW<typename ::System::Buffers::DefaultArrayPool_1<T>::Bucket*>& dyn__buckets() {
        static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::dyn__buckets");
        auto ___internal__instance = this;
        static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_buckets"))->offset;
        return *reinterpret_cast<::ArrayW<typename ::System::Buffers::DefaultArrayPool_1<T>::Bucket*>*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
      }
      // private System.Int32 get_Id()
      // Offset: 0xFFFFFFFFFFFFFFFF
      int get_Id() {
        static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::get_Id");
        static auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "get_Id", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
        return ::il2cpp_utils::RunMethodRethrow<int, false>(this, ___internal__method);
      }
      // System.Void .ctor(System.Int32 maxArrayLength, System.Int32 maxArraysPerBucket)
      // Offset: 0xFFFFFFFFFFFFFFFF
      template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
      static DefaultArrayPool_1<T>* New_ctor(int maxArrayLength, int maxArraysPerBucket) {
        static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::.ctor");
        return THROW_UNLESS((::il2cpp_utils::New<DefaultArrayPool_1<T>*, creationType>(maxArrayLength, maxArraysPerBucket)));
      }
      // System.Void .ctor()
      // Offset: 0xFFFFFFFFFFFFFFFF
      // Implemented from: System.Buffers.ArrayPool`1
      // Base method: System.Void ArrayPool_1::.ctor()
      template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
      static DefaultArrayPool_1<T>* New_ctor() {
        static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::.ctor");
        return THROW_UNLESS((::il2cpp_utils::New<DefaultArrayPool_1<T>*, creationType>()));
      }
      // public override T[] Rent(System.Int32 minimumLength)
      // Offset: 0xFFFFFFFFFFFFFFFF
      // Implemented from: System.Buffers.ArrayPool`1
      // Base method: T[] ArrayPool_1::Rent(System.Int32 minimumLength)
      ::ArrayW<T> Rent(int minimumLength) {
        static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Rent");
        auto* ___internal__method = THROW_UNLESS(::il2cpp_utils::ResolveVtableSlot(this, classof(::System::Buffers::ArrayPool_1<T>*), -1));
        return ::il2cpp_utils::RunMethodRethrow<::ArrayW<T>, false>(this, ___internal__method, minimumLength);
      }
      // public override System.Void Return(T[] array, System.Boolean clearArray)
      // Offset: 0xFFFFFFFFFFFFFFFF
      // Implemented from: System.Buffers.ArrayPool`1
      // Base method: System.Void ArrayPool_1::Return(T[] array, System.Boolean clearArray)
      void Return(::ArrayW<T> array, bool clearArray) {
        static auto ___internal__logger = ::Logger::get().WithContext("::System::Buffers::DefaultArrayPool_1::Return");
        auto* ___internal__method = THROW_UNLESS(::il2cpp_utils::ResolveVtableSlot(this, classof(::System::Buffers::ArrayPool_1<T>*), -1));
        ::il2cpp_utils::RunMethodRethrow<void, false>(this, ___internal__method, array, clearArray);
      }
    }; // System.Buffers.DefaultArrayPool`1
    // Could not write size check! Type: System.Buffers.DefaultArrayPool`1 is generic, or has no fields that are valid for size checks!
  }
  #include "beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
  