'Called by :meth:`invalidate` and subsequently ascends the transform
stack calling each TransformNode\'s _invalidate_internal method.'

def _invalidate_internal(self, value, invalidating_node):

    status_changed = (self._invalid < value)
    if (self.pass_through or status_changed):
        self._invalid = value
        for parent in list(six.itervalues(self._parents)):
            parent = parent()
            if (parent is not None):
                parent._invalidate_internal(value=value, invalidating_node=self)
