docs: def addKerning(self, instanceLocation=None, sources=None):
          """
          Calculate the kerning data for this location and add it to this instance.
          
          *   instanceLocation:   Location object
          *   source: dict of {sourcename: (source, sourceLocation)}
          """
          items = []
          kerningObject = self.font.kerning
          kerningMasters = []
          if instanceLocation is None:
              instanceLocation = self.locationObject
  
          if sources is None:
              # kerning has no special requests, add the default sources
              sources = self.sources
          for sourceName, (source, sourceLocation) in sources.items():
              if sourceName in self.muted['kerning']:
                  # kerning in this master was muted, so do not add.
                  if self.verbose and self.logger:
                      self.logger.info("\tMuting kerning data for %s", instanceLocation)
                  continue
              if len(source.kerning.keys())>0:
                  items.append((sourceLocation, MathKerning(source.kerning, source.groups)))
          if items:
              m = None
              try:
                  bias, m = buildMutator(items, axes=self.axes)
              except:
                  if self.logger:
                      self.logger.exception("\tError processing kerning data. %s", items)
                  return
              instanceObject = m.makeInstance(instanceLocation)
              if self.roundGeometry:
                  instanceObject.round()
              instanceObject.extractKerning(self.font)