         switch scanner.fieldWireFormat {
         case .varint:
             let value = try getVarint()
-            let raw = try scanner.getRawField()
-            return FieldWireTypeVarint(varint: value, unknown: raw, scanner: scanner)
+            return FieldWireTypeVarint(varint: value, scanner: scanner)
         case .fixed64:
             let value = try getFixed8()
-            let raw = try scanner.getRawField()
-            return FieldWireTypeFixed64(fixed8: value, unknown: raw, scanner: scanner)
+            return FieldWireTypeFixed64(fixed8: value, scanner: scanner)
         case .lengthDelimited:
             let value = try getBytesRef()
-            let raw = try scanner.getRawField()
-            return FieldWireTypeLengthDelimited(buffer: value, unknown: raw, scanner: scanner)
+            return FieldWireTypeLengthDelimited(buffer: value, scanner: scanner)
         case .startGroup:
             return FieldWireTypeStartGroup(scanner: scanner, protoFieldNumber: fieldNumber)
         case .endGroup:
             throw DecodingError.malformedProtobuf
         case .fixed32:
             let value = try getFixed4()
-            let raw = try scanner.getRawField()
-            return FieldWireTypeFixed32(fixed4: value, unknown: raw, scanner: scanner)
+            return FieldWireTypeFixed32(fixed4: value, scanner: scanner)
         }
     }
 

    }

    mutating func asProtobufUnknown(protoFieldNumber: Int) throws -> Data? {
        return consumed ? nil : Data(buffer: unknown)
    }
}



private struct FieldWireTypeFixed32: ProtobufFieldDecoder {
    let fixed4: [UInt8]
    let scanner: ProtobufScanner
    var consumed = false

    init(fixed4: [UInt8], scanner: ProtobufScanner) {
        self.fixed4 = fixed4
        self.scanner = scanner
    }

