I am not sure why it was not done, but the remove operation should return if the item was actually removed or not, because the info is available. e.g. Updating it to this:
bool RemoveItem(T value) { int remove_index = Find(value); if ( remove_index >= 0 ) { Remove(remove_index); return true; } return false; }