// ** keep this block in sync ** (end)

        int GetOrAddHeadIdIndex(int objectInstanceId)
        {
            if (!m_HeadIdIndices.TryGetValue(objectInstanceId, out var headIdIndex))
            {
                if (!m_FreeHeadIds.IsEmpty)
                {
                    int end = m_FreeHeadIds.Length - 1;
                    headIdIndex           = m_FreeHeadIds[end];
                    m_FreeHeadIds.Length -= 1;
                }
                else
                {
                    headIdIndex = m_HeadIdCount++;
                };
                m_HeadIdIndices.Add(objectInstanceId, headIdIndex);

                var headIdsCapacity = headIdIndex + 1;
                if (MultiList.CalcExpandCapacity(m_Entities.HeadIds.Length, ref headIdsCapacity))
                {
                    m_Entities.SetHeadIdsCapacity(headIdsCapacity);
                    m_LogEvents.SetHeadIdsCapacity(headIdsCapacity);
                }
            }

            return(headIdIndex);
        }
        int GetOrAddHybridHeadIdIndex(GameObject gameObject)
        {
            if (!m_NewHybridHeadIdIndices.TryGetValue(gameObject, out var headIdIndex))
            {
                headIdIndex = m_NewHybridHeadIdIndices.Count;
                m_NewHybridHeadIdIndices.Add(gameObject, headIdIndex);

                var headIdsCapacity = headIdIndex + 1;
                if (MultiList.CalcExpandCapacity(m_HybridTypes.HeadIds.Length, ref headIdsCapacity))
                {
                    m_HybridTypes.SetHeadIdsCapacity(headIdsCapacity);
                }
            }

            return(headIdIndex);
        }