SystemBase ECS unity doesnt let me acess NativeMultiHashMap because it isnt readonly?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
using Unity.Transforms;
using Unity.Mathematics;
using Unity.Collections;
using Unity.Rendering;
using Unity.Burst;
using Unity.Jobs;

    public struct QuadrantData {
        public Entity entity;
        public Soldier soldier;
    }
    
    public class QuadrantSystem : SystemBase {
    
        EntityQuery entityQuery;
    
        public static NativeMultiHashMap<int, QuadrantData> quadrantMultiHashMap;
    
        public const int quadrantYMultiplier = 1000;
        private const int quadrantCellSize = 3;
    
        public static int GetPositionHashMapKey(int2 position) {
            return ((position.x / quadrantCellSize) + (quadrantYMultiplier * (position.y / quadrantCellSize)));
        }
    
        private static void DebugDrawQuadrant(float3 position) {
            Vector3 lowerLeft = new Vector3(math.floor(position.x / quadrantCellSize) * quadrantCellSize,0, math.floor(position.z / quadrantCellSize) * quadrantCellSize);
            Debug.DrawLine(lowerLeft, lowerLeft + new Vector3(+1,0, +0) * quadrantCellSize);
            Debug.DrawLine(lowerLeft, lowerLeft + new Vector3(+0,0, +1) * quadrantCellSize);
            Debug.DrawLine(lowerLeft + new Vector3(+1,0, +0) * quadrantCellSize, lowerLeft + new Vector3(+1,0, +1) * quadrantCellSize);
            Debug.DrawLine(lowerLeft + new Vector3(+0,0, +1) * quadrantCellSize, lowerLeft + new Vector3(+1,0, +1) * quadrantCellSize);
            //Debug.Log(GetPositionHashMapKey(position) + " " + position);
        }
    
        private static int GetEntityCountInHashMap(NativeMultiHashMap<int, QuadrantData> quadrantMultiHashMap, int hashMapKey) {
            QuadrantData quadrantData;
            NativeMultiHashMapIterator<int> nativeMultiHashMapIterator;
            int count = 0;
            if (quadrantMultiHashMap.TryGetFirstValue(hashMapKey, out quadrantData, out nativeMultiHashMapIterator)) {
                do {
                    count++;
                } while (quadrantMultiHashMap.TryGetNextValue(out quadrantData, ref nativeMultiHashMapIterator));
            }
            return count;
        }
        protected override void OnCreate()
        {
            quadrantMultiHashMap = new NativeMultiHashMap<int, QuadrantData>(0, Allocator.Persistent);
            base.OnCreate();
        }
    
        protected override void OnDestroy() {
            quadrantMultiHashMap.Dispose();
            base.OnDestroy();
        }
    
        protected override void OnUpdate() {
    
            entityQuery = GetEntityQuery(typeof(Translation), typeof(Soldier));
            quadrantMultiHashMap.Clear();
            if (entityQuery.CalculateEntityCount() > quadrantMultiHashMap.Capacity) {
                quadrantMultiHashMap.Capacity = entityQuery.CalculateEntityCount();
            }
    
            Entities.ForEach((Entity entity,in Soldier soldier) =>
            {
                int hashMapKey = GetPositionHashMapKey(soldier.Index);
                quadrantMultiHashMap.Add(hashMapKey, new QuadrantData
                {
                    entity = entity,
                    soldier = soldier,
                });
            }).WithStoreEntityQueryInField(ref entityQuery)
             .ScheduleParallel();
    
            this.CompleteDependency();
        }
    
    }

I recieve this error?

C:\Dev\ECS Massive Battle\Assets\Scripts\QuadrantSystem.cs(74,13): Burst error BC1042: The managed class type Unity.Collections.NativeMultiHashMap2*is not supported. Loading from a non-readonly static fieldQuadrantSystem.quadrantMultiHashMap` is not supported

It won’t let you access it because you are referencing a managed field from inside a job. This is not allowed. Thankfully, solution to this is very simple - make a local alias variable for jobs to copy by value.

var quadrants = quadrantMultiHashMap.AsParallelWriter();
Entities
	.ForEach( ( Entity entity ,in Soldier soldier ) =>
	{
		int hashMapKey = GetPositionHashMapKey(soldier.Index);
		quadrants.Add( hashMapKey , new QuadrantData{ entity = entity, soldier = soldier, });
	} )
	.ScheduleParallel();

If it helps you i access the hashmap by doing this

int hashMapKey = QuadrantSystem.GetPositionHashMapKey(soldierComponent.Index - 1);
QuadrantData quadrantData;
NativeMultiHashMapIterator<int> nativeMultiHashMapIterator;
if (QuadrantSystem.quadrantMultiHashMap.TryGetFirstValue(hashMapKey, out quadrantData, out nativeMultiHashMapIterator))
{
	do
	{
		if (soldierComponent.id != quadrantData.soldier.id)
		{
			if (soldierComponent.Index.x - 1 == quadrantData.soldier.Index.x && soldierComponent.Index.y == quadrantData.soldier.Index.y)
			{
				TargetIsBlocked = true;
			}
		}
	} while (QuadrantSystem.quadrantMultiHashMap.TryGetNextValue(out quadrantData, ref nativeMultiHashMapIterator) && !TargetIsBlocked);
}