### Question:
CaseInsensitiveMap extends AbstractMap<String, V> implements Serializable { public CaseInsensitiveMap(Map<String, V> map) { this(); putAll(map); } CaseInsensitiveMap(Map<String, V> map);  CaseInsensitiveMap(); static CaseInsensitiveMap<T> from(Map<String, T> map); @Override boolean containsKey(Object key); @Override V get(Object key); @Override V put(String key, V value); @Override V remove(Object key); @Override Set<java.util.Map.Entry<String, V>> entrySet(); @Override String toString();  }### Answer:
@Test public void testCaseInsensitiveMap() { CaseInsensitiveMap<Integer> map = new CaseInsensitiveMap<Integer>(); map.put("apple", 1); map.put("banana", 5); map.put("ORANGE", 7); map.put("Banana", 3); assertEquals(1, (int)map.get("apple")); assertEquals(1, (int)map.get("Apple")); assertEquals(3, (int)map.get("Banana")); assertEquals(7, (int)map.get("orange")); Map<String, Integer> existingMap = new HashMap<String, Integer>(); existingMap.put("apple", 1); existingMap.put("banana", 5); existingMap.put("ORANGE", 7); existingMap.put("Banana", 3); map = new CaseInsensitiveMap<Integer>(existingMap); assertEquals(1, (int)map.get("apple")); assertEquals(1, (int)map.get("Apple")); assertEquals(3, (int)map.get("Banana")); assertEquals(7, (int)map.get("orange")); }