code: def decompile(self, data, ttFont):
      version, nTables = struct.unpack(">HH", data[:4])
      apple = False
      if (len(data) >= 8) and (version == 1):
          # AAT Apple's "new" format. Hm.
          version, nTables = struct.unpack(">LL", data[:8])
          self.version = fi2fl(version, 16)
          data = data[8:]
          apple = True
      else:
          self.version = version
          data = data[4:]
      self.kernTables = []
      for i in range(nTables):
          if self.version == 1.0:
              # Apple
              length, coverage, subtableFormat = struct.unpack(
                  ">LBB", data[:6]
              )
          else:
              # in OpenType spec the "version" field refers to the common
              # subtable header; the actual subtable format is stored in
              # the 8-15 mask bits of "coverage" field.
              # This "version" is always 0 so we ignore it here
              _, length, subtableFormat, coverage = struct.unpack(
                  ">HHBB", data[:6]
              )
              if nTables == 1 and subtableFormat == 0:
                  # The "length" value is ignored since some fonts
                  # (like OpenSans and Calibri) have a subtable larger than
                  # its value.
                  (nPairs,) = struct.unpack(">H", data[6:8])
                  calculated_length = (nPairs * 6) + 14
                  if length != calculated_length:
                      log.warning(
                          "'kern' subtable longer than defined: "
                          "%d bytes instead of %d bytes"
                          % (calculated_length, length)
                      )
                  length = calculated_length
          if subtableFormat not in kern_classes:
              subtable = KernTable_format_unkown(subtableFormat)
          else:
              subtable = kern_classes[subtableFormat](apple)
          subtable.decompile(data[:length], ttFont)
          self.kernTables.append(subtable)
          data = data[length:]
  
imports: from fontTools.ttLib import getSearchRange
  from fontTools.misc.textTools import safeEval, readHex
  from fontTools.misc.fixedTools import fixedToFloat, floatToFixed
  from .None import DefaultTable
  import struct
  import sys
  import array
  import logging
label_desc: Use image node_id 2 for calling the table__k_e_r_n obj's underlying member method code with example usage: obj.decompile(data, ttFont) without return types