/// <summary>
        /// Filter what rows are included in the list based on the value of includeRemovedUsers.
        /// </summary>
        /// <param name="row">The row to examine.</param>
        /// <returns>False if IncludeRemovedUsers is false and the user has been removed; true otherwise.</returns>
        protected override bool Filter(DataRow row)
        {
            RightsHolderRow rightsHolderRow = null;

            UserRow[] userRow;

            if (row is RightsHolderRow)
            {
                rightsHolderRow = row as RightsHolderRow;
            }
            else if (row is EntityRow)
            {
                EntityRow entityRow = row as EntityRow;

                if (entityRow.GetRightsHolderRows().Length != 0)
                {
                    rightsHolderRow = entityRow.GetRightsHolderRows()[0];
                }
            }
            else
            {
                throw new RowNotHandledException("row isn't the right kind of row");
            }

            userRow = rightsHolderRow.GetUserRows();

            return(this.includeRemovedUsers || userRow.Length == 0 || !userRow[0].IsRemoved);
        }