### Question:
ExtraColumnsMetaDataProvider implements MetaDataProvider { @Override public void removeKey(String key) { if (myExtraColumns.containsKey(key)) { myExtraColumns.remove(key); } if (myOriginal.hasKey(key)) { myOriginal.removeKey(key); } } protected  ExtraColumnsMetaDataProvider(ExtraColumnsMetaDataProvider source);  ExtraColumnsMetaDataProvider(MetaDataProvider original, Map<String, Object> extraColumns); @Override List<String> getKeys(); @Override Object getValue(String key); @Override List<Object> getValues(); @Override boolean hasKey(String key); @Override boolean keysMutable(); @Override void removeKey(String key); @Override boolean setValue(String key, Serializable value); @Override boolean valuesMutable(); Map<String, Object> getExtraColumns(); MetaDataProvider getOriginal(); @Override MetaDataProvider createCopy(DataTypeInfo newDatatype);  }### Answer:
@Test public void testRemoveKey() { EasyMockSupport support = new EasyMockSupport(); MetaDataProvider original = support.createMock(MetaDataProvider.class); EasyMock.expect(original.hasKey(EasyMock.cmpEq(ourOriginalColumns[0]))).andReturn(true); original.removeKey(EasyMock.cmpEq(ourOriginalColumns[0])); EasyMock.expect(original.hasKey(EasyMock.cmpEq(ourOriginalColumns[1]))).andReturn(true); original.removeKey(EasyMock.cmpEq(ourOriginalColumns[1])); EasyMock.expect(original.hasKey(EasyMock.cmpEq(ourOriginalColumns[0]))).andReturn(false); EasyMock.expect(original.hasKey(EasyMock.cmpEq(ourOriginalColumns[1]))).andReturn(false); EasyMock.expect(original.hasKey(EasyMock.cmpEq(ourExtraColumns[2]))).andReturn(false).times(2); Map<String, Object> extras = createExtraColumns(); support.replayAll(); ExtraColumnsMetaDataProvider provider = new ExtraColumnsMetaDataProvider(original, extras); provider.removeKey(ourOriginalColumns[0]); provider.removeKey(ourOriginalColumns[1]); provider.removeKey(ourExtraColumns[2]); assertFalse(provider.hasKey(ourOriginalColumns[0])); assertFalse(provider.hasKey(ourOriginalColumns[1])); assertFalse(provider.hasKey(ourExtraColumns[2])); support.verifyAll(); }