What is the effect of marking a protocol's associated type with a `where` clause that references another associated type, as shown?
protocol Container {
associatedtype Item
associatedtype Sub: Container where Sub.Item == Item
func subContainer() -> Sub
}