Qualifying types represent a new approach to modifying the behaviour of instances of other types in a general way, in the
form of components which can be designed and implemented without a prior knowledge of the types to be modified or their implementations.
This paper illustrates the idea by showing how they can be used to program various standard synchronisation problems, including
mutual exclusion, reader-writer synchronisation and several variants of the bounded buffer problem.