TagEditor { @NonNull public TagEditor addTag(@NonNull String tag) { tagsToRemove.remove(tag); tagsToAdd.add(tag); 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 testAddTag() { editor.addTag("some_tag") .apply(); assertEquals(1, tagsToAdd.size()); assertTrue(tagsToAdd.contains("some_tag")); assertEquals(0, tagsToRemove.size()); assertFalse(clear); }