@SuppressWarnings("unchecked") public static Object parseMemberValue(Class<?> memberType,ByteBuffer buf,ConstantPool constPool,Class<?> container){
  Object result=null;
  int tag=buf.get();
switch (tag) {
case 'e':
    return parseEnumValue((Class<? extends Enum<?>>)memberType,buf,constPool,container);
case 'c':
  result=parseClassValue(buf,constPool,container);
break;
case '@':
result=parseAnnotation(buf,constPool,container,true);
break;
case '[':
return parseArray(memberType,buf,constPool,container);
default :
result=parseConst(tag,buf,constPool);
}
if (!(result instanceof ExceptionProxy) && !memberType.isInstance(result)) result=new AnnotationTypeMismatchExceptionProxy(result.getClass() + "[" + result+ "]");
return result;
}

@ SuppressWarnings ( "unchecked" ) public static Object parseMemberValue ( Class < ? > memberType , ByteBuffer buf , ConstantPool constPool , Class < ? > container ) { Object result = null ; int tag = buf . get ( ) ; switch ( tag ) { case 'e' : return parseEnumValue ( ( Class < ? extends Enum < ? > > ) memberType , buf , constPool , container ) ; case 'c' : result = parseClassValue ( buf , constPool , container ) ; break ; case '@' : result = parseAnnotation ( buf , constPool , container , true ) ; break ; case '[' : return parseArray ( memberType , buf , constPool , container ) ; default : result = parseConst ( tag , buf , constPool ) ; } if ( ! ( result instanceof ExceptionProxy ) && ! memberType . isInstance ( result ) ) result = new AnnotationTypeMismatchExceptionProxy ( result . getClass ( ) + "[" + result + "]" ) ; return result ; }
parses the annotation member value at the current position in the specified byte buffer , resolving constant references in the specified constant pool . the cursor of the byte buffer must point to a " member_value structure " as described in the runtimevisibleannotations_attribute : member_value { u1 tag ; union { u2 const_value_index ; { u2 type_name_index ; u2 const_name_index ; } enum_const_value ; u2 class_info_index ; annotation annotation_value ; { u2 num_values ; member_value values [ num_values ] ; } array_value ; } value ; } the member must be of the indicated type . if it is not , this method returns an annotationtypemismatchexceptionproxy .
