### Question:
BaseSubsystem extends AnnotatedSubsystem<M> { @Request(AddTagsRequest.NAME) public void addTags( @Named(AddTagsRequest.ATTR_TAGS) Set<String> tags, SubsystemContext<M> context ) { Set<String> currentTags = context.model().getAttribute(TYPE_STRING_SET, Capability.ATTR_TAGS, ImmutableSet.<String>of()); Set<String> newTags = new HashSet<>(currentTags); newTags.addAll(tags); context.model().setAttribute(Capability.ATTR_TAGS, newTags); }  @Inject void setDefinitionRegistry(DefinitionRegistry registry); @Request(Capability.CMD_GET_ATTRIBUTES) MessageBody getAttributes(
         @Named("names") Set<String> names,
         SubsystemContext<M> context
   ); @Request(Capability.CMD_SET_ATTRIBUTES) MessageBody setAttributes(PlatformMessage message, SubsystemContext<M> context); @Request(AddTagsRequest.NAME) void addTags(
         @Named(AddTagsRequest.ATTR_TAGS) Set<String> tags,
         SubsystemContext<M> context
   ); @Request(RemoveTagsRequest.NAME) void removeTags(
         @Named(RemoveTagsRequest.ATTR_TAGS) Set<String> tags,
         SubsystemContext<M> context
   );  }### Answer:
@Test public void testAddTags() { Set<String> tags = ImmutableSet.of("tag1", "tag2", "tag3"); MessageReceivedEvent event = request( AddTagsRequest .builder() .withTags(tags) .build() ); subsystem.onEvent(event, context); assertEquals(1, responses.getValues().size()); { MessageBody response = responses.getValue(); assertEquals(AddTagsResponse.instance(), response); assertEquals(tags, model.getAttribute(Capability.ATTR_TAGS)); } }