### Question:
EllipseSemiMinorAxisKey extends AbstractSpecialKey implements SpecialColumnDetector { @Override public boolean markSpecialColumn(MetaDataInfo metaData, String columnName) { boolean wasDetected = false; if (!metaData.hasTypeForSpecialKey(EllipseSemiMinorAxisKey.DEFAULT)) { SpecialKey specialKey = detectColumn(columnName); if (specialKey != null) { metaData.setSpecialKey(columnName, specialKey, metaData); wasDetected = true; } } return wasDetected; } EllipseSemiMinorAxisKey();  EllipseSemiMinorAxisKey(Class<? extends Length> semiMinorUnit); @Override boolean markSpecialColumn(MetaDataInfo metaData, String columnName); @Override SpecialKey detectColumn(String columnName); @SuppressWarnings("unchecked") Class<? extends Length> getAltitudeUnit(); static Class<? extends Length> detectUnit(String columnName); static final EllipseSemiMinorAxisKey DEFAULT; }### Answer:
@Test public void testMarkSpecialColumn() { DefaultMetaDataInfo metaData = new DefaultMetaDataInfo(); String column = "Semi-Minor 95 (km)"; metaData.addKey(column, Double.class, this); EllipseSemiMinorAxisKey.DEFAULT.markSpecialColumn(metaData, column); EllipseSemiMinorAxisKey actual = (EllipseSemiMinorAxisKey)metaData.getSpecialTypeForKey(column); EllipseSemiMinorAxisKey expected = new EllipseSemiMinorAxisKey(Kilometers.class); Assert.assertEquals(expected, actual); Assert.assertEquals(expected.getKeyUnit(), actual.getKeyUnit()); }