protected override void OnValidate()
    {
        base.OnValidate();

        // Remove any components that no longer belong to this context.
        for (var i = _components.Count - 1; i >= 0; i--)
        {
            var index = ExampleComponentsLookup.GetComponentIndex(_components[i]);
            if (index == -1)
            {
                _components.RemoveAt(i);
            }
        }
    }
    /// <summary>
    /// Applies all components in the blueprint to <paramref name="entity"/>.
    /// </summary>
    /// <param name="entity"></param>
    public void ApplyToEntity(ExampleEntity entity)
    {
        for (var i = 0; i < _components.Count; i++)
        {
            var component = _components[i];
            if (_components[i] == null)
            {
                continue;
            }

            var index = ExampleComponentsLookup.GetComponentIndex(component);
            if (index != -1)
            {
                entity.CopyComponentTo(component);
            }
            else
            {
                Debug.LogWarningFormat(
                    JCMG.EntitasRedux.RuntimeConstants.COMPONENT_INDEX_DOES_NOT_EXIST_FOR_TYPE_FORMAT,
                    component.GetType(),
                    typeof(ExampleComponentsLookup));
            }
        }
    }