docs: def info(self):
          """Return a string of human readable information about the binary
          file.
  
          .. code-block:: python
  
             >>> print(binfile.info())
             Data ranges:
  
                 0x00000100 - 0x00000140 (64 bytes)
  
          """
  
          info = ''
  
          if self._header is not None:
              if self._header_encoding is None:
                  header = ''
  
                  for b in bytearray(self.header):
                      if chr(b) in string.printable:
                          header += chr(b)
                      else:
                          header += '\\x{:02x}'.format(b)
              else:
                  header = self.header
  
              info += 'Header:                  "{}"\n'.format(header)
  
          if self.execution_start_address is not None:
              info += 'Execution start address: 0x{:08x}\n'.format(
                  self.execution_start_address)
  
          info += 'Data ranges:\n\n'
  
          for address, data in self._segments:
              minimum_address = address
              size = len(data)
              maximum_address = (minimum_address + size // self.word_size_bytes)
              info += 4 * ' '
              info += '0x{:08x} - 0x{:08x} ({})\n'.format(
                  minimum_address,
                  maximum_address,
                  format_size(size, binary=True))
  
          return info