I’ve described the old code and how it is upgraded. How might this be used in practice? One way could be for each application user to be provided with classes generated by the Digester mechanism.
The Digester might run on a central server, distributing classes (or a complete application) to the different end users. The upgrade mechanism is put in place to generate the required classes and distribute them based on user roles.
If required, the role-based classes could be distributed as applets. In other words, different users need not be issued with the same classes. Instead, the different users can receive their own required version of the application classes.