Clarification on Hd...SentinelTokens->container usage

In reading the header for HdDataSourceLocatorSentinelTokens->container I’m a bit confused about why all nested invalidation is necessary.

/// HdDataSourceLocatorSentinelTokens->container indicates that
/// the container data source needs to be refetched even though none of
/// its contained data sources have changed unless indicated by another
/// data source locator.
///
/// For example, assume that MyFilteringSceneIndex::GetPrim("/MyPrim")
/// previously returned the result from the input scene index but now
/// returns
///     HdContainerDataSourceEditor(_GetInputScene()->GetPrim("/MyPrim"))
///         .Set(HdDataSourceLocator("foo", "bar", "mySource"), mySource)
///         .Finish().
/// Then it needs to send prims dirtied with
///     HdDataSourceLocatorSet{
///         HdDataSourceLocator(
///             HdDataSourceLocatorSentinelTokens->container),
///         HdDataSourceLocator(
///             "foo", HdDataSourceLocatorSentinelTokens->container),
///         HdDataSourceLocator(
///             "foo", "bar", HdDataSourceLocatorSentinelTokens->container),
///         HdDataSourceLocator(
///             "foo", "bar", "mySource")}.

In particular, why is the container dirtying required on /foo and on /foo/bar; why isn’t the container dirtying on / necessarily sufficient?

Scanning containerDataSourceEditor.h I see similar “need to send a dirty notice invalidating the chain of container handles” messaging, but I’m missing the motivation.

PS, forum won’t let me create a topic that has HdDataSourceLocatorSentinelTokens->container in the title … “Title seems unclear, one or more words is very long?” :frowning: