docs: def _unpack_annotation_val(unpacker, cpool):
      """
      tag, data tuple of an annotation
      """
  
      tag, = unpacker.unpack_struct(_B)
      tag = chr(tag)
  
      if tag in 'BCDFIJSZs':
          data, = unpacker.unpack_struct(_H)
  
      elif tag == 'e':
          data = unpacker.unpack_struct(_HH)
  
      elif tag == 'c':
          data, = unpacker.unpack_struct(_H)
  
      elif tag == '@':
          data = JavaAnnotation(cpool)
          data.unpack(unpacker)
  
      elif tag == '[':
          data = list()
          count, = unpacker.unpack_struct(_H)
          for _i in range(0, count):
              data.append(_unpack_annotation_val(unpacker, cpool))
  
      else:
          raise Unimplemented("Unknown tag {}".format(tag))
  
      return tag, data