def _CheckItem(self, newitem, olditem):
        """ Compare the values of newitem and olditem.
            If item types are sequences, make recursive call to _CheckSequence.
            If item types are instances of objects with an IsModified attribute,                     
            return True if IsModified() is True,
            otherwise return True if items are different
        """
        if type(newitem) in SeqType:
            return self._CheckSequence(newitem, olditem)
        elif type(newitem) is types.InstanceType:
            if newitem is not olditem:      # not the same instance
                return True
            if hasattr(newitem, 'IsModified') and newitem.IsModified():
                return True
        elif newitem <> olditem:
            return True
        else:
            return False
 Compare the values of newitem and olditem.
            If item types are sequences, make recursive call to _CheckSequence.
            If item types are instances of objects with an IsModified attribute,                     
            return True if IsModified() is True,
            otherwise return True if items are different
        
recipes/Python/302742_IsChangedMix_have_contents_instance_been/recipe-302742.py