@Override
 public String getDescription(String parameterName) {
   for (PatternAnnotationParameter param : definedAttributes) {
     if (param.getName().equals(parameterName)) {
       return param.getDescription();
     }
   }
   return "";
 }
 @Override
 public boolean isDeprecated(String parameterName) {
   for (PatternAnnotationParameter param : definedAttributes) {
     if (param.getName().equals(parameterName)) {
       return param.isDeprecated();
     }
   }
   return false;
 }
 @Override
 public Class<? extends ValueReference> getExpectedParameterType(AnnotationParameter parameter) {
   PatternAnnotationParameter expectedParameter = null;
   for (PatternAnnotationParameter p : definedAttributes) {
     if (p.getName().equals(parameter.getName())) {
       expectedParameter = p;
     }
   }
   if (expectedParameter == null) {
     return null;
   }
   String type = expectedParameter.getType();
   if (type != null && TYPEMAPPING.containsKey(type)) {
     return TYPEMAPPING.get(type);
   }
   return null;
 }
 @Override
 public String apply(PatternAnnotationParameter input) {
   Preconditions.checkNotNull(input, "input");
   return input.getName();
 }