 		let version: UInt8
 		private var flags: Flags
 		var hasCRC: Bool { flags.hasCRC }
-		var compression: CompressionAlgorithm? { flags.compression }
+		var compression: CompressionAlgorithm { flags.compression }
 		var dataOffset: Int { 8 + (flags.hasCRC ? 4 : 0) }
 
 		init?<T: DataProtocol>(rawValue: T) where T.Index == Int {


		private struct Flags: RawRepresentable {
			var rawValue: UInt8 {
				return (hasCRC ? hasCRCMask : 0) | UInt8(compression != nil ? compression!.rawValue + 1 : 0)
			}

			var hasCRC: Bool
			var compression: CompressionAlgorithm?

			private let hasCRCMask: UInt8 = 1 << 3
			private let compressionMask: UInt8 = 0x7

		case unknownDataVersion
	}

	/// Identical values to `NSData.CompressionAlgorithm + 1`.
	enum CompressionAlgorithm: UInt8 {
		case none = 0
		case lzfse = 1
		case lz4 = 2
		case lzma = 3
		case zlib = 4
	}

	private struct Header: RawRepresentable, CustomDebugStringConvertible {
