 /// - parameter data: The input data to unpack.
 /// - parameter count: The number of elements to unpack.
 ///
-/// - returns: An array of `count` elements.
+/// - returns: An array of `count` elements and the not-unpacked remaining data.
 func unpackArray(_ data: Subdata, count: Int, compatibility: Bool) throws -> (value: [MessagePackValue], remainder: Subdata) {
     var values = [MessagePackValue]()
     var remainder = data

///
/// - parameter data: The input data to unpack.
///
/// - returns: A `MessagePackValue`.
public func unpack(_ data: Data, compatibility: Bool = false) throws -> (value: MessagePackValue, remainder: Subdata) {
    return try unpack(Subdata(data: data), compatibility: compatibility)
}

/// Unpacks a data object into a `MessagePackValue`, ignoring excess data.

/// - parameter data: The input data to unpack.
/// - parameter count: The number of elements to unpack.
///
/// - returns: An dictionary of `count` entries and the not-unpacked remaining data.
func unpackMap(_ data: Subdata, count: Int, compatibility: Bool) throws -> (value: [MessagePackValue: MessagePackValue], remainder: Subdata) {
    var dict = [MessagePackValue: MessagePackValue](minimumCapacity: count)
    var lastKey: MessagePackValue? = nil
