public List<JavaSymbolName> getAttributeNames() {
   final List<JavaSymbolName> result = new ArrayList<JavaSymbolName>();
   for (AnnotationAttributeValue<?> value : attributes) {
     result.add(value.getName());
   }
   return result;
 }
 /**
  * Constructor
  *
  * @param annotationType the type of annotation for which these are the metadata (required)
  * @param attributeValues the given annotation's values; can be <code>null</code>
  */
 DefaultAnnotationMetadata(
     final JavaType annotationType, final List<AnnotationAttributeValue<?>> attributeValues) {
   Assert.notNull(annotationType, "Annotation type required");
   this.annotationType = annotationType;
   this.attributes = new ArrayList<AnnotationAttributeValue<?>>();
   this.attributeMap = new HashMap<JavaSymbolName, AnnotationAttributeValue<?>>();
   if (attributeValues != null) {
     this.attributes.addAll(attributeValues);
     for (final AnnotationAttributeValue<?> value : attributeValues) {
       this.attributeMap.put(value.getName(), value);
     }
   }
 }