The order of the didSet calls is as expected - each child calls it's willSet, then calls super, then calls it's didSet. If you did it with literal calls to super.pause you'd have something like this, which makes the order of the didSet calls clear: