### Question:
FeatureAdminData { private void removeFeatures(Set<String> toRemove, Set<String> features) { if (toRemove != null && features != null) { for (String feature : toRemove) { features.remove(feature); } } } FeatureAdminData();  FeatureAdminData(Set<String> features, Type type); void addFeatures(Set<String> toAdd); void addFeature(String toAdd); void clearFeatures(); void removeFeatures(Set<String> toRemove); void removeFeature(String toRemove); Set<String> getFeatures(); Type getType(); void setType(Type type); @Override boolean equals(Object obj); @Override int hashCode();  }### Answer:
@Test public void testRemoveFeatures() { validateDefaultFeatures(); Set<String> toRemoveWhitelist = Sets.newHashSet(TABS, VIEWS); Set<String> toRemoveBlacklist = Sets.newHashSet(EE); whitelistData.removeFeatures(toRemoveWhitelist); blacklistData.removeFeatures(toRemoveBlacklist); nullData.removeFeatures(toRemoveWhitelist); defaultData.removeFeatures(toRemoveWhitelist); assertEquals(Sets.newHashSet(SETPREFS), whitelistData.getFeatures()); assertEquals(Sets.newHashSet(SELECTION), blacklistData.getFeatures()); assertEquals(Sets.newHashSet(), nullData.getFeatures()); assertEquals(Sets.newHashSet(), defaultData.getFeatures()); }