public void Unmarshal(IProtoStruct s) { while (SpaceLeft > 0) { var tag = ReadVarint32(); int fieldNumber = -1; WireFormat.WireType type = WireFormat.WireType.None; WireFormat.ParseWireTag(tag, ref fieldNumber, ref type); if (s.Unmarshal(this, fieldNumber, type)) { SkipField(type); } } }