docs: def diff(cls, *args, **kwargs):
          """Create a new Ent representing the differences in two or more
          existing Ents.  Keys in the later Ents with values that differ
          from the earlier Ents will be present in the final Ent with the
          latest value seen for that key.  Later keys of different type than in
          earlier Ents will be bravely ignored.
  
          The following keywoard arguments are recognized:
  
          newkeys: boolean value to determine whether keys from later Ents
          should be included if they do not exist in earlier Ents.
  
          ignore: list of strings of key names that will not be included.
  
          """
          newkeys = bool(kwargs.get('newkeys', False))
          ignore = kwargs.get('ignore', list())
  
          if len(args) < 2:
              raise ValueError('less than two ents given to Ent.diff()')
          elif not all(isinstance(s, Ent) for s in args):
              raise ValueError('all positional arguments to Ent.diff() must '
                               'be instances of Ent')
  
          s1 = args[0]
          differences = Ent()
  
          for s2 in args[1:]:
              for key, value in s2.__dict__.items():
                  if key in ignore:
                      continue
  
                  if key in s1.__dict__:
                      v1 = s1.__dict__[key]
                      if type(value) == type(v1):
                          if isinstance(v1, Ent):
                              delta = cls.diff(v1, value, **kwargs)
                              if len(delta.__dict__):
                                  differences.__dict__[key] = delta
                          elif v1 != value:
                              differences.__dict__[key] = cls.load(value)
  
                  elif newkeys:
                      differences.__dict__[key] = cls.load(value)
  
              s1 = s2
  
          return differences