public static void WriteFieldHeader(int fieldNumber, ProtoBuf.WireType wireType, ProtoWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            if (writer.wireType != ProtoBuf.WireType.None)
            {
                string[] str = new string[] { "Cannot write a ", wireType.ToString(), " header until the ", writer.wireType.ToString(), " data has been written" };
                throw new InvalidOperationException(string.Concat(str));
            }
            if (fieldNumber < 0)
            {
                throw new ArgumentOutOfRangeException("fieldNumber");
            }
            if (writer.packedFieldNumber == 0)
            {
                writer.fieldNumber = fieldNumber;
                writer.wireType    = wireType;
                ProtoWriter.WriteHeaderCore(fieldNumber, wireType, writer);
                return;
            }
            if (writer.packedFieldNumber != fieldNumber)
            {
                throw new InvalidOperationException(string.Concat("Field mismatch during packed encoding; expected ", writer.packedFieldNumber.ToString(), " but received ", fieldNumber.ToString()));
            }
            ProtoBuf.WireType wireType1 = wireType;
            switch (wireType1)
            {
            case ProtoBuf.WireType.Variant:
            case ProtoBuf.WireType.Fixed64:
            {
                writer.fieldNumber = fieldNumber;
                writer.wireType    = wireType;
                return;
            }

            default:
            {
                if (wireType1 == ProtoBuf.WireType.Fixed32 || wireType1 == ProtoBuf.WireType.SignedVariant)
                {
                    writer.fieldNumber = fieldNumber;
                    writer.wireType    = wireType;
                    return;
                }
                throw new InvalidOperationException(string.Concat("Wire-type cannot be encoded as packed: ", wireType.ToString()));
            }
            }
        }