§2.7.(c) Layering

If roles of a team Secondary are played by roles of another team Primary (i.e., base classes are roles), the team Secondary defines a layer over the team Primary. Such layering requires a final reference anchor from Secondary to an instance of Primary. All playedBy declarations within Secondary specify their base classes anchored to that final link anchor.

Team layering example

Due to the anchored base types, layered teams implicitly support the following guarantee: all base objects of roles of Secondary are contained within the team instance specified by the link anchor. If roles of Secondary contain any callin bindings to non-static base methods, these will be triggered only when a base method is invoked on a base instance contained in the team specified by anchor.
In accordance with §2.6.(a) the anchor in such anchored playedBy declarations could also be the pseudo identifier base, provided that Secondary is a nested team, which has a playedBy binding to Primary as its base class. This situation is part of the second example below (§2.7.(d)) (see T1 playedBy TB1).