### Question:
ConfigureSocialAuthN extends Task { Map<String, Set<String>> mergeAttributes(Map<String, Set<String>> existingAttrs, Map<String, Set<String>> newAttrs) { Map<String, Set<String>> mergedAttrs = new CaseInsensitiveHashMap(existingAttrs); for (Map.Entry<String, Set<String>> attr : newAttrs.entrySet()) { Set<String> values = attr.getValue(); Set<String> existingValues = mergedAttrs.get(attr.getKey()); if (existingValues == null) { existingValues = new CaseInsensitiveHashSet(); mergedAttrs.put(attr.getKey(), existingValues); } existingValues.addAll(values); } return mergedAttrs; }  @Override String execute(Locale locale, Map params);  }### Answer:
@Test public void testMergeProperties() throws Exception { Map<String, Set<String>> props1 = new HashMap<String, Set<String>>(); props1.put("a", asSet("A")); props1.put("b", asSet("b")); Map<String, Set<String>> props2 = new HashMap<String, Set<String>>(); props2.put("b", asSet("B")); props2.put("c", asSet("C")); Map<String, Set<String>> result = task.mergeAttributes(props1, props2); assertEquals(result.get("a"), asSet("A")); assertEquals(result.get("c"), asSet("C")); assertTrue(result.get("b").contains("b")); assertTrue(result.get("b").contains("B")); }