### Question:
ValueMatcher implements AttributeMatcher { @Override public boolean matches(List<Tag> tags) { for (int i = 0, n = tags.size(); i < n; ++i) { if (this.values.contains(tags.get(i).value)) { return true; } } return false; } ValueMatcher(List<String> values); @Override boolean isCoveredBy(AttributeMatcher attributeMatcher); @Override boolean matches(List<Tag> tags);  }### Answer:
@Test public void matchesTest() { Tag tag1 = new Tag(null, VALUE1); Tag tag2 = new Tag(null, VALUE2); AttributeMatcher attributeMatcher = new ValueMatcher(Arrays.asList(VALUE1)); Assert.assertTrue(attributeMatcher.matches(Arrays.asList(tag1))); Assert.assertFalse(attributeMatcher.matches(Arrays.asList(tag2))); }