             }
             return data
         } else if !consumed {
-            return Data(buffer: unknown)
+            let raw = try scanner.getRawField()
+            return Data(buffer: raw)
         } else {
             return nil
         }


private struct FieldWireTypeVarint: ProtobufFieldDecoder {
    let varint: UInt64
    let unknown: UnsafeBufferPointer<UInt8>
    let scanner: ProtobufScanner
    var consumed = false

    init(varint: UInt64, unknown: UnsafeBufferPointer<UInt8>, scanner: ProtobufScanner) {
        self.varint = varint
        self.unknown = unknown
        self.scanner = scanner
    }


    }

    mutating func asProtobufUnknown(protoFieldNumber: Int) throws -> Data? {
        if consumed {
            return nil
        } else {
            let raw = try scanner.getRawField()
            return Data(buffer: raw)
        }
    }
}

private struct FieldWireTypeLengthDelimited: ProtobufFieldDecoder {
    let buffer: UnsafeBufferPointer<UInt8>
    let scanner: ProtobufScanner
    var consumed = false
    var unknownOverride: Data?

    init(buffer: UnsafeBufferPointer<UInt8>, scanner: ProtobufScanner) {
        self.buffer = buffer
        self.scanner = scanner
    }

