private int readAnnotationValues(int v, final char[] buf,
                                     final boolean named, final AnnotationVisitor av) {
        int i = readUnsignedShort(v);
        v += 2;
        if (named) {
            for (; i > 0; --i) {
                v = readAnnotationValue(v + 2, buf, readUTF8(v, buf), av);
            }
        } else {
            for (; i > 0; --i) {
                v = readAnnotationValue(v, buf, null, av);
            }
        }
        if (av != null) {
            av.visitEnd();
        }
        return v;
    }
private int readAnnotationValues ( int v , final char [ ] buf , final boolean named , final AnnotationVisitor av ) { int i = readUnsignedShort ( v ) ; v += 2 ; if ( named ) { for ( ; i > 0 ; -- i ) { v = readAnnotationValue ( v + 2 , buf , readUTF8 ( v , buf ) , av ) ; } } else { for ( ; i > 0 ; -- i ) { v = readAnnotationValue ( v , buf , null , av ) ; } } if ( av != null ) { av . visitEnd ( ) ; } return v ; }
Reads the values of an annotation and makes the given visitor visit them.

@param v     the start offset in {@link #b b} of the values to be read
(including the unsigned short that gives the number of
values).
@param buf   buffer to be used to call {@link #readUTF8 readUTF8},
{@link #readClass(int, char[]) readClass} or {@link #readConst
readConst}.
@param named if the annotation values are named or not.
@param av    the visitor that must visit the values.
@return the end offset of the annotation values.