private void RefreshDelegateBasedElementVisibility()
{
foreach (var kvp in mMembersWithOptionalVisibility)
{
var member = kvp.Key;
var category = member.Category;
bool shouldBeVisible = !kvp.Value(member);
bool isVisible = category.Members.Contains(member);
if (isVisible && !shouldBeVisible)
{
category.Members.Remove(kvp.Key);
}
else if (!isVisible && shouldBeVisible)
{
category.Members.Add(member);
}
}
}