         /// Object with input data which supports convenient work with bit shifts.
         var pointerData = DataWithPointer(data: data, bitOrder: .reversed)
 
-        // Looking for the end of central directory record.
-        pointerData.index = pointerData.size - 22
+        // Looking for the end of central directory (CD) record.
+        var zip64RecordExists = false
+
+        pointerData.index = pointerData.size - 22 // 22 is a minimum amount which could take end of CD record.
         while true {
             let signature = pointerData.uint64FromAlignedBytes(count: 4)
             if signature == 0x06054b50 {

            }
            pointerData.index -= 5
        }
        let diskNumber = pointerData.uint64FromAlignedBytes(count: 2)
        let centralDirectoryDiskNumber = pointerData.uint64FromAlignedBytes(count: 2)
        guard diskNumber == centralDirectoryDiskNumber
            else { throw ZipError.WrongCentralDirectoryDisk }


        return [:]
    }

public enum ZipError: Error {
    case NotFoundCentralDirectoryEnd
    case WrongCentralDirectoryDisk
    case WrongZip64LocatorSignature
    case WrongZip64EndCentralDirectorySignature
    case WrongVersion
}

public class ZipContainer {
