public void visitAnnotation(Annotation e) {
append("@", e.getAnnotationClass());
boolean first = true;
boolean hasDefault = e.getDefaultArgument() != null;
boolean hasNamed = !e.getNamedArguments().isEmpty();
if (hasDefault || hasNamed) {
append("(");
if (hasDefault) {
if (hasNamed)
append("value = ");
append(e.getDefaultArgument());
first = false;
}
for (Map.Entry<String, Expression> entry : e.getNamedArguments().entrySet()) {
if (!first)
append(", ");
append(entry.getKey(), " = ", entry.getValue());
first = false;
}
append(")");
}
space();
}