using System;
using Il2CppInterop.Common.Attributes;
using Il2CppInterop.Runtime;
using Il2CppInterop.Runtime.InteropTypes.Arrays;
using Il2CppSystem;
using Il2CppSystem.Collections.Generic;

// Token: 0x02000242 RID: 578
[Serializable]
public class UnitySerializedDictionary<TKey, TValue> : Dictionary<TKey, TValue>
{
	// Token: 0x06005368 RID: 21352 RVA: 0x0014BF24 File Offset: 0x0014A124
	[CallerCount(0)]
	[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 576612, XrefRangeEnd = 576613, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
	public unsafe virtual void UnityEngine_ISerializationCallbackReceiver_OnAfterDeserialize()
	{
		IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
		IntPtr* ptr = null;
		IntPtr intPtr2;
		IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(UnitySerializedDictionary<TKey, TValue>.NativeMethodInfoPtr_UnityEngine_ISerializationCallbackReceiver_OnAfterDeserialize_Private_Virtual_Final_New_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
		Il2CppException.RaiseExceptionIfNecessary(intPtr2);
	}

	// Token: 0x06005369 RID: 21353 RVA: 0x0014BF68 File Offset: 0x0014A168
	[CallerCount(0)]
	[CachedScanResults(RefRangeStart = 0, RefRangeEnd = 0, XrefRangeStart = 576613, XrefRangeEnd = 576622, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
	public unsafe virtual void UnityEngine_ISerializationCallbackReceiver_OnBeforeSerialize()
	{
		IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
		IntPtr* ptr = null;
		IntPtr intPtr2;
		IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(UnitySerializedDictionary<TKey, TValue>.NativeMethodInfoPtr_UnityEngine_ISerializationCallbackReceiver_OnBeforeSerialize_Private_Virtual_Final_New_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
		Il2CppException.RaiseExceptionIfNecessary(intPtr2);
	}

	// Token: 0x0600536A RID: 21354 RVA: 0x0014BFAC File Offset: 0x0014A1AC
	[CallerCount(1)]
	[CachedScanResults(RefRangeStart = 576628, RefRangeEnd = 576629, XrefRangeStart = 576622, XrefRangeEnd = 576628, MetadataInitTokenRva = 0L, MetadataInitFlagRva = 0L)]
	public unsafe UnitySerializedDictionary()
		: this(IL2CPP.il2cpp_object_new(Il2CppClassPointerStore<UnitySerializedDictionary<TKey, TValue>>.NativeClassPtr))
	{
		IntPtr* ptr = null;
		IntPtr intPtr2;
		IntPtr intPtr = IL2CPP.il2cpp_runtime_invoke(UnitySerializedDictionary<TKey, TValue>.NativeMethodInfoPtr__ctor_Protected_Void_0, IL2CPP.Il2CppObjectBaseToPtrNotNull(this), (void**)ptr, ref intPtr2);
		Il2CppException.RaiseExceptionIfNecessary(intPtr2);
	}

	// Token: 0x0600536B RID: 21355 RVA: 0x0014BFF8 File Offset: 0x0014A1F8
	// Note: this type is marked as 'beforefieldinit'.
	static UnitySerializedDictionary()
	{
		Il2CppClassPointerStore<UnitySerializedDictionary<TKey, TValue>>.NativeClassPtr = IL2CPP.il2cpp_class_from_type(Type.internal_from_handle(IL2CPP.il2cpp_class_get_type(IL2CPP.GetIl2CppClass("Assembly-CSharp.dll", "", "UnitySerializedDictionary`2"))).MakeGenericType(new Il2CppReferenceArray<Type>(new Type[]
		{
			Type.internal_from_handle(IL2CPP.il2cpp_class_get_type(Il2CppClassPointerStore<TKey>.NativeClassPtr)),
			Type.internal_from_handle(IL2CPP.il2cpp_class_get_type(Il2CppClassPointerStore<TValue>.NativeClassPtr))
		})).TypeHandle.value);
		IL2CPP.il2cpp_runtime_class_init(Il2CppClassPointerStore<UnitySerializedDictionary<TKey, TValue>>.NativeClassPtr);
		UnitySerializedDictionary<TKey, TValue>.NativeFieldInfoPtr_keyData = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<UnitySerializedDictionary<TKey, TValue>>.NativeClassPtr, "keyData");
		UnitySerializedDictionary<TKey, TValue>.NativeFieldInfoPtr_valueData = IL2CPP.GetIl2CppField(Il2CppClassPointerStore<UnitySerializedDictionary<TKey, TValue>>.NativeClassPtr, "valueData");
		UnitySerializedDictionary<TKey, TValue>.NativeMethodInfoPtr_UnityEngine_ISerializationCallbackReceiver_OnAfterDeserialize_Private_Virtual_Final_New_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<UnitySerializedDictionary<TKey, TValue>>.NativeClassPtr, 100668883);
		UnitySerializedDictionary<TKey, TValue>.NativeMethodInfoPtr_UnityEngine_ISerializationCallbackReceiver_OnBeforeSerialize_Private_Virtual_Final_New_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<UnitySerializedDictionary<TKey, TValue>>.NativeClassPtr, 100668884);
		UnitySerializedDictionary<TKey, TValue>.NativeMethodInfoPtr__ctor_Protected_Void_0 = IL2CPP.GetIl2CppMethodByToken(Il2CppClassPointerStore<UnitySerializedDictionary<TKey, TValue>>.NativeClassPtr, 100668885);
	}

	// Token: 0x0600536C RID: 21356 RVA: 0x0014C0D9 File Offset: 0x0014A2D9
	public UnitySerializedDictionary(IntPtr pointer)
		: base(pointer)
	{
	}

	// Token: 0x17001DB1 RID: 7601
	// (get) Token: 0x0600536D RID: 21357 RVA: 0x0014C0E4 File Offset: 0x0014A2E4
	// (set) Token: 0x0600536E RID: 21358 RVA: 0x0014C118 File Offset: 0x0014A318
	public unsafe List<TKey> keyData
	{
		get
		{
			IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtrNotNull(this) + (IntPtr)IL2CPP.il2cpp_field_get_offset(UnitySerializedDictionary<TKey, TValue>.NativeFieldInfoPtr_keyData);
			IntPtr intPtr2 = *intPtr;
			return (intPtr2 != 0) ? new List<TKey>(intPtr2) : null;
		}
		set
		{
			IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			IL2CPP.il2cpp_gc_wbarrier_set_field(intPtr, intPtr + (IntPtr)IL2CPP.il2cpp_field_get_offset(UnitySerializedDictionary<TKey, TValue>.NativeFieldInfoPtr_keyData), IL2CPP.Il2CppObjectBaseToPtr(value));
		}
	}

	// Token: 0x17001DB2 RID: 7602
	// (get) Token: 0x0600536F RID: 21359 RVA: 0x0014C140 File Offset: 0x0014A340
	// (set) Token: 0x06005370 RID: 21360 RVA: 0x0014C174 File Offset: 0x0014A374
	public unsafe List<TValue> valueData
	{
		get
		{
			IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtrNotNull(this) + (IntPtr)IL2CPP.il2cpp_field_get_offset(UnitySerializedDictionary<TKey, TValue>.NativeFieldInfoPtr_valueData);
			IntPtr intPtr2 = *intPtr;
			return (intPtr2 != 0) ? new List<TValue>(intPtr2) : null;
		}
		set
		{
			IntPtr intPtr = IL2CPP.Il2CppObjectBaseToPtrNotNull(this);
			IL2CPP.il2cpp_gc_wbarrier_set_field(intPtr, intPtr + (IntPtr)IL2CPP.il2cpp_field_get_offset(UnitySerializedDictionary<TKey, TValue>.NativeFieldInfoPtr_valueData), IL2CPP.Il2CppObjectBaseToPtr(value));
		}
	}

	// Token: 0x040036D5 RID: 14037
	private static readonly IntPtr NativeFieldInfoPtr_keyData;

	// Token: 0x040036D6 RID: 14038
	private static readonly IntPtr NativeFieldInfoPtr_valueData;

	// Token: 0x040036D7 RID: 14039
	private static readonly IntPtr NativeMethodInfoPtr_UnityEngine_ISerializationCallbackReceiver_OnAfterDeserialize_Private_Virtual_Final_New_Void_0;

	// Token: 0x040036D8 RID: 14040
	private static readonly IntPtr NativeMethodInfoPtr_UnityEngine_ISerializationCallbackReceiver_OnBeforeSerialize_Private_Virtual_Final_New_Void_0;

	// Token: 0x040036D9 RID: 14041
	private static readonly IntPtr NativeMethodInfoPtr__ctor_Protected_Void_0;
}
