Redefine the supplied set of classes using the supplied class files. Operates on
a set in order to allow interlocked changes to more than one class at the same time
(a redefinition of class A can require a redefinition of class B).
If a redefined method has active stack frames, those active frames continue to
run the bytecodes of the original method.
The redefined method will be used on new invokes.
This method does not cause any initialization except that which would occur
under the customary JVM semantics. In other words, redefining a class
does not cause its initializers to be run. The values of static variables
will remain as they were prior to the call.
Instances of the redefined class are not affected.
Registered transformers will be called before the redefine operation is applied.
The redefinition may change method bodies, the constant pool and attributes.
The redefinition must not add, remove or rename fields or methods, change the
signatures of methods, or change inheritance. These restrictions maybe be
lifted in future versions.
A zero-length definitions
array is allowed, in this case, this
method does nothing.
If this method throws an exception, no classes have been redefined.
This method is intended for use in instrumentation, as described in the
{@linkplain Instrumentation class specification}.