### Question:
AnnotationType implements Serializable { public Map<String, Serializable> describe() { Map<String, Serializable> map = new HashMap<String, Serializable>(); List<String> ids = getModelPropertyIds(); for ( String id : ids ) { try { Object value = getModelPropertyValueById( id ); if ( value != null && isSerializable( value.getClass() ) ) { map.put( id, (Serializable) value ); } } catch ( Exception e ) { getLogger().warning( "Unable to set value for id: " + id ); } } return map; }  List<String> getModelPropertyIds(); void setModelPropertyValueById( String id, Object value ); Object getModelPropertyValueById( String id ); Object getModelPropertyValueByName( String name ); Class getModelPropertyNameClassType( String name ); List<String> getModelPropertyNames(); List<ModelProperty> getModelProperties(); void setModelPropertyByName( String modelPropertyName, Object value ); Map<String, Serializable> describe(); void populate( final Map<String, Serializable> propertiesMap ); void iterateProperties( KeyValueClosure closure ); @Override boolean equals( Object obj ); @Override int hashCode(); abstract boolean apply(
      final ModelerWorkspace workspace, final IMetaStore metaStore ); abstract boolean apply( final Document schema ); abstract void validate(); abstract ModelAnnotation.Type getType(); abstract String getSummary(); abstract String getName(); abstract String getField(); boolean equalsLogically( AnnotationType obj );  }### Answer:
@Test public void testDescribe() { CreateMeasure createMeasure = new CreateMeasure(); createMeasure.setAggregateType( AggregationType.AVERAGE ); createMeasure.setFormatString( "SSSS" ); createMeasure.setName( "avg" ); createMeasure.setDescription( null ); assertTrue( createMeasure.describe().containsKey( "name" ) ); assertFalse( createMeasure.describe().containsKey( "description" ) ); assertEquals( createMeasure.describe().get( "aggregateType" ), AggregationType.AVERAGE ); }