public void CheckboxClicked(TId selectedId, object?value)
    {
        if ((bool?)value == true)
        {
            if (!SelectedIds.Contains(selectedId))
            {
                SelectedIds.Add(selectedId);
            }
        }
        else if (SelectedIds.Contains(selectedId))
        {
            SelectedIds.Remove(selectedId);
        }

        StateHasChanged();
    }
        private void RemoveFromSelection([NotNull] EntityHierarchyElementViewModel element)
        {
            lock (LockObject)
            {
                SelectedIds.Remove(element.Id);

                // Remove the root entity from the selected root entities
                if (SelectedRootIds.Remove(element.Id) && element.IsLoaded)
                {
                    // Ensure all children that are selected are properly added to the selected root collection
                    foreach (var child in element.TransformChildren.SelectDeep(x => x.TransformChildren).Where(x => SelectedIds.Contains(x.Id)))
                    {
                        // Check if one of its parents is in the selection
                        var parent = child.TransformParent;
                        while (parent != element && parent != null)
                        {
                            if (SelectedIds.Contains(parent.Id))
                            {
                                break;
                            }

                            parent = parent.TransformParent;
                        }

                        // If so, the SelectedRootIds collection does not need to be updated.
                        if (parent != element)
                        {
                            return;
                        }

                        // Otherwise, it's a new root entity in the selection.
                        SelectedRootIds.Add(child.Id);
                    }
                }
            }
        }