code: def test_add_and_remove_tags(self, container: MetadataContainer):
      remaining_tag1 = fake.unique.word()
      remaining_tag2 = fake.unique.word()
      to_remove_tag1 = fake.unique.word()
      to_remove_tag2 = fake.unique.word()
  
      container.sync()
      if container.exists(self.neptune_tags_path):
          container[self.neptune_tags_path].clear()
      container[self.neptune_tags_path].add(remaining_tag1)
      container[self.neptune_tags_path].add(
          [to_remove_tag1, remaining_tag2]
      )
      container[self.neptune_tags_path].remove(to_remove_tag1)
      container[self.neptune_tags_path].remove(
          to_remove_tag2
      )  # remove non existing tag
      container.sync()
  
      assert container[self.neptune_tags_path].fetch() == {
          remaining_tag1,
          remaining_tag2,
      }
  
imports: import random
  from datetime import datetime, timezone
  import pytest
  from neptune.metadata_containers import MetadataContainer
  from tests.e2e.base import AVAILABLE_CONTAINERS, BaseE2ETest, fake
label_desc: Use image node_id 2 for calling the TestStringSet obj's underlying member method code with example usage: obj.test_add_and_remove_tags(container) without return types