### Question:
CaseInsensitiveMap extends ForwardingMap<String, V> { @Override public V put(final String key, final V value) { super.put(key,value); final String oldKey = addKey(key); V result=null; if(oldKey!=null) { result=super.remove(oldKey); } return result; } private  CaseInsensitiveMap(final LinkedHashMap<String,V> delegate, final Map<String,String> caseInsensitiveKeys, final Locale locale);   CaseInsensitiveMap();   CaseInsensitiveMap(final int initialCapacity);   CaseInsensitiveMap(final Locale locale);   CaseInsensitiveMap(final int initialCapacity, final Locale locale); @Override V put(final String key, final V value); @Override void putAll(final Map<? extends String, ? extends V> map); @Override boolean containsKey(final Object key); @Override V get(final Object key); @Override V remove(final Object key); @Override void clear(); @Override int hashCode(); @Override boolean equals(final Object other);  }### Answer:
@Test public void putIgnoresKeyCase() throws Exception { final CaseInsensitiveMap<String> sut=new CaseInsensitiveMap<String>(); assertThat(sut.put("KEY","value"),nullValue()); assertThat(sut.put("key","otherValue"),equalTo("value")); }