Appendix A. IntelHex Errors Hierarchy
-------------------------------------

* ``IntelHexError`` - base error

  * ``HexReaderError`` - general hex reader error

    * ``AddressOverlapError`` - data for the same address overlap
    * ``HexRecordError``      - hex record decoder base error

      * ``RecordLengthError``    - record has invalid length
      * ``RecordTypeError``      - record has invalid type (RECTYP)
      * ``RecordChecksumError``  - record checksum mismatch
      * ``EOFRecordError``             - invalid EOF record (type 01)
      * ``ExtendedAddressRecordError`` - extended address record base error

        * ``ExtendedSegmentAddressRecordError`` - invalid extended segment address record (type 02)
        * ``ExtendedLinearAddressRecordError``  - invalid extended linear address record (type 04)

      * ``StartAddressRecordError``    - start address record base error

        * ``StartSegmentAddressRecordError``    - invalid start segment address record (type 03)
        * ``StartLinearAddressRecordError``     - invalid start linear address record (type 05)
        * ``DuplicateStartAddressRecordError``  - start address record appears twice
        * ``InvalidStartAddressValueError``     - invalid value of start addr record

  * ``BadAccess16bit`` - not enough data to read 16 bit value
  * ``NotEnoughDataError`` - not enough data to read N contiguous bytes
  * ``EmptyIntelHexError`` - requested operation cannot be performed with empty object
