     }
 
     mutating func asProtobufUnknown(protoFieldNumber: Int) throws -> Data? {
-        return consumed ? nil : Data(buffer: unknown)
+        if consumed {
+            return nil
+        } else {
+            let raw = try scanner.getRawField()
+            return Data(buffer: raw)
+        }
     }
 }
 
 private struct FieldWireTypeLengthDelimited: ProtobufFieldDecoder {
     let buffer: UnsafeBufferPointer<UInt8>
-    let unknown: UnsafeBufferPointer<UInt8>
     let scanner: ProtobufScanner
     var consumed = false
     var unknownOverride: Data?
 
-    init(buffer: UnsafeBufferPointer<UInt8>, unknown: UnsafeBufferPointer<UInt8>, scanner: ProtobufScanner) {
+    init(buffer: UnsafeBufferPointer<UInt8>, scanner: ProtobufScanner) {
         self.buffer = buffer
-        self.unknown = unknown
         self.scanner = scanner
     }
 

    }

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


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