public String toString() {
        StringBuilder sb = new StringBuilder("@");
        Constants.Formatter fmtr = Constants.getFormatter(sb);

        fmtr.append(anno.type.tsym);

        int len = anno.values.length();
        if (len > 0) {          // omit parens for marker annotations
            sb.append('(');
            boolean first = true;
            for (Pair<MethodSymbol, Attribute> val : anno.values) {
                if (!first) {
                    sb.append(", ");
                }
                first = false;

                Name name = val.fst.name;
                if (len > 1 || name != env.names.value) {
                    fmtr.append(name);
                    sb.append('=');
                }
                sb.append(new AnnotationValueImpl(env, val.snd, this));
            }
            sb.append(')');
        }
        return fmtr.toString();
    }