TagEditor { @NonNull public TagEditor removeTags(@NonNull Set<String> tags) { tagsToAdd.removeAll(tags); tagsToRemove.addAll(tags); return this; } @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) protected  TagEditor(); @NonNull TagEditor addTag(@NonNull String tag); @NonNull TagEditor addTags(@NonNull Set<String> tags); @NonNull TagEditor removeTag(@NonNull String tag); @NonNull TagEditor removeTags(@NonNull Set<String> tags); @NonNull TagEditor clear(); void apply();  }
@Test public void testRemoveTags() { Set<String> tagSet = new HashSet<>(); tagSet.add("set_tag"); tagSet.add("another_set_tag"); editor.removeTag("some_tag") .removeTags(tagSet) .removeTag("some_other_tags") .apply(); assertEquals(4, tagsToRemove.size()); assertTrue(tagsToRemove.contains("some_tag")); assertTrue(tagsToRemove.contains("some_other_tags")); assertTrue(tagsToRemove.contains("set_tag")); assertTrue(tagsToRemove.contains("another_set_tag")); assertEquals(0, tagsToAdd.size()); assertFalse(clear); }