//todo validate type is compatible with readObject
int expectedTag = WireFormat.makeTag(fd.getNumber(), fd.getType().getWireType());
Object o = messageContext.unknownFieldSet.consumeTag(expectedTag);
if (o != null) {
ByteString byteString = (ByteString) o;
return readNestedObject(fieldName, fd, clazz, byteString.newCodedInput(), byteString.size());
}
while (true) {
int tag = messageContext.in.readTag();
if (tag == 0) {