# Introduce
* This class provides services needed to instrument Java
* programming language code.
* Instrumentation is the addition of byte-codes to methods for the
* purpose of gathering data to be utilized by tools.
* Since the changes are purely additive, these tools do not modify
* application state or behavior.
* Examples of such benign tools include monitoring agents, profilers,
* coverage analyzers, and event loggers.
* There are two ways to obtain an instance of the
* <code>Instrumentation</code> interface:
* When a JVM is launched in a way that indicates an agent
* class. In that case an <code>Instrumentation</code> instance
* is passed to the <code>premain</code> method of the agent class.
* When a JVM provides a mechanism to start agents sometime
* after the JVM is launched. In that case an <code>Instrumentation</code>
* instance is passed to the <code>agentmain</code> method of the
* agent code. </p> </li>
* These mechanisms are described in the
* {@linkplain java.lang.instrument package specification}.
* Once an agent acquires an <code>Instrumentation</code> instance,
* the agent may call methods on the instance at any time.
#void appendToBootstrapClassLoaderSearch(JarFile jarfile); @since 1.6
* Specifies a JAR file with instrumentation classes to be defined by the
* bootstrap class loader.
* When the virtual machine's built-in class loader, known as the "bootstrap
* class loader", unsuccessfully searches for a class, the entries in the {@link
* java.util.jar.JarFile JAR file} will be searched as well.