A proxy used by a debugger to examine or manipulate some entity
in another virtual machine. Mirror is the root of the
interface hierarchy for this package. Mirrors can be proxies for objects
in the target VM (ObjectReference), primitive values
(for example, IntegerValue), types (for example,
ReferenceType), dynamic application state (for example,
StackFrame), and even debugger-specific constructs (for example,
BreakpointRequest).
The VirtualMachine itself is also
considered a mirror, representing the composite state of the
target VM.

There is no guarantee that a particular entity in the target VM will map
to a single instance of Mirror. Implementors are free to decide
whether a single mirror will be used for some or all mirrors. Clients
of this interface should always use equals to compare
two mirrors for equality.

Any method on a Mirror that takes a Mirror as an
parameter directly or indirectly (e.g., as a element in a List) will
throw VMMismatchException if the mirrors are from different
virtual machines.