### Question:
ParametersHolder implements Map<String, Object> { protected <T> T retrieveParameter(String name, Class<T> targetClass) throws ClassCastException { return retrieveParameter(name, targetClass, null); } ParametersHolder();  ParametersHolder(Map<String, Object> delegate); @Override int size(); @Override @XmlTransient boolean isEmpty(); @Override boolean containsKey(Object key); @Override boolean containsValue(Object value); @Override Object get(Object key); @Override Object put(String key, Object value); @Override Object remove(Object key); @Override void putAll(Map<? extends String, ?> m); @Override void clear(); @Override Set<String> keySet(); @Override Collection<Object> values(); @Override Set<Entry<String, Object>> entrySet(); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object o);  }### Answer:
@Test(dataProvider = "createTestCases") public <T> void testRetrieveParameter(String key, Object value, Class<T> expectedClass, T expectedValue) { ParametersHolder holder = new ParametersHolder(ImmutableMap.<String, Object>builder() .put(key, value) .build()); assertEquals(holder.retrieveParameter(key, expectedClass, null), expectedValue); }