Generates "classes" which implement an interface by forwarding all method calls to a back-end object which uses the same interface. This is useful for changing the behavior of an existing object. The class of the object is not relevant, as long as it implements the same interface as the proxy. In most cases, the proxy class will be extended by a user-defined class.