@Override
public T unmarshall(String fieldName, Descriptors.FieldDescriptor fieldDescriptor, ProtoStreamReaderImpl reader, CodedInputStream in) throws IOException {
final int expectedTag = WireFormat.makeTag(fieldDescriptor.getNumber(), WireFormat.WIRETYPE_VARINT);
int enumValue;
UnknownFieldSet unknownFieldSet = reader.getUnknownFieldSet();
Object o = unknownFieldSet.consumeTag(expectedTag);
if (o != null) {
enumValue = ((Long) o).intValue();
} else {
while (true) {
int tag = in.readTag();