text: // Autogenerated from CppHeaderCreator
  // Created by Sc2ad
  // =========================================================================
  #pragma once
  // Begin includes
  #include "beatsaber-hook/shared/utils/typedefs.h"
  #include <initializer_list>
  #include "beatsaber-hook/shared/utils/byref.hpp"
  // Including type: System.Collections.IEnumerable
  #include "System/Collections/IEnumerable.hpp"
  // Including type: System.IComparable`1
  #include "System/IComparable_1.hpp"
  // Including type: System.Collections.Generic.IEnumerator`1
  #include "System/Collections/Generic/IEnumerator_1.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: GlobalNamespace
  namespace GlobalNamespace {
    // Skipping declaration: HeapItem because it is already included!
    // Skipping declaration: <GetEnumerator>d__4 because it is already included!
    // Forward declaring type: BinaryHeap`1<T>
    template<typename T>
    class BinaryHeap_1;
  }
  // Forward declaring namespace: System::Collections::Generic
  namespace System::Collections::Generic {
    // Forward declaring type: IReadOnlyList`1<T>
    template<typename T>
    class IReadOnlyList_1;
  }
  // Forward declaring namespace: System::Collections
  namespace System::Collections {
    // Skipping declaration: IEnumerator because it is already included!
  }
  // Completed forward declares
  // Type namespace: 
  namespace GlobalNamespace {
    // Forward declaring type: MultipleSortedListsEnumerator`1<T>
    template<typename T>
    class MultipleSortedListsEnumerator_1;
  }
  #include "beatsaber-hook/shared/utils/il2cpp-type-check.hpp"
  DEFINE_IL2CPP_ARG_TYPE_GENERIC_CLASS(::GlobalNamespace::MultipleSortedListsEnumerator_1, "", "MultipleSortedListsEnumerator`1");
  // Type namespace: 
  namespace GlobalNamespace {
    // WARNING Size may be invalid!
    // Autogenerated type: MultipleSortedListsEnumerator`1
    // [TokenAttribute] Offset: FFFFFFFF
    template<typename T>
    class MultipleSortedListsEnumerator_1 : public ::Il2CppObject/*, public ::System::Collections::IEnumerable*/ {
      public:
      // Nested type: ::GlobalNamespace::MultipleSortedListsEnumerator_1::HeapItem<T>
      class HeapItem;
      // Nested type: ::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4<T>
      class $GetEnumerator$d__4;
      // WARNING Size may be invalid!
      // Autogenerated type: MultipleSortedListsEnumerator`1/HeapItem
      // [TokenAttribute] Offset: FFFFFFFF
      class HeapItem : public ::il2cpp_utils::il2cpp_type_check::NestedType, public ::Il2CppObject/*, public ::System::IComparable_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>*/ {
        public:
        using declaring_type = MultipleSortedListsEnumerator_1<T>*;
        static constexpr std::string_view NESTED_NAME = "HeapItem";
        static constexpr bool IS_VALUE_TYPE = false;
        #ifdef USE_CODEGEN_FIELDS
        public:
        #else
        #ifdef CODEGEN_FIELD_ACCESSIBILITY
        CODEGEN_FIELD_ACCESSIBILITY:
        #else
        protected:
        #endif
        #endif
        // private readonly System.Collections.Generic.IReadOnlyList`1<T> _dataList
        // Size: 0x8
        // Offset: 0x0
        ::System::Collections::Generic::IReadOnlyList_1<T>* dataList;
        // Field size check
        static_assert(sizeof(::System::Collections::Generic::IReadOnlyList_1<T>*) == 0x8);
        // private System.Int32 _idx
        // Size: 0x4
        // Offset: 0x0
        int idx;
        // Field size check
        static_assert(sizeof(int) == 0x4);
        // private T _currentValue
        // Size: 0xFFFFFFFF
        // Offset: 0x0
        T currentValue;
        public:
        // Creating interface conversion operator: operator ::System::IComparable_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>
        operator ::System::IComparable_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>() noexcept {
          return *reinterpret_cast<::System::IComparable_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>*>(this);
        }
        // Autogenerated instance field getter
        // Get instance field: private readonly System.Collections.Generic.IReadOnlyList`1<T> _dataList
        ::System::Collections::Generic::IReadOnlyList_1<T>*& dyn__dataList() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::HeapItem::dyn__dataList");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_dataList"))->offset;
          return *reinterpret_cast<::System::Collections::Generic::IReadOnlyList_1<T>**>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // Autogenerated instance field getter
        // Get instance field: private System.Int32 _idx
        int& dyn__idx() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::HeapItem::dyn__idx");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_idx"))->offset;
          return *reinterpret_cast<int*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // Autogenerated instance field getter
        // Get instance field: private T _currentValue
        T& dyn__currentValue() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::HeapItem::dyn__currentValue");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_currentValue"))->offset;
          return *reinterpret_cast<T*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // public T get_currentValue()
        // Offset: 0xFFFFFFFFFFFFFFFF
        T get_currentValue() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::HeapItem::get_currentValue");
          static auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "get_currentValue", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
          return ::il2cpp_utils::RunMethodRethrow<T, false>(this, ___internal__method);
        }
        // public System.Void .ctor(System.Collections.Generic.IReadOnlyList`1<T> dataList)
        // Offset: 0xFFFFFFFFFFFFFFFF
        template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
        static typename MultipleSortedListsEnumerator_1<T>::HeapItem* New_ctor(::System::Collections::Generic::IReadOnlyList_1<T>* dataList) {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::HeapItem::.ctor");
          return THROW_UNLESS((::il2cpp_utils::New<typename MultipleSortedListsEnumerator_1<T>::HeapItem*, creationType>(dataList)));
        }
        // public System.Boolean MoveToNextItem()
        // Offset: 0xFFFFFFFFFFFFFFFF
        bool MoveToNextItem() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::HeapItem::MoveToNextItem");
          static auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "MoveToNextItem", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
          return ::il2cpp_utils::RunMethodRethrow<bool, false>(this, ___internal__method);
        }
        // public System.Int32 CompareTo(MultipleSortedListsEnumerator`1/HeapItem<T> heapItem)
        // Offset: 0xFFFFFFFFFFFFFFFF
        int CompareTo(typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem* heapItem) {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::HeapItem::CompareTo");
          auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "CompareTo", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{::il2cpp_utils::ExtractType(heapItem)})));
          return ::il2cpp_utils::RunMethodRethrow<int, false>(this, ___internal__method, heapItem);
        }
      }; // MultipleSortedListsEnumerator`1/HeapItem
      // Could not write size check! Type: MultipleSortedListsEnumerator`1/HeapItem is generic, or has no fields that are valid for size checks!
      // WARNING Size may be invalid!
      // Autogenerated type: MultipleSortedListsEnumerator`1/<GetEnumerator>d__4
      // [TokenAttribute] Offset: FFFFFFFF
      // [CompilerGeneratedAttribute] Offset: FFFFFFFF
      class $GetEnumerator$d__4 : public ::il2cpp_utils::il2cpp_type_check::NestedType, public ::Il2CppObject/*, public ::System::Collections::Generic::IEnumerator_1<T>*/ {
        public:
        using declaring_type = MultipleSortedListsEnumerator_1<T>*;
        static constexpr std::string_view NESTED_NAME = "<GetEnumerator>d__4";
        static constexpr bool IS_VALUE_TYPE = false;
        #ifdef USE_CODEGEN_FIELDS
        public:
        #else
        #ifdef CODEGEN_FIELD_ACCESSIBILITY
        CODEGEN_FIELD_ACCESSIBILITY:
        #else
        protected:
        #endif
        #endif
        // private System.Int32 <>1__state
        // Size: 0x4
        // Offset: 0x0
        int $$1__state;
        // Field size check
        static_assert(sizeof(int) == 0x4);
        // private T <>2__current
        // Size: 0xFFFFFFFF
        // Offset: 0x0
        T $$2__current;
        // public MultipleSortedListsEnumerator`1<T> <>4__this
        // Size: 0x8
        // Offset: 0x0
        ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>* $$4__this;
        // Field size check
        static_assert(sizeof(::GlobalNamespace::MultipleSortedListsEnumerator_1<T>*) == 0x8);
        // private MultipleSortedListsEnumerator`1/HeapItem<T> <heapItem>5__2
        // Size: 0x8
        // Offset: 0x0
        typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem* $heapItem$5__2;
        // Field size check
        static_assert(sizeof(typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*) == 0x8);
        public:
        // Creating interface conversion operator: operator ::System::Collections::Generic::IEnumerator_1<T>
        operator ::System::Collections::Generic::IEnumerator_1<T>() noexcept {
          return *reinterpret_cast<::System::Collections::Generic::IEnumerator_1<T>*>(this);
        }
        // Autogenerated instance field getter
        // Get instance field: private System.Int32 <>1__state
        int& dyn_$$1__state() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::dyn_$$1__state");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "<>1__state"))->offset;
          return *reinterpret_cast<int*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // Autogenerated instance field getter
        // Get instance field: private T <>2__current
        T& dyn_$$2__current() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::dyn_$$2__current");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "<>2__current"))->offset;
          return *reinterpret_cast<T*>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // Autogenerated instance field getter
        // Get instance field: public MultipleSortedListsEnumerator`1<T> <>4__this
        ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>*& dyn_$$4__this() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::dyn_$$4__this");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "<>4__this"))->offset;
          return *reinterpret_cast<::GlobalNamespace::MultipleSortedListsEnumerator_1<T>**>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // Autogenerated instance field getter
        // Get instance field: private MultipleSortedListsEnumerator`1/HeapItem<T> <heapItem>5__2
        typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*& dyn_$heapItem$5__2() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::dyn_$heapItem$5__2");
          auto ___internal__instance = this;
          static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "<heapItem>5__2"))->offset;
          return *reinterpret_cast<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem**>(reinterpret_cast<char*>(this) + ___internal__field__offset);
        }
        // private T System.Collections.Generic.IEnumerator<T>.get_Current()
        // Offset: 0xFFFFFFFFFFFFFFFF
        T System_Collections_Generic_IEnumerator$T$_get_Current() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::System.Collections.Generic.IEnumerator<T>.get_Current");
          auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "System.Collections.Generic.IEnumerator<T>.get_Current", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
          return ::il2cpp_utils::RunMethodRethrow<T, false>(this, ___internal__method);
        }
        // private System.Object System.Collections.IEnumerator.get_Current()
        // Offset: 0xFFFFFFFFFFFFFFFF
        ::Il2CppObject* System_Collections_IEnumerator_get_Current() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::System.Collections.IEnumerator.get_Current");
          auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "System.Collections.IEnumerator.get_Current", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
          return ::il2cpp_utils::RunMethodRethrow<::Il2CppObject*, false>(this, ___internal__method);
        }
        // public System.Void .ctor(System.Int32 <>1__state)
        // Offset: 0xFFFFFFFFFFFFFFFF
        template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
        static typename MultipleSortedListsEnumerator_1<T>::$GetEnumerator$d__4* New_ctor(int $$1__state) {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::.ctor");
          return THROW_UNLESS((::il2cpp_utils::New<typename MultipleSortedListsEnumerator_1<T>::$GetEnumerator$d__4*, creationType>($$1__state)));
        }
        // private System.Void System.IDisposable.Dispose()
        // Offset: 0xFFFFFFFFFFFFFFFF
        void System_IDisposable_Dispose() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::System.IDisposable.Dispose");
          auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "System.IDisposable.Dispose", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
          ::il2cpp_utils::RunMethodRethrow<void, false>(this, ___internal__method);
        }
        // private System.Boolean MoveNext()
        // Offset: 0xFFFFFFFFFFFFFFFF
        bool MoveNext() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::MoveNext");
          auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "MoveNext", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
          return ::il2cpp_utils::RunMethodRethrow<bool, false>(this, ___internal__method);
        }
        // private System.Void System.Collections.IEnumerator.Reset()
        // Offset: 0xFFFFFFFFFFFFFFFF
        void System_Collections_IEnumerator_Reset() {
          static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::$GetEnumerator$d__4::System.Collections.IEnumerator.Reset");
          auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "System.Collections.IEnumerator.Reset", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
          ::il2cpp_utils::RunMethodRethrow<void, false>(this, ___internal__method);
        }
      }; // MultipleSortedListsEnumerator`1/<GetEnumerator>d__4
      // Could not write size check! Type: MultipleSortedListsEnumerator`1/<GetEnumerator>d__4 is generic, or has no fields that are valid for size checks!
      #ifdef USE_CODEGEN_FIELDS
      public:
      #else
      #ifdef CODEGEN_FIELD_ACCESSIBILITY
      CODEGEN_FIELD_ACCESSIBILITY:
      #else
      protected:
      #endif
      #endif
      // private readonly BinaryHeap`1<MultipleSortedListsEnumerator`1/HeapItem<T>> _heap
      // Size: 0x8
      // Offset: 0x0
      ::GlobalNamespace::BinaryHeap_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>* heap;
      // Field size check
      static_assert(sizeof(::GlobalNamespace::BinaryHeap_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>*) == 0x8);
      public:
      // Creating interface conversion operator: operator ::System::Collections::IEnumerable
      operator ::System::Collections::IEnumerable() noexcept {
        return *reinterpret_cast<::System::Collections::IEnumerable*>(this);
      }
      // Creating conversion operator: operator ::GlobalNamespace::BinaryHeap_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>*
      constexpr operator ::GlobalNamespace::BinaryHeap_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>*() const noexcept {
        return heap;
      }
      // Autogenerated instance field getter
      // Get instance field: private readonly BinaryHeap`1<MultipleSortedListsEnumerator`1/HeapItem<T>> _heap
      ::GlobalNamespace::BinaryHeap_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>*& dyn__heap() {
        static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::dyn__heap");
        auto ___internal__instance = this;
        static auto ___internal__field__offset = THROW_UNLESS(il2cpp_utils::FindField(___internal__instance, "_heap"))->offset;
        return *reinterpret_cast<::GlobalNamespace::BinaryHeap_1<typename ::GlobalNamespace::MultipleSortedListsEnumerator_1<T>::HeapItem*>**>(reinterpret_cast<char*>(this) + ___internal__field__offset);
      }
      // public System.Void .ctor(params System.Collections.Generic.IReadOnlyList`1<T>[] dataList)
      // Offset: 0xFFFFFFFFFFFFFFFF
      template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
      static MultipleSortedListsEnumerator_1<T>* New_ctor(::ArrayW<::System::Collections::Generic::IReadOnlyList_1<T>*> dataList) {
        static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::.ctor");
        return THROW_UNLESS((::il2cpp_utils::New<MultipleSortedListsEnumerator_1<T>*, creationType>(dataList)));
      }
      // private System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Collections::IEnumerator* System_Collections_IEnumerable_GetEnumerator() {
        static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::System.Collections.IEnumerable.GetEnumerator");
        auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "System.Collections.IEnumerable.GetEnumerator", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
        return ::il2cpp_utils::RunMethodRethrow<::System::Collections::IEnumerator*, false>(this, ___internal__method);
      }
      // public System.Collections.Generic.IEnumerator`1<T> GetEnumerator()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Collections::Generic::IEnumerator_1<T>* GetEnumerator() {
        static auto ___internal__logger = ::Logger::get().WithContext("::GlobalNamespace::MultipleSortedListsEnumerator_1::GetEnumerator");
        static auto* ___internal__method = THROW_UNLESS((::il2cpp_utils::FindMethod(this, "GetEnumerator", std::vector<Il2CppClass*>{}, ::std::vector<const Il2CppType*>{})));
        return ::il2cpp_utils::RunMethodRethrow<::System::Collections::Generic::IEnumerator_1<T>*, false>(this, ___internal__method);
      }
    }; // MultipleSortedListsEnumerator`1
    // Could not write size check! Type: MultipleSortedListsEnumerator`1 is generic, or has no fields that are valid for size checks!
  }
  #include "beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
  