static void BuildEntity(EGID entityID, Dictionary <Type, ITypeSafeDictionary> @group, Type entityViewType,
                                IEntityBuilder entityBuilder, object[] implementors)
        {
            var entityViewsPoolWillBeCreated = @group.TryGetValue(entityViewType, out var safeDictionary) == false;

            //passing the undefined entityViewsByType inside the entityViewBuilder will allow it to be created with the
            //correct type and casted back to the undefined list. that's how the list will be eventually of the target
            //type.
            entityBuilder.BuildEntityAndAddToList(ref safeDictionary, entityID, implementors);

            if (entityViewsPoolWillBeCreated)
            {
                @group.Add(entityViewType, safeDictionary);
            }
        }