void WriteElement(object obj, int fieldNumber, bool pack, ProtoWriter dest, bool isFirst) { if (_protoCompatibility) { if (!pack) { ProtoWriter.WriteFieldHeaderBegin(fieldNumber, dest); } else { ProtoWriter.WriteFieldHeaderBeginIgnored(dest); } } else { // this can only be supported when wire type of elements will be the same each time and no field cancellations // we write only first header to get wire type // the difference between standard pack and this // is that we write wiretype here at the first time if (!pack || isFirst) { ProtoWriter.WriteFieldHeaderBegin(fieldNumber, dest); } else { ProtoWriter.WriteFieldHeaderBeginIgnored(dest); } } _tail.Write(obj, dest); }