### Question:
DefaultMetaDataInfo implements MetaDataInfo { @Override public boolean hasTypeForSpecialKey(SpecialKey key) { return mySpecialTypeToKeyMap.get(key) != null; } protected  DefaultMetaDataInfo(DefaultMetaDataInfo source);  DefaultMetaDataInfo();  DefaultMetaDataInfo(List<String> keyNames);  DefaultMetaDataInfo(List<String> origkeyNames, List<String> keyNames); static void clearPreferencesRegistryEntryForNumericCache(PreferencesRegistry prefsRegistry, String dtiKey,
            Object source); static void clearPreferencesRegistryEntryForNumericCache(Toolbox tb, String dtiKey, Object source); static PropertyArrayDescriptor generatePropertyArrayDescriptor(List<String> keyNames,
            Map<String, Class<?>> keyClassTypeMap); @Override void setSpecialKeyDetector(ColumnTypeDetector specialKeyDetector); @Override boolean isSpecialKeyExaminationRequired(); @Override void setSpecialKeyExaminationRequired(boolean specialKeyExaminationRequired); @Override boolean addKey(String key, Class<?> keyClass, Object source); @Override void addUserKey(String key); @Override boolean removeKey(String key, Class<?> keyClass, Object source); NumericDetermination checkKeyNumericDetermination(Toolbox tb, String key); void copyKeys(MetaDataInfo other, Object source); void copyKeysToOriginalKeys(); @Override String getAltitudeKey(); DataTypeInfo getDataTypeInfo(); @Override String getGeometryColumn(); @Override Class<?> getKeyClassType(String key); @Override Map<String, Class<?>> getKeyClassTypeMap(); @Override int getKeyCount(); @Override String getKeyForSpecialType(SpecialKey specialType); @Override int getKeyIndex(String key); @Override List<String> getKeyNames(); @Override String getLatitudeKey(); @Override String getLineOfBearingKey(); @Override String getLongitudeKey(); @Override List<String> getNumericKeyList(Toolbox tb); @Override String getOrientationKey(); @Override List<String> getOriginalKeyNames(); @Override PropertyArrayDescriptor getPropertyArrayDescriptor(); @Override String getSemiMajorAxisKey(); @Override String getSemiMinorAxisKey(); @Override Map<String, SpecialKey> getSpecialKeyToTypeMap(); @Override SpecialKey getSpecialTypeForKey(String key); @Override String getTimeKey(); @Override List<String> getUserKeys(); @Override boolean hasKey(String key); @Override boolean hasTypeForSpecialKey(SpecialKey key); @Override boolean isKeyNumeric(Toolbox tb, String key); @Override void removeSpecialKey(SpecialKey specialType, Object source); @Override void removeUserKey(String key); @Override void resetKeyNumeric(Toolbox tb, String key); @Override void resetNumericMapForAllKeys(Toolbox tb); @Override void setAltitudeKey(String key, Object source); @Override void setDataTypeInfo(DataTypeInfo dti); @Override void setGeometryColumn(String geometryColumn); @Override void setKeyNumeric(String key); @Override void setSpecialKey(String key, SpecialKey specialType, Object source); @Override boolean isAutoDetectColumnTypes(); @Override void setAutoDetectColumnTypes(boolean autoDetectColumnTypes); @Override String toString(); String toStringMultiLine(int indentLevel); String toStringKeys(); @Override StringProperty uniqueIdentifierKeyProperty(); @Override MetaDataInfo createCopy();  }### Answer:
@Test public void testHasTypeForSpecialKey() { DefaultMetaDataInfo metaData = new DefaultMetaDataInfo(); metaData.addKey("speed", Double.class, this); metaData.setSpecialKey("speed", new SpeedKey(SpeedUnit.KILOMETERS_PER_HOUR), this); Assert.assertTrue(metaData.hasTypeForSpecialKey(new SpeedKey(SpeedUnit.KILOMETERS_PER_HOUR))); Assert.assertTrue(metaData.hasTypeForSpecialKey(SpeedKey.DEFAULT)); Assert.assertFalse(metaData.hasTypeForSpecialKey(HeadingKey.DEFAULT)); }