diff --git a/src/share/vm/prims/jvmti.xml b/src/share/vm/prims/jvmti.xml
index df7f349..571d8dd 100644
--- a/src/share/vm/prims/jvmti.xml
+++ b/src/share/vm/prims/jvmti.xml
@@ -24,11 +24,11 @@
 -->
 
 <!DOCTYPE specification [
-   <!ELEMENT specification (title, intro*, functionsection, errorsection, 
+   <!ELEMENT specification (title, intro*, functionsection, errorsection,
                             eventsection, datasection, issuessection, changehistory)>
-   <!ATTLIST specification label CDATA #REQUIRED 
-                           majorversion CDATA #REQUIRED 
-                           minorversion CDATA #REQUIRED 
+   <!ATTLIST specification label CDATA #REQUIRED
+                           majorversion CDATA #REQUIRED
+                           minorversion CDATA #REQUIRED
                            microversion CDATA #REQUIRED>
 
    <!ELEMENT title (#PCDATA|jvmti|tm)*>
@@ -41,13 +41,13 @@
    <!ELEMENT functionsection (intro*, category*)>
    <!ATTLIST functionsection label CDATA #REQUIRED>
 
-   <!ELEMENT category ((intro|typedef|uniontypedef|capabilitiestypedef)*, 
+   <!ELEMENT category ((intro|typedef|uniontypedef|capabilitiestypedef)*,
                           (function|callback|elide)*)>
    <!ATTLIST category id CDATA #REQUIRED
                       label CDATA #REQUIRED>
 
    <!ELEMENT function (synopsis, typedef*, description?, origin,
-                         (capabilities|eventcapabilities), 
+                         (capabilities|eventcapabilities),
                          parameters, errors)>
    <!ATTLIST function id CDATA #REQUIRED
                       num CDATA #REQUIRED
@@ -77,7 +77,7 @@
                      since CDATA "1.0">
 
    <!ELEMENT field ((jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|jthreadGroup|jobject|
-                     jvalue|enum|jint|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|allocfieldbuf|inptr|inbuf|outbuf|vmbuf|ptrtype|struct), 
+                     jvalue|enum|jint|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|allocfieldbuf|inptr|inbuf|outbuf|vmbuf|ptrtype|struct),
                     description)>
    <!ATTLIST field id CDATA #REQUIRED>
 
@@ -107,7 +107,7 @@
 
    <!ELEMENT param ((jmethodID|jfieldID|jframeID|jrawMonitorID|jclass|jthread|jthreadGroup|jobject|
                      jvalue|enum|jint|jlong|jfloat|jdouble|jlocation|jboolean|char|uchar|size_t|void|varargs|struct|ptrtype|
-                     outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf), 
+                     outptr|allocbuf|allocallocbuf|inptr|inbuf|outbuf|vmbuf|agentbuf),
                     description)>
    <!ATTLIST param id CDATA #REQUIRED>
 
@@ -292,16 +292,16 @@
    <!ATTLIST eventphaselist phase (onload|start|live|any) #REQUIRED>
 
    <!ELEMENT issue ANY>
-   
+
    <!ELEMENT rationale ANY>
-   
+
    <!ELEMENT todo ANY>
-   
+
    <!ELEMENT origin (#PCDATA)*>
 
    <!ELEMENT elide (intro|function|callback|event)*>
    <!ATTLIST elide why CDATA #IMPLIED>
-   
+
    <!ELEMENT constants (constant*)>
    <!ATTLIST constants id CDATA #REQUIRED
                        label CDATA #REQUIRED
@@ -361,11 +361,11 @@
   <title subtitle="Version">
     <tm>JVM</tm> Tool Interface
   </title>
-  
+
   <intro id="whatIs" label="What is the JVM Tool Interface?">
-    The <tm>JVM</tm> Tool Interface (<jvmti/>) 
-    is a programming interface used by development and monitoring tools. 
-    It provides both a way to inspect the state and 
+    The <tm>JVM</tm> Tool Interface (<jvmti/>)
+    is a programming interface used by development and monitoring tools.
+    It provides both a way to inspect the state and
     to control the execution of applications running in the
     <tm>Java</tm> virtual machine (VM).
     <p/>
@@ -376,21 +376,21 @@
     <jvmti/> may not be available in all implementations of the <tm>Java</tm> virtual
     machine.
     <p/>
-    <jvmti/> is a two-way interface. 
+    <jvmti/> is a two-way interface.
     A client of <jvmti/>, hereafter called an <i>agent</i>,
     can be notified of
-    interesting occurrences through <internallink id="EventSection">events</internallink>. 
+    interesting occurrences through <internallink id="EventSection">events</internallink>.
     <jvmti/>
-    can query and control the application through many 
-    <internallink id="FunctionSection">functions</internallink>, 
-    either in response to events or 
+    can query and control the application through many
+    <internallink id="FunctionSection">functions</internallink>,
+    either in response to events or
     independent of them.
     <p/>
-    Agents run in the same process with and communicate directly with 
+    Agents run in the same process with and communicate directly with
     the virtual machine executing
     the application being examined.  This communication is
     through a native interface (<jvmti/>). The native in-process interface allows
-    maximal control with minimal intrusion on the part of a tool. 
+    maximal control with minimal intrusion on the part of a tool.
     Typically, agents are relatively compact. They can be controlled
     by a separate process which implements the bulk of a tool's
     function without interfering with the target application's normal execution.
@@ -400,12 +400,12 @@
     Tools can be written directly to <jvmti/> or indirectly
     through higher level interfaces.
     The Java Platform Debugger Architecture includes <jvmti/>, but also
-    contains higher-level, out-of-process debugger interfaces. The higher-level 
-    interfaces are more appropriate than <jvmti/> for many tools. 
-    For more information on the Java Platform Debugger Architecture, 
-    see the 
-    <externallink id="docs/technotes/guides/jpda/architecture.html">Java 
-      Platform Debugger Architecture website</externallink>. 
+    contains higher-level, out-of-process debugger interfaces. The higher-level
+    interfaces are more appropriate than <jvmti/> for many tools.
+    For more information on the Java Platform Debugger Architecture,
+    see the
+    <externallink id="docs/technotes/guides/jpda/architecture.html">Java
+      Platform Debugger Architecture website</externallink>.
   </intro>
 
   <intro id="writingAgents" label="Writing Agents">
@@ -424,16 +424,16 @@
   </intro>
 
   <intro id="deployingAgents" label="Deploying Agents">
-    An agent is deployed in a platform specific manner but is typically the 
-    platform equivalent of a dynamic library. On the <tm>Windows</tm> operating 
-    system, for example, an agent library is a "Dynamic Linked Library" (DLL). 
+    An agent is deployed in a platform specific manner but is typically the
+    platform equivalent of a dynamic library. On the <tm>Windows</tm> operating
+    system, for example, an agent library is a "Dynamic Linked Library" (DLL).
     On the <tm>Solaris</tm> Operating Environment, an agent library is a shared
     object (<code>.so</code> file).
     <p/>
 
     An agent may be started at VM startup by specifying the agent library
     name using a <internallink id="starting">command line option</internallink>.
-    Some implementations may support a mechanism to <internallink id="onattach"> 
+    Some implementations may support a mechanism to <internallink id="onattach">
     start agents</internallink> in the live <functionlink id="GetPhase">phase</functionlink>.
     The details of how this is initiated are implementation specific.
   </intro>
@@ -460,7 +460,7 @@
       a function is exported, at the same point during VM execution as it would
       have called the dynamic entry point Agent_OnUnLoad. A statically loaded
       agent cannot be unloaded. The Agent_OnUnload_L function will still be
-      called to do any other agent shutdown related tasks. 
+      called to do any other agent shutdown related tasks.
       If a <i>statically linked</i> agent L exports a function called
       Agent_OnUnLoad_L and a function called Agent_OnUnLoad, the Agent_OnUnLoad
       function will be ignored.
@@ -472,19 +472,19 @@
       Agent_OnAttach_L and a function called Agent_OnAttach, the Agent_OnAttach
       function will be ignored.
 </intro>
-  
+
   <intro id="starting" label="Agent Command Line Options">
     The term "command-line option" is used below to
     mean options supplied in the <code>JavaVMInitArgs</code> argument
     to the <code>JNI_CreateJavaVM</code> function of the JNI
     Invocation API.
     <p/>
-    One of the two following 
-    command-line options is used on VM startup to 
+    One of the two following
+    command-line options is used on VM startup to
     properly load and run agents.
-    These arguments identify the library containing 
+    These arguments identify the library containing
     the agent as well as an options
-    string to be passed in at startup. 
+    string to be passed in at startup.
     <dl>
       <dt><code>-agentlib:</code><i>&lt;agent-lib-name&gt;</i><code>=</code><i>&lt;options&gt;</i></dt>
       <dd>
@@ -494,10 +494,10 @@
 	Typically, the <i>&lt;agent-lib-name&gt;</i> is expanded to an
 	operating system specific file name.
 	The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
-	For example, if the option 
-	<code>-agentlib:foo=opt1,opt2</code> is specified, the VM will attempt to 
+	For example, if the option
+	<code>-agentlib:foo=opt1,opt2</code> is specified, the VM will attempt to
 	load the shared library <code>foo.dll</code> from the system <code>PATH</code>
-        under <tm>Windows</tm> or <code>libfoo.so</code> from the 
+        under <tm>Windows</tm> or <code>libfoo.so</code> from the
 	<code>LD_LIBRARY_PATH</code> under the <tm>Solaris</tm> operating
         environment.
         If the agent library is statically linked into the executable
@@ -510,8 +510,8 @@
 	to load the library.
 	No library name expansion will occur.
 	The <i>&lt;options&gt;</i> will be passed to the agent on start-up.
-	For example, if the option 
-	<code>-agentpath:c:\myLibs\foo.dll=opt1,opt2</code> is specified, the VM will attempt to 
+	For example, if the option
+	<code>-agentpath:c:\myLibs\foo.dll=opt1,opt2</code> is specified, the VM will attempt to
 	load the shared library <code>c:\myLibs\foo.dll</code>. If the agent
         library is statically linked into the executable
         then no actual loading takes place.
@@ -523,13 +523,13 @@
     in the library will be invoked. If the agent library is statically linked
     into the executable then the system will attempt to invoke the
     <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> entry point where
-    &lt;agent-lib-name&gt; is the basename of the 
+    &lt;agent-lib-name&gt; is the basename of the
     agent. In the above example <code>-agentpath:c:\myLibs\foo.dll=opt1,opt2</code>,
     the system will attempt to find and call the <code>Agent_OnLoad_foo</code> start-up routine.
     <p/>
     Libraries loaded with <code>-agentlib:</code> or <code>-agentpath:</code>
     will be searched for JNI native method implementations to facilitate the
-    use of Java programming language code in tools, as is needed for 
+    use of Java programming language code in tools, as is needed for
     <internallink id="bci">bytecode instrumentation</internallink>.
     <p/>
     The agent libraries will be searched after all other libraries have been
@@ -537,11 +537,11 @@
     implementations of non-agent methods can use the
     <eventlink id="NativeMethodBind">NativeMethodBind event</eventlink>).
     <p/>
-    These switches do the above and nothing more - they do not change the 
-    state of the VM or <jvmti/>.  No command line options are needed 
-    to enable <jvmti/> 
+    These switches do the above and nothing more - they do not change the
+    state of the VM or <jvmti/>.  No command line options are needed
+    to enable <jvmti/>
     or aspects of <jvmti/>, this is handled programmatically
-    by the use of 
+    by the use of
     <internallink id="capability">capabilities</internallink>.
   </intro>
 
@@ -557,29 +557,29 @@
     <internallink id="onattach"><code>Agent_OnAttach</code></internallink>
     or <internallink id="onattach"><code>Agent_OnAttach_L</code></internallink>
     for statically linked agents will be invoked.
-    Exactly one call to a start-up function is made per agent.  
+    Exactly one call to a start-up function is made per agent.
   </intro>
 
   <intro id="onload" label="Agent Start-Up (OnLoad phase)">
     If an agent is started during the <code>OnLoad</code> phase then its
     agent library must export a start-up function with the following prototype:
     <example>
-JNIEXPORT jint JNICALL 
+JNIEXPORT jint JNICALL
 Agent_OnLoad(JavaVM *vm, char *options, void *reserved)</example>
     Or for a statically linked agent named 'L':
     <example>
-JNIEXPORT jint JNICALL 
+JNIEXPORT jint JNICALL
 Agent_OnLoad_L(JavaVM *vm, char *options, void *reserved)</example>
 
-    The VM will start the agent by calling this function.  
+    The VM will start the agent by calling this function.
     It will be called early enough in VM initialization that:
     <ul>
       <li><functionlink id="SetSystemProperty">system properties</functionlink>
 	may be set before they have been used in the start-up of the VM</li>
-      <li>the full set of 
+      <li>the full set of
 	<internallink id="capability">capabilities</internallink>
 	is still available (note that capabilities that configure the VM
-	may only be available at this time--see the 
+	may only be available at this time--see the
 	<internallink id="capability">Capability function section</internallink>)</li>
       <li>no bytecodes have executed</li>
       <li>no classes have been loaded</li>
@@ -588,13 +588,13 @@
     <p/>
     The VM will call the <code>Agent_OnLoad</code> or
     <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> function with
-    <i>&lt;options&gt;</i> as the second argument - 
+    <i>&lt;options&gt;</i> as the second argument -
     that is, using the command-line option examples,
-    <code>"opt1,opt2"</code> will be passed to the <code>char *options</code> 
+    <code>"opt1,opt2"</code> will be passed to the <code>char *options</code>
     argument of <code>Agent_OnLoad</code>.
     The <code>options</code> argument is encoded as a
     <internallink id="mUTF">modified UTF-8</internallink> string.
-    If <i>=&lt;options&gt;</i> is not specified, 
+    If <i>=&lt;options&gt;</i> is not specified,
     a zero length string is passed to <code>options</code>.
     The lifespan of the <code>options</code> string is the
     <code>Agent_OnLoad</code> or <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code>
@@ -602,26 +602,26 @@
     be copied.
     The period between when <code>Agent_OnLoad</code> is called and when it
     returns is called the <i>OnLoad phase</i>.
-    Since the VM is not initialized during the OnLoad 
+    Since the VM is not initialized during the OnLoad
     <functionlink id="GetPhase">phase</functionlink>,
-    the set of allowed operations 
+    the set of allowed operations
     inside <code>Agent_OnLoad</code> is restricted (see the function descriptions for the
-    functionality available at this time). 
-    The agent can safely process the options and set 
-    event callbacks with <functionlink id="SetEventCallbacks"></functionlink>. Once  
-    the VM initialization event is received 
-    (that is, the <eventlink id="VMInit">VMInit</eventlink> 
+    functionality available at this time).
+    The agent can safely process the options and set
+    event callbacks with <functionlink id="SetEventCallbacks"></functionlink>. Once
+    the VM initialization event is received
+    (that is, the <eventlink id="VMInit">VMInit</eventlink>
     callback is invoked), the agent
     can complete its initialization.
     <rationale>
       Early startup is required so that agents can set the desired capabilities,
       many of which must be set before the VM is initialized.
-      In JVMDI, the -Xdebug command-line option provided 
-      very coarse-grain control of capabilities. 
+      In JVMDI, the -Xdebug command-line option provided
+      very coarse-grain control of capabilities.
       JVMPI implementations use various tricks to provide a single "JVMPI on" switch.
-      No reasonable command-line 
+      No reasonable command-line
       option could provide the fine-grain of control required to balance needed capabilities vs
-      performance impact.  
+      performance impact.
       Early startup is also needed so that agents can control the execution
       environment - modifying the file system and system properties to install
       their functionality.
@@ -631,75 +631,75 @@
     <code>Agent_OnLoad_&lt;agent-lib-name&gt;</code> is used to indicate an error.
     Any value other than zero indicates an error and causes termination of the VM.
   </intro>
-  
+
   <intro id="onattach" label="Agent Start-Up (Live phase)">
-    A VM may support a mechanism that allows agents to be started in the VM during the live 
+    A VM may support a mechanism that allows agents to be started in the VM during the live
     <functionlink id="GetPhase">phase</functionlink>. The details of how this is supported,
-    are implementation specific. For example, a tool may use some platform specific mechanism, 
+    are implementation specific. For example, a tool may use some platform specific mechanism,
     or implementation specific API, to attach to the running VM, and request it start a given
     agent.
     <p/>
     If an agent is started during the live phase then its agent library
-    must export a start-up function 
+    must export a start-up function
     with the following prototype:
     <example>
-JNIEXPORT jint JNICALL 
+JNIEXPORT jint JNICALL
 Agent_OnAttach(JavaVM* vm, char *options, void *reserved)</example>
 Or for a statically linked agent named 'L':
     <example>
-JNIEXPORT jint JNICALL 
+JNIEXPORT jint JNICALL
 Agent_OnAttach_L(JavaVM* vm, char *options, void *reserved)</example>
 
-    <p/>         
-    The VM will start the agent by calling this function.  
+    <p/>
+    The VM will start the agent by calling this function.
     It will be called in the context of a thread
     that is attached to the VM. The first argument <i>&lt;vm&gt;</i> is the Java VM.
     The <i>&lt;options&gt;</i> argument is the startup options provided to the agent.
     <i>&lt;options&gt;</i> is encoded as a <internallink id="mUTF">modified UTF-8
     </internallink> string.
-    If startup options were not provided, a zero length string is passed to 
-    <code>options</code>. The lifespan of the <code>options</code> string is the 
+    If startup options were not provided, a zero length string is passed to
+    <code>options</code>. The lifespan of the <code>options</code> string is the
     <code>Agent_OnAttach</code> or <code>Agent_OnAttach_&lt;agent-lib-name&gt;</code> call.
     If needed beyond this time the string or parts of the string must be copied.
     <p/>
-    Note that some <internallink id="capability">capabilities</internallink> 
+    Note that some <internallink id="capability">capabilities</internallink>
     may not be available in the live phase.
     <p/>
     The <code>Agent_OnAttach</code> or <code>Agent_OnAttach_&lt;agent-lib-name
     &gt;</code> function initializes the agent and returns a value
-    to the VM to indicate if an error occurred. Any value other than zero indicates an error. 
-    An error does not cause the VM to terminate. Instead the VM ignores the error, or takes 
-    some implementation specific action -- for example it might print an error to standard error, 
+    to the VM to indicate if an error occurred. Any value other than zero indicates an error.
+    An error does not cause the VM to terminate. Instead the VM ignores the error, or takes
+    some implementation specific action -- for example it might print an error to standard error,
     or record the error in a system log.
   </intro>
 
   <intro id="onunload" label="Agent Shutdown">
-    The library may optionally export a 
+    The library may optionally export a
     shutdown function with the following prototype:
     <example>
-JNIEXPORT void JNICALL 
+JNIEXPORT void JNICALL
 Agent_OnUnload(JavaVM *vm)</example>
     Or for a statically linked agent named 'L':
     <example>
-JNIEXPORT void JNICALL 
+JNIEXPORT void JNICALL
 Agent_OnUnload_L(JavaVM *vm)</example>
 
     This function will be called by the VM when the library is about to be unloaded.
     The library will be unloaded (unless it is statically linked into the
-    executable) and this function will be called if some platform specific 
+    executable) and this function will be called if some platform specific
     mechanism causes the unload (an unload mechanism is not specified in this document)
-    or the library is (in effect) unloaded by the termination of the VM whether through 
+    or the library is (in effect) unloaded by the termination of the VM whether through
     normal termination or VM failure, including start-up failure.
     Uncontrolled shutdown is, of couse, an exception to this rule.
-    Note the distinction between this function and the 
+    Note the distinction between this function and the
     <eventlink id="VMDeath">VM Death event</eventlink>: for the VM Death event
-    to be sent, the VM must have run at least to the point of initialization and a valid 
+    to be sent, the VM must have run at least to the point of initialization and a valid
     <jvmti/> environment must exist which has set a callback for VMDeath
     and enabled the event.
     None of these are required for <code>Agent_OnUnload</code> or
     <code>Agent_OnUnload_&lt;agent-lib-name&gt;</code> and this function
     is also called if the library is unloaded for other reasons.
-    In the case that a VM Death event is sent, it will be sent before this 
+    In the case that a VM Death event is sent, it will be sent before this
     function is called (assuming this function is called due to VM termination).
     This function can be used to clean-up resources allocated by the agent.
   </intro>
@@ -709,17 +709,17 @@
     or simply VMs launched deep within scripts, a <code>JAVA_TOOL_OPTIONS</code> variable is
     provided so that agents may be launched in these cases.
     <p/>
-    Platforms which support environment variables or other named strings, may support the 
-    <code>JAVA_TOOL_OPTIONS</code> variable.  This variable will be broken into options at white-space 
-    boundaries.  White-space characters include space, tab, carriage-return, new-line, 
-    vertical-tab, and form-feed.  Sequences of white-space characters are considered 
-    equivalent to a single white-space character.  No white-space is included in the options 
+    Platforms which support environment variables or other named strings, may support the
+    <code>JAVA_TOOL_OPTIONS</code> variable.  This variable will be broken into options at white-space
+    boundaries.  White-space characters include space, tab, carriage-return, new-line,
+    vertical-tab, and form-feed.  Sequences of white-space characters are considered
+    equivalent to a single white-space character.  No white-space is included in the options
     unless quoted.  Quoting is as follows:
     <ul>
-        <li>All characters enclosed between a pair of single quote marks (''), except a single 
+        <li>All characters enclosed between a pair of single quote marks (''), except a single
         quote, are quoted.</li>
         <li>Double quote characters have no special meaning inside a pair of single quote marks.</li>
-        <li>All characters enclosed between a pair of double quote marks (""), except a double 
+        <li>All characters enclosed between a pair of double quote marks (""), except a double
         quote, are quoted.</li>
         <li>Single quote characters have no special meaning inside a pair of double quote marks.</li>
         <li>A quoted part can start or end anywhere in the variable.</li>
@@ -727,24 +727,24 @@
         the option like any other character and do not mark white-space boundaries.</li>
         <li>The pair of quote marks is not included in the option.</li>
     </ul>
-    <code>JNI_CreateJavaVM</code> (in the JNI Invocation API) will prepend these options to the options supplied 
-    in its <code>JavaVMInitArgs</code> argument. Platforms may disable this feature in cases where security is 
-    a concern; for example, the Reference Implementation disables this feature on Unix systems when 
-    the effective user or group ID differs from the real ID.  
-    This feature is intended to support the initialization of tools -- specifically including the 
-    launching of native or Java programming language agents.  Multiple tools may wish to use this 
-    feature, so the variable should not be overwritten, instead,  options should be appended to 
-    the variable.  Note that since the variable is processed at the time of the JNI Invocation 
+    <code>JNI_CreateJavaVM</code> (in the JNI Invocation API) will prepend these options to the options supplied
+    in its <code>JavaVMInitArgs</code> argument. Platforms may disable this feature in cases where security is
+    a concern; for example, the Reference Implementation disables this feature on Unix systems when
+    the effective user or group ID differs from the real ID.
+    This feature is intended to support the initialization of tools -- specifically including the
+    launching of native or Java programming language agents.  Multiple tools may wish to use this
+    feature, so the variable should not be overwritten, instead,  options should be appended to
+    the variable.  Note that since the variable is processed at the time of the JNI Invocation
     API create VM call, options processed by a launcher (e.g., VM selection options) will not be handled.
   </intro>
 
   <intro id="environments" label="Environments">
     The <jvmti/> specification supports the use of multiple simultaneous
     <jvmti/> agents.
-    Each agent has its own <jvmti/> environment.  
+    Each agent has its own <jvmti/> environment.
     That is, the <jvmti/> state is
     separate for each agent - changes to one environment do not affect the
-    others.  The state of a <jvmti/> 
+    others.  The state of a <jvmti/>
     environment includes:
     <ul>
       <li><functionlink id="SetEventCallbacks">the event callbacks</functionlink></li>
@@ -752,7 +752,7 @@
       <li><internallink id="capability">the capabilities</internallink></li>
       <li><internallink id="memory">the memory allocation/deallocation hooks</internallink></li>
     </ul>
-    Although their <jvmti/> state 
+    Although their <jvmti/> state
     is separate, agents inspect and modify the shared state
     of the VM, they also share the native environment in which they execute.
     As such, an agent can perturb the results of other agents or cause them
@@ -761,30 +761,30 @@
     of preventing destructive interactions between agents. Techniques to reduce
     the likelihood of these occurrences are beyond the scope of this document.
     <p/>
-    An agent creates a <jvmti/> environment 
-    by passing a <jvmti/> version 
-    as the interface ID to the JNI Invocation API function 
-    <externallink id="docs/technotes/guides/jni/spec/invocation.html#GetEnv">
+    An agent creates a <jvmti/> environment
+    by passing a <jvmti/> version
+    as the interface ID to the JNI Invocation API function
+    <externallink id="jni/invocation.html#getenv">
       <code>GetEnv</code></externallink>.
     See <internallink id="jvmtiEnvAccess">Accessing <jvmti/> Functions</internallink>
-    for more details on the creation and use of 
+    for more details on the creation and use of
     <jvmti/> environments.
-    Typically, <jvmti/> environments are created by calling <code>GetEnv</code> from 
+    Typically, <jvmti/> environments are created by calling <code>GetEnv</code> from
     <internallink id="onload"><code>Agent_OnLoad</code></internallink>.
   </intro>
 
   <intro id="bci" label="Bytecode Instrumentation">
     This interface does not include some events that one might expect in an interface with
     profiling support.  Some examples include object allocation events and full speed
-    method enter and exit events.  The interface instead provides support for 
+    method enter and exit events.  The interface instead provides support for
     <i>bytecode instrumentation</i>, the ability to alter the Java virtual machine
     bytecode instructions which comprise the target program.  Typically, these alterations
     are to add "events" to the code of a method - for example, to add, at the beginning of a method,
-    a call to <code>MyProfiler.methodEntered()</code>.  
+    a call to <code>MyProfiler.methodEntered()</code>.
     Since the changes are purely additive, they do not modify application
     state or behavior.
     Because the inserted agent code is standard bytecodes, the VM can run at full speed,
-    optimizing not only the target program but also the instrumentation.  If the 
+    optimizing not only the target program but also the instrumentation.  If the
     instrumentation does not involve switching from bytecode execution, no expensive
     state transitions are needed.  The result is high performance events.
     This approach also provides complete control to the agent: instrumentation can be
@@ -792,14 +792,14 @@
     can be conditional.  Instrumentation can run entirely in Java programming language
     code or can call into the native agent.  Instrumentation can simply maintain
     counters or can statistically sample events.
-    <p/>  
+    <p/>
     Instrumentation can be inserted in one of three ways:
     <ul>
       <li>
 	Static Instrumentation: The class file is instrumented before it
 	is loaded into the VM - for example, by creating a duplicate directory of
 	<code>*.class</code> files which have been modified to add the instrumentation.
-	This method is extremely awkward and, in general, an agent cannot know 
+	This method is extremely awkward and, in general, an agent cannot know
 	the origin of the class files which will be loaded.
       </li>
       <li>
@@ -817,21 +817,21 @@
 	<functionlink id="RetransformClasses"/> function.
 	Classes can be modified multiple times and can be returned to their
 	original state.
-	The mechanism allows instrumentation which changes during the 
+	The mechanism allows instrumentation which changes during the
 	course of execution.
       </li>
     </ul>
-    <p/>  
+    <p/>
     The class modification functionality provided in this interface
     is intended to provide a mechanism for instrumentation
     (the <eventlink id="ClassFileLoadHook"/> event
     and the <functionlink id="RetransformClasses"/> function)
     and, during development, for fix-and-continue debugging
     (the <functionlink id="RedefineClasses"/> function).
-    <p/>  
-    Care must be taken to avoid perturbing dependencies, especially when 
+    <p/>
+    Care must be taken to avoid perturbing dependencies, especially when
     instrumenting core classes.  For example, an approach to getting notification
-    of every object allocation is to instrument the constructor on 
+    of every object allocation is to instrument the constructor on
     <code>Object</code>.  Assuming that the constructor is initially
     empty, the constructor could be changed to:
     <example>
@@ -839,15 +839,15 @@
         MyProfiler.allocationTracker(this);
       }
     </example>
-    However, if this change was made using the 
+    However, if this change was made using the
     <eventlink id="ClassFileLoadHook"/>
-    event then this might impact a typical VM as follows: 
+    event then this might impact a typical VM as follows:
     the first created object will call the constructor causing a class load of
     <code>MyProfiler</code>; which will then cause
     object creation, and since <code>MyProfiler</code> isn't loaded yet,
     infinite recursion; resulting in a stack overflow.  A refinement of this
     would be to delay invoking the tracking method until a safe time.  For
-    example, <code>trackAllocations</code> could be set in the 
+    example, <code>trackAllocations</code> could be set in the
     handler for the <code>VMInit</code> event.
     <example>
       static boolean trackAllocations = false;
@@ -881,17 +881,17 @@
   <intro id="mUTF" label="Modified UTF-8 String Encoding">
     <jvmti/> uses modified UTF-8 to encode character strings.
     This is the same encoding used by JNI.
-    Modified UTF-8 differs 
-    from standard UTF-8 in the representation of supplementary characters 
+    Modified UTF-8 differs
+    from standard UTF-8 in the representation of supplementary characters
     and of the null character. See the
-    <externallink id="docs/technotes/guides/jni/spec/types.html#modified_utf_8_strings">
+    <externallink id="jni/types.html#modified-utf-8-strings">
       Modified UTF-8 Strings</externallink>
     section of the JNI specification for details.
   </intro>
 
   <intro id="context" label="Specification Context">
     Since this interface provides access to the state of applications running in the
-    Java virtual machine; 
+    Java virtual machine;
     terminology refers to the Java platform and not the native
     platform (unless stated otherwise).  For example:
     <ul>
@@ -903,20 +903,20 @@
     </ul>
     <p/>
     Sun, Sun Microsystems, the Sun logo, Java, and JVM
-    are trademarks or registered trademarks of Oracle 
+    are trademarks or registered trademarks of Oracle
     and/or its affiliates, in the U.S. and other countries.
   </intro>
 
 
 <functionsection label="Functions">
   <intro id="jvmtiEnvAccess" label="Accessing Functions">
-    Native code accesses <jvmti/> features 
-    by calling <jvmti/> functions. 
+    Native code accesses <jvmti/> features
+    by calling <jvmti/> functions.
     Access to <jvmti/> functions is by use of an interface pointer
-    in the same manner as 
-    <externallink id="docs/technotes/guides/jni/spec/design.html">Java 
+    in the same manner as
+    <externallink id="jni/design.html">Java
       Native Interface (JNI) functions</externallink> are accessed.
-    The <jvmti/> interface pointer is called the 
+    The <jvmti/> interface pointer is called the
     <i>environment pointer</i>.
     <p/>
     An environment pointer is a pointer to an environment and has
@@ -924,8 +924,8 @@
     An environment has information about its <jvmti/> connection.
     The first value in the environment is a pointer to the function table.
     The function table is an array of pointers to <jvmti/> functions.
-    Every function pointer is at a predefined offset inside the 
-    array. 
+    Every function pointer is at a predefined offset inside the
+    array.
     <p/>
     When used from the C language:
     double indirection is used to access the functions;
@@ -945,7 +945,7 @@
 ...
 jvmtiError err = jvmti->GetLoadedClasses(&amp;class_count, &amp;classes);
     </example>
-    Unless otherwise stated, all examples and declarations in this 
+    Unless otherwise stated, all examples and declarations in this
     specification use the C language.
     <p/>
     A <jvmti/> environment can be obtained through the JNI Invocation API
@@ -955,24 +955,24 @@
 ...
 (*jvm)->GetEnv(jvm, &amp;jvmti, JVMTI_VERSION_1_0);
     </example>
-    Each call to <code>GetEnv</code> 
+    Each call to <code>GetEnv</code>
     creates a new <jvmti/> connection and thus
-    a new <jvmti/> environment. 
+    a new <jvmti/> environment.
     The <code>version</code> argument of <code>GetEnv</code> must be
     a <jvmti/> version.
     The returned environment may have a different version than the
     requested version but the returned environment must be compatible.
-    <code>GetEnv</code> will return <code>JNI_EVERSION</code> if a 
+    <code>GetEnv</code> will return <code>JNI_EVERSION</code> if a
     compatible version is not available, if <jvmti/> is not supported or
     <jvmti/> is not supported in the current VM configuration.
     Other interfaces may be added for creating <jvmti/> environments
     in specific contexts.
     Each environment has its own state (for example,
-    <functionlink id="SetEventNotificationMode">desired events</functionlink>, 
-    <functionlink id="SetEventCallbacks">event handling functions</functionlink>, and 
-    <functionlink id="AddCapabilities">capabilities</functionlink>). 
-    An environment is released with 
-    <functionlink id="DisposeEnvironment"></functionlink>. 
+    <functionlink id="SetEventNotificationMode">desired events</functionlink>,
+    <functionlink id="SetEventCallbacks">event handling functions</functionlink>, and
+    <functionlink id="AddCapabilities">capabilities</functionlink>).
+    An environment is released with
+    <functionlink id="DisposeEnvironment"></functionlink>.
     Thus, unlike JNI which has one environment per thread, <jvmti/> environments work
     across threads and are created dynamically.
   </intro>
@@ -980,12 +980,12 @@
   <intro id="functionReturn" label="Function Return Values">
     <jvmti/> functions always return an
     <internallink id="ErrorSection">error code</internallink> via the
-    <datalink id="jvmtiError"/> function return value. 
+    <datalink id="jvmtiError"/> function return value.
     Some functions can return additional
-    values through pointers provided by the calling function. 
+    values through pointers provided by the calling function.
     In some cases, <jvmti/> functions allocate memory that your program must
     explicitly deallocate. This is indicated in the individual <jvmti/>
-    function descriptions.  Empty lists, arrays, sequences, etc are 
+    function descriptions.  Empty lists, arrays, sequences, etc are
     returned as <code>NULL</code>.
     <p/>
     In the event that the <jvmti/> function encounters
@@ -996,26 +996,26 @@
   </intro>
 
 <intro id="refs" label="Managing JNI Object References">
-    <jvmti/> functions identify objects with JNI references 
+    <jvmti/> functions identify objects with JNI references
     (<datalink id="jobject"/> and <datalink id="jclass"/>)
     and their derivatives
     (<datalink id="jthread"/> and <datalink id="jthreadGroup"/>).
-    References passed to 
-    <jvmti/> functions can be either global or local, but they must be 
-    strong references. All references returned by <jvmti/> functions are 
-    local references--these local references are created 
+    References passed to
+    <jvmti/> functions can be either global or local, but they must be
+    strong references. All references returned by <jvmti/> functions are
+    local references--these local references are created
     during the <jvmti/> call.
-    Local references are a resource that must be managed (see the 
-    <externallink id="docs/technotes/guides/jni/spec/functions.html#local_references">
-      JNI Documentation</externallink>).  
+    Local references are a resource that must be managed (see the
+    <externallink id="jni/functions.html#local-references">
+      JNI Documentation</externallink>).
     When threads return from native code all local references
     are freed.  Note that some threads, including typical
     agent threads, will never return from native code.
-    A thread is ensured the ability to create sixteen local 
+    A thread is ensured the ability to create sixteen local
     references without the need for any explicit management.
     For threads executing a limited number of <jvmti/> calls before
     returning from native code
-    (for example, threads processing events), 
+    (for example, threads processing events),
     it may be determined that no explicit management
     is needed.
     However, long running agent threads will need explicit
@@ -1023,7 +1023,7 @@
     <code>PushLocalFrame</code> and <code>PopLocalFrame</code>.
     Conversely, to preserve references beyond the
     return from native code, they must be converted to global references.
-    These rules do not apply to <datalink id="jmethodID"/> and <datalink id="jfieldID"/> 
+    These rules do not apply to <datalink id="jmethodID"/> and <datalink id="jfieldID"/>
     as they are not <datalink id="jobject"/>s.
 </intro>
 
@@ -1035,21 +1035,21 @@
     </intro>
 
     <intro id="functionsExceptions" label="Exceptions and Functions">
-      <jvmti/> functions never throw exceptions; error conditions are 
-      communicated via the 
+      <jvmti/> functions never throw exceptions; error conditions are
+      communicated via the
       <internallink id="functionReturn">function return value</internallink>.
-      Any existing exception state is preserved across a call to a 
+      Any existing exception state is preserved across a call to a
       <jvmti/> function.
       See the
-      <externallink 
-        id="docs/technotes/guides/jni/spec/design.html#java_exceptions"
+      <externallink
+        id="jni/design.html#java-exceptions"
              >Java Exceptions</externallink>
       section of the JNI specification for information on handling exceptions.
     </intro>
 
   <category id="memory" label="Memory Management">
     <intro>
-      These functions provide for the allocation and deallocation of 
+      These functions provide for the allocation and deallocation of
       memory used by <jvmti/> functionality and can be used to provide
       working memory for agents.
       Memory managed by <jvmti/> is not compatible with other memory
@@ -1059,7 +1059,7 @@
     <function id="Allocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="46">
       <synopsis>Allocate</synopsis>
       <description>
-	Allocate an area of memory through the <jvmti/> allocator. 
+	Allocate an area of memory through the <jvmti/> allocator.
         The allocated
 	memory should be freed with <functionlink id="Deallocate"></functionlink>.
       </description>
@@ -1097,9 +1097,9 @@
     <function id="Deallocate" jkernel="yes" phase="any" callbacksafe="safe" impl="notrace" num="47">
       <synopsis>Deallocate</synopsis>
       <description>
-	Deallocate <code>mem</code>  using the <jvmti/> allocator. 
+	Deallocate <code>mem</code>  using the <jvmti/> allocator.
         This function should
-	be used to deallocate any memory allocated and returned 
+	be used to deallocate any memory allocated and returned
         by a <jvmti/> function
 	(including memory allocated with <functionlink id="Allocate"></functionlink>).
         All allocated memory must be deallocated
@@ -1143,60 +1143,60 @@
                     <li><i>Why not alive?</i>
                       <ul>
                         <li>New.</li>
-                        <li>Terminated (<datalink 
+                        <li>Terminated (<datalink
                             id="JVMTI_THREAD_STATE_TERMINATED"><code>JVMTI_THREAD_STATE_TERMINATED</code></datalink>)</li>
                       </ul>
                     </li>
                   </ul>
                 </li>
-                <li>Alive (<datalink 
+                <li>Alive (<datalink
                     id="JVMTI_THREAD_STATE_ALIVE"><code>JVMTI_THREAD_STATE_ALIVE</code></datalink>)
                   <ul type="circle">
                     <li><i>Suspended?</i>
                       <ul>
-                        <li>Suspended (<datalink 
+                        <li>Suspended (<datalink
                             id="JVMTI_THREAD_STATE_SUSPENDED"><code>JVMTI_THREAD_STATE_SUSPENDED</code></datalink>)</li>
                         <li>Not suspended</li>
                       </ul>
                     </li>
                     <li><i>Interrupted?</i>
                       <ul>
-                        <li>Interrupted (<datalink 
+                        <li>Interrupted (<datalink
                             id="JVMTI_THREAD_STATE_INTERRUPTED"><code>JVMTI_THREAD_STATE_INTERRUPTED</code></datalink>)</li>
                         <li>Not interrupted.</li>
                       </ul>
                     </li>
                     <li><i>In native?</i>
                       <ul>
-                        <li>In native code (<datalink 
+                        <li>In native code (<datalink
                             id="JVMTI_THREAD_STATE_IN_NATIVE"><code>JVMTI_THREAD_STATE_IN_NATIVE</code></datalink>)</li>
                         <li>In Java programming language code</li>
                       </ul>
                     </li>
                     <li><i>What alive state?</i>
                       <ul>
-                        <li>Runnable (<datalink 
+                        <li>Runnable (<datalink
                             id="JVMTI_THREAD_STATE_RUNNABLE"><code>JVMTI_THREAD_STATE_RUNNABLE</code></datalink>)</li>
-                        <li>Blocked (<datalink 
+                        <li>Blocked (<datalink
                             id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER"><code>JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER</code></datalink>)</li>
-                        <li>Waiting (<datalink 
+                        <li>Waiting (<datalink
                             id="JVMTI_THREAD_STATE_WAITING"><code>JVMTI_THREAD_STATE_WAITING</code></datalink>)
                           <ul type="circle">
                             <li><i>Timed wait?</i>
                               <ul>
-                                <li>Indefinite (<datalink 
+                                <li>Indefinite (<datalink
                                     id="JVMTI_THREAD_STATE_WAITING_INDEFINITELY"><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></datalink></li>
-                                <li>Timed (<datalink 
+                                <li>Timed (<datalink
                                     id="JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT"><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></datalink>)</li>
                               </ul>
                             </li>
                             <li><i>Why waiting?</i>
                               <ul>
-                                <li>Object.wait (<datalink 
+                                <li>Object.wait (<datalink
                                     id="JVMTI_THREAD_STATE_IN_OBJECT_WAIT"><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></datalink>)</li>
-                                <li>LockSupport.park (<datalink 
+                                <li>LockSupport.park (<datalink
                                     id="JVMTI_THREAD_STATE_PARKED"><code>JVMTI_THREAD_STATE_PARKED</code></datalink>)</li>
-                                <li>Sleeping (<datalink 
+                                <li>Sleeping (<datalink
                                     id="JVMTI_THREAD_STATE_SLEEPING"><code>JVMTI_THREAD_STATE_SLEEPING</code></datalink>)</li>
                               </ul>
                             </li>
@@ -1210,7 +1210,7 @@
             </li>
           </ul>
         <p/>
-	The answers are represented by the following bit vector. 
+	The answers are represented by the following bit vector.
 	<constants id="jvmtiThreadState" label="Thread State Flags" kind="bits">
 	  <constant id="JVMTI_THREAD_STATE_ALIVE" num="0x0001">
 	    Thread is alive. Zero if thread is new (not started) or terminated.
@@ -1223,7 +1223,7 @@
 	  </constant>
 	  <constant id="JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER" num="0x0400">
 	    Thread is waiting to enter a synchronization block/method or,
-            after an <code>Object.wait()</code>, waiting to re-enter a 
+            after an <code>Object.wait()</code>, waiting to re-enter a
             synchronization block/method.
 	  </constant>
 	  <constant id="JVMTI_THREAD_STATE_WAITING" num="0x0080">
@@ -1250,8 +1250,8 @@
 	  <constant id="JVMTI_THREAD_STATE_SUSPENDED" num="0x100000">
 	    Thread suspended.
 	    <code>java.lang.Thread.suspend()</code>
-	    or a <jvmti/> suspend function 
-            (such as <functionlink id="SuspendThread"></functionlink>) 
+	    or a <jvmti/> suspend function
+            (such as <functionlink id="SuspendThread"></functionlink>)
             has been called on the thread. If this bit
 	    is set, the other bits refer to the thread state before suspension.
 	  </constant>
@@ -1313,7 +1313,7 @@
         <b>Rules</b>
         <p/>
         There can be no more than one answer to a question, although there can be no
-        answer (because the answer is unknown, does not apply, or none of the answers is 
+        answer (because the answer is unknown, does not apply, or none of the answers is
         correct).  An answer is set only when the enclosing answers match.
         That is, no more than one of
           <ul type="circle">
@@ -1322,32 +1322,32 @@
               <li><code>JVMTI_THREAD_STATE_WAITING</code></li>
           </ul>
         can be set (a <tm>J2SE</tm> compliant implementation will always set
-        one of these if <code>JVMTI_THREAD_STATE_ALIVE</code> is set). 
-        And if any of these are set, the enclosing answer 
-        <code>JVMTI_THREAD_STATE_ALIVE</code> is set. 
+        one of these if <code>JVMTI_THREAD_STATE_ALIVE</code> is set).
+        And if any of these are set, the enclosing answer
+        <code>JVMTI_THREAD_STATE_ALIVE</code> is set.
         No more than one of
           <ul type="circle">
               <li><code>JVMTI_THREAD_STATE_WAITING_INDEFINITELY</code></li>
               <li><code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code></li>
           </ul>
         can be set (a <tm>J2SE</tm> compliant implementation will always set
-        one of these if <code>JVMTI_THREAD_STATE_WAITING</code> is set). 
-        And if either is set, the enclosing answers 
-        <code>JVMTI_THREAD_STATE_ALIVE</code> and 
-        <code>JVMTI_THREAD_STATE_WAITING</code> are set. 
+        one of these if <code>JVMTI_THREAD_STATE_WAITING</code> is set).
+        And if either is set, the enclosing answers
+        <code>JVMTI_THREAD_STATE_ALIVE</code> and
+        <code>JVMTI_THREAD_STATE_WAITING</code> are set.
         No more than one of
           <ul type="circle">
               <li><code>JVMTI_THREAD_STATE_IN_OBJECT_WAIT</code></li>
               <li><code>JVMTI_THREAD_STATE_PARKED</code></li>
               <li><code>JVMTI_THREAD_STATE_SLEEPING</code></li>
           </ul>
-        can be set. And if any of these is set, the enclosing answers 
-        <code>JVMTI_THREAD_STATE_ALIVE</code> and 
-        <code>JVMTI_THREAD_STATE_WAITING</code> are set. 
+        can be set. And if any of these is set, the enclosing answers
+        <code>JVMTI_THREAD_STATE_ALIVE</code> and
+        <code>JVMTI_THREAD_STATE_WAITING</code> are set.
         Also, if <code>JVMTI_THREAD_STATE_SLEEPING</code> is set,
         then <code>JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT</code> is set.
-        If a state <i>A</i> is implemented using the mechanism of 
-        state <i>B</i> then it is state <i>A</i> which 
+        If a state <i>A</i> is implemented using the mechanism of
+        state <i>B</i> then it is state <i>A</i> which
         is returned by this function.
         For example, if <code>Thread.sleep(long)</code>
         is implemented using <code>Object.wait(long)</code>
@@ -1364,16 +1364,16 @@
         <p/>
         And finally,
         <code>JVMTI_THREAD_STATE_TERMINATED</code> cannot be set unless
-        <code>JVMTI_THREAD_STATE_ALIVE</code> is not set.  
+        <code>JVMTI_THREAD_STATE_ALIVE</code> is not set.
         <p/>
         The thread state representation is designed for extension in future versions
         of the specification; thread state values should be used accordingly, that is
-        they should not be used as ordinals.  
+        they should not be used as ordinals.
         Most queries can be made by testing a single bit, if use in a switch statement is desired,
         the state bits should be masked with the interesting bits.
-        All bits not defined above are reserved for future use.  
+        All bits not defined above are reserved for future use.
         A VM, compliant to the current specification, must set reserved bits to zero.
-        An agent should ignore reserved bits -- 
+        An agent should ignore reserved bits --
         they should not be assumed to be zero and thus should not be included in comparisons.
         <p/>
         <b>Examples</b>
@@ -1390,8 +1390,8 @@
         </example>
         The state of a thread at a <code>Object.wait(3000)</code> would be:
         <example>
-            JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_WAITING + 
-                JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT + 
+            JVMTI_THREAD_STATE_ALIVE + JVMTI_THREAD_STATE_WAITING +
+                JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT +
                 JVMTI_THREAD_STATE_MONITOR_WAITING
         </example>
         The state of a thread suspended while runnable would be:
@@ -1423,7 +1423,7 @@
         </example>
         To distinguish timed from untimed <code>Object.wait</code>:
         <example>
-	   if (state &amp; JVMTI_THREAD_STATE_IN_OBJECT_WAIT)  {  
+	   if (state &amp; JVMTI_THREAD_STATE_IN_OBJECT_WAIT)  {
              if (state &amp; JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT)  {
                printf("in Object.wait(long timeout)\n");
              } else {
@@ -1436,7 +1436,7 @@
         <p/>
         The thread state represented by <code>java.lang.Thread.State</code>
         returned from <code>java.lang.Thread.getState()</code> is a subset of the
-        information returned from this function.  
+        information returned from this function.
         The corresponding <code>java.lang.Thread.State</code> can be determined
         by using the provided conversion masks.
         For example, this returns the name of the <code>java.lang.Thread.State</code> thread state:
@@ -1466,7 +1466,7 @@
 	<param id="thread">
 	  <jthread null="current" started="maybe" impl="noconvert"/>
 	    <description>
-	      The thread to query. 
+	      The thread to query.
 	    </description>
 	</param>
 	<param id="thread_state_ptr">
@@ -1484,15 +1484,15 @@
     <function id="GetCurrentThread" phase="start" num="18" since="1.1">
       <synopsis>Get Current Thread</synopsis>
       <description>
-        Get the current thread.  
+        Get the current thread.
         The current thread is the Java programming language thread which has called the function.
         The function may return <code>NULL</code> in the start phase if the
         <internallink id="jvmtiCapabilities.can_generate_early_vmstart">
         <code>can_generate_early_vmstart</code></internallink> capability is enabled
         and the <code>java.lang.Thread</code> class has not been initialized yet.
         <p/>
-        Note that most <jvmti/> functions that take a thread 
-        as an argument will accept <code>NULL</code> to mean 
+        Note that most <jvmti/> functions that take a thread
+        as an argument will accept <code>NULL</code> to mean
         the current thread.
       </description>
       <origin>new</origin>
@@ -1516,12 +1516,12 @@
         Get all live threads.
         The threads are Java programming language threads;
         that is, threads that are attached to the VM.
-        A thread is live if <code>java.lang.Thread.isAlive()</code> 
+        A thread is live if <code>java.lang.Thread.isAlive()</code>
         would return <code>true</code>, that is, the thread has
         been started and has not yet died.
         The universe of threads is determined by the context of the <jvmti/>
         environment, which typically is all threads attached to the VM.
-        Note that this includes <jvmti/> agent threads 
+        Note that this includes <jvmti/> agent threads
         (see <functionlink id="RunAgentThread"/>).
       </description>
       <origin>jvmdi</origin>
@@ -1549,8 +1549,8 @@
     <function id="SuspendThread" num="5">
       <synopsis>Suspend Thread</synopsis>
       <description>
-        Suspend the specified thread. If the calling thread is specified, 
-        this function will not return until some other thread calls 
+        Suspend the specified thread. If the calling thread is specified,
+        this function will not return until some other thread calls
         <functionlink id="ResumeThread"></functionlink>.
         If the thread is currently suspended, this function
         does nothing and returns an error.
@@ -1563,7 +1563,7 @@
         <param id="thread">
 	  <jthread null="current"/>
 	    <description>
-	      The thread to suspend. 
+	      The thread to suspend.
 	    </description>
 	</param>
       </parameters>
@@ -1592,22 +1592,22 @@
         The threads are Java programming language threads;
         native threads which are not attached to the VM are not
         Java programming language threads.
-        A thread is live if <code>java.lang.Thread.isAlive()</code> 
+        A thread is live if <code>java.lang.Thread.isAlive()</code>
         would return <code>true</code>, that is, the thread has
         been started and has not yet died.
-        The universe of threads is determined 
+        The universe of threads is determined
         by the context of the <jvmti/>
         environment, which, typically, is all threads attached to the VM,
-        except critical VM internal threads and <jvmti/> agent threads 
+        except critical VM internal threads and <jvmti/> agent threads
 	(see <functionlink id="RunAgentThread"/>).
         <p/>
-        If the calling thread is specified, 
+        If the calling thread is specified,
         all other threads are suspended first then the caller thread is suspended -
-        this function will not return until some other thread calls 
+        this function will not return until some other thread calls
         <functionlink id="ResumeThread"></functionlink>.
         <p/>
         The list of actually
-        suspended threads is returned in 
+        suspended threads is returned in
         <paramlink id="suspended_list_ptr"></paramlink>.
         Suspension is as defined in <functionlink id="SuspendThread"></functionlink>.
         <functionlink id="ResumeThreadList"></functionlink>
@@ -1662,13 +1662,13 @@
     <function id="SuspendThreadList" num="92">
       <synopsis>Suspend Thread List</synopsis>
       <description>
-        Suspend the <paramlink id="request_count"></paramlink> 
-        threads specified in the 
-        <paramlink id="request_list"></paramlink> array. 
+        Suspend the <paramlink id="request_count"></paramlink>
+        threads specified in the
+        <paramlink id="request_list"></paramlink> array.
         Threads may be resumed with
         <functionlink id="ResumeThreadList"></functionlink> or
         <functionlink id="ResumeThread"></functionlink>.
-        If the calling thread is specified in the 
+        If the calling thread is specified in the
         <paramlink id="request_list"></paramlink> array, this function will
         not return until some other thread resumes it.
         Errors encountered in the suspension of a thread
@@ -1696,11 +1696,11 @@
         <param id="results">
 	  <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
 	  <description>
-	    An agent supplied array of 
+	    An agent supplied array of
 	    <paramlink id="request_count"></paramlink> elements.
 	    On return, filled with the error code for
 	    the suspend of the corresponding thread.
-	    The error code will be 
+	    The error code will be
 	    <errorlink id="JVMTI_ERROR_NONE"></errorlink>
 	    if the thread was suspended by this call.
 	    Possible error codes are those specified
@@ -1715,12 +1715,12 @@
     <function id="ResumeThread" num="6">
       <synopsis>Resume Thread</synopsis>
       <description>
-        Resume a suspended thread. 
+        Resume a suspended thread.
         Any threads currently suspended through
         a <jvmti/> suspend function (eg.
-        <functionlink id="SuspendThread"></functionlink>) 
+        <functionlink id="SuspendThread"></functionlink>)
         or <code>java.lang.Thread.suspend()</code>
-        will resume execution;  
+        will resume execution;
 	all other threads are unaffected.
       </description>
       <origin>jvmdi</origin>
@@ -1740,7 +1740,7 @@
           Thread was not suspended.
         </error>
         <error id="JVMTI_ERROR_INVALID_TYPESTATE">
-          The state of the thread has been modified, and is now inconsistent. 
+          The state of the thread has been modified, and is now inconsistent.
         </error>
       </errors>
     </function>
@@ -1748,12 +1748,12 @@
     <function id="ResumeThreadList" num="93">
       <synopsis>Resume Thread List</synopsis>
       <description>
-        Resume the <paramlink id="request_count"></paramlink> 
-        threads specified in the 
-        <paramlink id="request_list"></paramlink> array. 
+        Resume the <paramlink id="request_count"></paramlink>
+        threads specified in the
+        <paramlink id="request_list"></paramlink> array.
         Any thread suspended through
         a <jvmti/> suspend function (eg.
-        <functionlink id="SuspendThreadList"></functionlink>) 
+        <functionlink id="SuspendThreadList"></functionlink>)
         or <code>java.lang.Thread.suspend()</code>
         will resume execution.
       </description>
@@ -1777,11 +1777,11 @@
         <param id="results">
 	  <outbuf incount="request_count"><enum>jvmtiError</enum></outbuf>
 	  <description>
-	    An agent supplied array of 
+	    An agent supplied array of
 	    <paramlink id="request_count"></paramlink> elements.
 	    On return, filled with the error code for
 	    the resume of the corresponding thread.
-	    The error code will be 
+	    The error code will be
 	    <errorlink id="JVMTI_ERROR_NONE"></errorlink>
 	    if the thread was suspended by this call.
 	    Possible error codes are those specified
@@ -1796,9 +1796,9 @@
     <function id="StopThread" num="7">
       <synopsis>Stop Thread</synopsis>
       <description>
-	Send the specified asynchronous exception to the specified thread 
+	Send the specified asynchronous exception to the specified thread
 	(similar to <code>java.lang.Thread.stop</code>).
-	Normally, this function is used to kill the specified thread with an 
+	Normally, this function is used to kill the specified thread with an
 	instance of the exception <code>ThreadDeath</code>.
       </description>
       <origin>jvmdi</origin>
@@ -1883,7 +1883,7 @@
 	</field>
       </typedef>
       <description>
-	Get thread information. The fields of the <datalink id="jvmtiThreadInfo"/> structure 
+	Get thread information. The fields of the <datalink id="jvmtiThreadInfo"/> structure
 	are filled in with details of the specified thread.
       </description>
       <origin>jvmdi</origin>
@@ -1910,8 +1910,8 @@
     <function id="GetOwnedMonitorInfo" num="10">
       <synopsis>Get Owned Monitor Info</synopsis>
       <description>
-	Get information about the monitors owned by the 
-	specified thread. 
+	Get information about the monitors owned by the
+	specified thread.
       </description>
       <origin>jvmdiClone</origin>
       <capabilities>
@@ -1943,7 +1943,7 @@
 
     <function id="GetOwnedMonitorStackDepthInfo" num="153" since="1.1">
       <synopsis>Get Owned Monitor Stack Depth Info</synopsis>
-      <typedef id="jvmtiMonitorStackDepthInfo" 
+      <typedef id="jvmtiMonitorStackDepthInfo"
                label="Monitor stack depth information structure">
         <field id="monitor">
 	  <jobject/>
@@ -1954,18 +1954,18 @@
         <field id="stack_depth">
 	  <jint/>
 	  <description>
-	    The stack depth.  Corresponds to the stack depth used in the 
+	    The stack depth.  Corresponds to the stack depth used in the
             <internallink id="stack">Stack Frame functions</internallink>.
             That is, zero is the current frame, one is the frame which
-            called the current frame. And it is negative one if the 
-	    implementation cannot determine the stack depth (e.g., for 
+            called the current frame. And it is negative one if the
+	    implementation cannot determine the stack depth (e.g., for
 	    monitors acquired by JNI <code>MonitorEnter</code>).
 	  </description>
 	</field>
       </typedef>
       <description>
-	Get information about the monitors owned by the 
-	specified thread and the depth of the stack frame which locked them. 
+	Get information about the monitors owned by the
+	specified thread and the depth of the stack frame which locked them.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -2000,7 +2000,7 @@
     <function id="GetCurrentContendedMonitor" num="11">
       <synopsis>Get Current Contended Monitor</synopsis>
       <description>
-	Get the object, if any, whose monitor the specified thread is waiting to 
+	Get the object, if any, whose monitor the specified thread is waiting to
 	enter or waiting to regain through <code>java.lang.Object.wait</code>.
       </description>
       <origin>jvmdi</origin>
@@ -2057,7 +2057,7 @@
               <void/>
             </outptr>
               <description>
-                The <code>arg</code> parameter passed to 
+                The <code>arg</code> parameter passed to
                 <functionlink id="RunAgentThread"></functionlink>.
               </description>
           </param>
@@ -2071,13 +2071,13 @@
 	The parameter <paramlink id="arg"></paramlink> is forwarded on to the
 	<functionlink id="jvmtiStartFunction">start function</functionlink>
 	(specified with <paramlink id="proc"></paramlink>) as its single argument.
-	This function allows the creation of agent threads 
-	for handling communication with another process or for handling events 
-	without the need to load a special subclass of <code>java.lang.Thread</code> or 
-	implementer of <code>java.lang.Runnable</code>. 
+	This function allows the creation of agent threads
+	for handling communication with another process or for handling events
+	without the need to load a special subclass of <code>java.lang.Thread</code> or
+	implementer of <code>java.lang.Runnable</code>.
 	Instead, the created thread can run entirely in native code.
 	However, the created thread does require a newly created instance
-	of <code>java.lang.Thread</code> (referenced by the argument <code>thread</code>) to 
+	of <code>java.lang.Thread</code> (referenced by the argument <code>thread</code>) to
 	which it will be associated.
 	The thread object can be created with JNI calls.
 	<p/>
@@ -2105,14 +2105,14 @@
         added to the thread group and the thread is not seen on queries of the thread
         group at either the Java programming language or <jvmti/> levels.
 	<p/>
-        The thread is not visible to Java programming language queries but is 
-        included in <jvmti/> queries (for example, 
+        The thread is not visible to Java programming language queries but is
+        included in <jvmti/> queries (for example,
         <functionlink id="GetAllThreads"/> and
         <functionlink id="GetAllStackTraces"/>).
 	<p/>
 	Upon execution of <code>proc</code>, the new thread will be attached to the
-	VM -- see the JNI documentation on 
-	<externallink id="docs/technotes/guides/jni/spec/invocation.html#attaching_to_the_vm"
+	VM -- see the JNI documentation on
+	<externallink id="jni/invocation.html#attaching-to-the-vm"
 		      >Attaching to the VM</externallink>.
       </description>
       <origin>jvmdiClone</origin>
@@ -2152,8 +2152,8 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_INVALID_PRIORITY"> 
-            <paramlink id="priority"/> is less than 
+	<error id="JVMTI_ERROR_INVALID_PRIORITY">
+            <paramlink id="priority"/> is less than
             <datalink id="JVMTI_THREAD_MIN_PRIORITY"/>
               or greater than
             <datalink id="JVMTI_THREAD_MAX_PRIORITY"/>
@@ -2169,7 +2169,7 @@
         This value is <code>NULL</code> unless set with this function.
 	Agents can allocate memory in which they store thread specific
         information. By setting thread-local storage it can then be
-	accessed with 
+	accessed with
 	<functionlink id="GetThreadLocalStorage"></functionlink>.
 	<p/>
         This function is called by the agent to set the value of the <jvmti/>
@@ -2188,10 +2188,10 @@
 	    </description>
 	</param>
         <param id="data">
-	  <inbuf> 
-	    <void/> 
-	    <nullok>value is set to <code>NULL</code></nullok> 
-	  </inbuf> 
+	  <inbuf>
+	    <void/>
+	    <nullok>value is set to <code>NULL</code></nullok>
+	  </inbuf>
 	  <description>
 	    The value to be entered into the thread-local storage.
 	  </description>
@@ -2205,7 +2205,7 @@
       <synopsis>Get Thread Local Storage</synopsis>
       <description>
         Called by the agent to get the value of the <jvmti/> thread-local
-        storage. 
+        storage.
       </description>
       <origin>jvmpi</origin>
       <capabilities>
@@ -2220,10 +2220,10 @@
         <param id="data_ptr">
 	  <agentbuf><void/></agentbuf>
 	  <description>
-	    Pointer through which the value of the thread local 
+	    Pointer through which the value of the thread local
 	    storage is returned.
 	    If thread-local storage has not been set with
-	    <functionlink id="SetThreadLocalStorage"></functionlink> the returned 
+	    <functionlink id="SetThreadLocalStorage"></functionlink> the returned
 	    pointer is <code>NULL</code>.
 	  </description>
 	</param>
@@ -2294,8 +2294,8 @@
 	</field>
       </typedef>
       <description>
-	Get information about the thread group. The fields of the 
-	<functionlink id="jvmtiThreadGroupInfo"></functionlink> structure 
+	Get information about the thread group. The fields of the
+	<functionlink id="jvmtiThreadGroupInfo"></functionlink> structure
 	are filled in with details of the specified thread group.
       </description>
       <origin>jvmdi</origin>
@@ -2312,7 +2312,7 @@
 	  <outptr><struct>jvmtiThreadGroupInfo</struct></outptr>
 	  <description>
 	    On return, filled with information describing the specified
-	    thread group. 
+	    thread group.
 	  </description>
 	</param>
       </parameters>
@@ -2373,15 +2373,15 @@
         <p/>
         Stack frames are as described in
         <vmspec chapter="3.6"/>,
-        That is, they correspond to method 
-        invocations (including native methods) but do not correspond to platform native or 
+        That is, they correspond to method
+        invocations (including native methods) but do not correspond to platform native or
         VM internal frames.
         <p/>
         A <jvmti/> implementation may use method invocations to launch a thread and
         the corresponding frames may be included in the stack as presented by these functions --
         that is, there may be frames shown
         deeper than <code>main()</code> and <code>run()</code>.
-        However this presentation must be consistent across all <jvmti/> functionality which 
+        However this presentation must be consistent across all <jvmti/> functionality which
         uses stack frames or stack depth.
     </intro>
 
@@ -2425,16 +2425,16 @@
 	    <struct>jvmtiFrameInfo</struct>
 	  </outbuf>
 	    <description>
-	      On return, this agent allocated buffer is filled 
-	      with stack frame information.  
+	      On return, this agent allocated buffer is filled
+	      with stack frame information.
 	    </description>
 	</field>
         <field id="frame_count">
 	  <jint/>
 	  <description>
-	    On return, the number of records filled into 
+	    On return, the number of records filled into
             <code>frame_buffer</code>.
-            This will be 
+            This will be
             min(<code>max_frame_count</code>, <i>stackDepth</i>).
 	  </description>
 	</field>
@@ -2445,7 +2445,7 @@
       <description>
         Get information about the stack of a thread.
         If <paramlink id="max_frame_count"></paramlink> is less than the depth of the stack,
-        the <paramlink id="max_frame_count"></paramlink> topmost frames are returned, 
+        the <paramlink id="max_frame_count"></paramlink> topmost frames are returned,
         otherwise the entire stack is returned.
         The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
         <p/>
@@ -2457,23 +2457,23 @@
 jint count;
 jvmtiError err;
 
-err = (*jvmti)-&gt;GetStackTrace(jvmti, aThread, 0, 5, 
+err = (*jvmti)-&gt;GetStackTrace(jvmti, aThread, 0, 5,
                                frames, &amp;count);
 if (err == JVMTI_ERROR_NONE &amp;&amp; count &gt;= 1) {
    char *methodName;
-   err = (*jvmti)-&gt;GetMethodName(jvmti, frames[0].method, 
+   err = (*jvmti)-&gt;GetMethodName(jvmti, frames[0].method,
                        &amp;methodName, NULL, NULL);
    if (err == JVMTI_ERROR_NONE) {
       printf("Executing method: %s", methodName);
    }
 }
         </example>
-        <todo> 
+        <todo>
           check example code.
         </todo>
         <p/>
         The <paramlink id="thread"></paramlink> need not be suspended
-        to call this function.  
+        to call this function.
         <p/>
         The <functionlink id="GetLineNumberTable"></functionlink>
         function can be used to map locations to line numbers. Note that
@@ -2492,15 +2492,15 @@
         <param id="start_depth">
 	  <jint/>
 	  <description>
-	    Begin retrieving frames at this depth.  
-            If non-negative, count from the current frame, 
-            the first frame retrieved is at depth <code>start_depth</code>.  
+	    Begin retrieving frames at this depth.
+            If non-negative, count from the current frame,
+            the first frame retrieved is at depth <code>start_depth</code>.
             For example, if zero, start from the current frame; if one, start from the
             caller of the current frame; if two, start from the caller of the
             caller of the current frame; and so on.
             If negative, count from below the oldest frame,
-            the first frame retrieved is at depth <i>stackDepth</i><code> + start_depth</code>,  
-            where <i>stackDepth</i> is the count of frames on the stack.  
+            the first frame retrieved is at depth <i>stackDepth</i><code> + start_depth</code>,
+            where <i>stackDepth</i> is the count of frames on the stack.
             For example, if negative one, only the oldest frame is retrieved;
             if negative two, start from the frame called by the oldest frame.
 	  </description>
@@ -2516,17 +2516,17 @@
 	    <struct>jvmtiFrameInfo</struct>
 	  </outbuf>
 	    <description>
-	      On return, this agent allocated buffer is filled 
-	      with stack frame information.  
+	      On return, this agent allocated buffer is filled
+	      with stack frame information.
 	    </description>
 	</param>
         <param id="count_ptr">
 	  <outptr><jint/></outptr>
 	  <description>
 	    On return, points to the number of records filled in.
-            For non-negative <code>start_depth</code>, this will be 
+            For non-negative <code>start_depth</code>, this will be
             min(<code>max_frame_count</code>, <i>stackDepth</i><code> - start_depth</code>).
-            For negative <code>start_depth</code>, this will be 
+            For negative <code>start_depth</code>, this will be
             min(<code>max_frame_count</code>, <code>-start_depth</code>).
 	  </description>
 	</param>
@@ -2546,23 +2546,23 @@
         Get information about the stacks of all live threads
         (including <internallink id="RunAgentThread">agent threads</internallink>).
         If <paramlink id="max_frame_count"/> is less than the depth of a stack,
-        the <paramlink id="max_frame_count"/> topmost frames are returned for that thread, 
+        the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
         otherwise the entire stack is returned.
         The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
         <p/>
-        All stacks are collected simultaneously, that is, no changes will occur to the 
+        All stacks are collected simultaneously, that is, no changes will occur to the
         thread state or stacks between the sampling of one thread and the next.
         The threads need not be suspended.
-        
+
         <example>
 jvmtiStackInfo *stack_info;
 jint thread_count;
 int ti;
 jvmtiError err;
 
-err = (*jvmti)-&gt;GetAllStackTraces(jvmti, MAX_FRAMES, &amp;stack_info, &amp;thread_count); 
+err = (*jvmti)-&gt;GetAllStackTraces(jvmti, MAX_FRAMES, &amp;stack_info, &amp;thread_count);
 if (err != JVMTI_ERROR_NONE) {
-   ...   
+   ...
 }
 for (ti = 0; ti &lt; thread_count; ++ti) {
    jvmtiStackInfo *infop = &amp;stack_info[ti];
@@ -2577,9 +2577,9 @@
    }
 }
 /* this one Deallocate call frees all data allocated by GetAllStackTraces */
-err = (*jvmti)-&gt;Deallocate(jvmti, stack_info); 
+err = (*jvmti)-&gt;Deallocate(jvmti, stack_info);
         </example>
-        <todo> 
+        <todo>
           check example code.
         </todo>
 
@@ -2599,12 +2599,12 @@
 	    <struct>jvmtiStackInfo</struct>
 	  </allocbuf>
 	    <description>
-	      On return, this buffer is filled 
-	      with stack information for each thread.  
-              The number of <datalink id="jvmtiStackInfo"/> records is determined 
+	      On return, this buffer is filled
+	      with stack information for each thread.
+              The number of <datalink id="jvmtiStackInfo"/> records is determined
               by <paramlink id="thread_count_ptr"/>.
               <p/>
-              Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/> 
+              Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
               buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
               These buffers must not be separately deallocated.
 	    </description>
@@ -2625,11 +2625,11 @@
       <description>
         Get information about the stacks of the supplied threads.
         If <paramlink id="max_frame_count"/> is less than the depth of a stack,
-        the <paramlink id="max_frame_count"/> topmost frames are returned for that thread, 
+        the <paramlink id="max_frame_count"/> topmost frames are returned for that thread,
         otherwise the entire stack is returned.
         The topmost frames, those most recently invoked, are at the beginning of the returned buffer.
         <p/>
-        All stacks are collected simultaneously, that is, no changes will occur to the 
+        All stacks are collected simultaneously, that is, no changes will occur to the
         thread state or stacks between the sampling one thread and the next.
         The threads need not be suspended.
         <p/>
@@ -2667,12 +2667,12 @@
 	    <struct>jvmtiStackInfo</struct>
 	  </allocbuf>
 	    <description>
-	      On return, this buffer is filled 
-	      with stack information for each thread.  
-              The number of <datalink id="jvmtiStackInfo"/> records is determined 
+	      On return, this buffer is filled
+	      with stack information for each thread.
+              The number of <datalink id="jvmtiStackInfo"/> records is determined
               by <paramlink id="thread_count"/>.
               <p/>
-              Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/> 
+              Note that this buffer is allocated to include the <datalink id="jvmtiFrameInfo"/>
               buffers pointed to by <datalink id="jvmtiStackInfo.frame_buffer"/>.
               These buffers must not be separately deallocated.
 	    </description>
@@ -2703,8 +2703,8 @@
       <capabilities>
         <required id="can_get_async_stack_trace"></required>
         <capability id="can_show_JVM_spec_async_frames">
-          If <code>false</code>, 
-          <paramlink id="use_java_stack"></paramlink> 
+          If <code>false</code>,
+          <paramlink id="use_java_stack"></paramlink>
           must be <code>false</code>.
         </capability>
       </capabilities>
@@ -2713,7 +2713,7 @@
 	  <jboolean/>
 	  <description>
 	    Return the stack showing <vmspec/>
-	    model of the stack; 
+	    model of the stack;
 	    otherwise, show the internal representation of the stack with
 	    inlined and optimized methods missing.  If the virtual machine
 	    is using the <i>Java Virtual Machine Specification</i> stack model
@@ -2734,9 +2734,9 @@
 	  </outbuf>
 	    <description>
 	      The agent passes in a buffer
-	      large enough to hold <code>max_count</code> records of 
+	      large enough to hold <code>max_count</code> records of
 	      <datalink id="jvmtiFrameInfo"></datalink>.  This buffer must be
-	      pre-allocated by the agent.  
+	      pre-allocated by the agent.
 	    </description>
 	</param>
         <param id="count_ptr">
@@ -2788,27 +2788,27 @@
       <synopsis>Pop Frame</synopsis>
       <description>
 	Pop the current frame of <code>thread</code>'s stack.
-	Popping a frame takes you to the previous frame.  
-	When the thread is resumed, the execution 
+	Popping a frame takes you to the previous frame.
+	When the thread is resumed, the execution
 	state of the thread is reset to the state
 	immediately before the called method was invoked.
 	That is (using <vmspec/> terminology):
 	  <ul>
 	    <li>the current frame is discarded as the previous frame becomes the current one</li>
 	    <li>the operand stack is restored--the argument values are added back
-	      and if the invoke was not <code>invokestatic</code>, 
+	      and if the invoke was not <code>invokestatic</code>,
 	      <code>objectref</code> is added back as well</li>
 	    <li>the Java virtual machine PC is restored to the opcode
 	      of the invoke instruction</li>
 	  </ul>
 	Note however, that any changes to the arguments, which
-	occurred in the called method, remain; 
-	when execution continues, the first instruction to 
-	execute will be the invoke.  
+	occurred in the called method, remain;
+	when execution continues, the first instruction to
+	execute will be the invoke.
 	<p/>
-	Between calling <code>PopFrame</code> and resuming the 
-	thread the state of the stack is undefined.  
-	To pop frames beyond the first, 
+	Between calling <code>PopFrame</code> and resuming the
+	thread the state of the stack is undefined.
+	To pop frames beyond the first,
 	these three steps must be repeated:
 	<ul>
 	  <li>suspend the thread via an event (step, breakpoint, ...)</li>
@@ -2816,11 +2816,11 @@
 	  <li>resume the thread</li>
 	</ul>
 	<p/>
-	A lock acquired by calling the called method 
-	(if it is a <code>synchronized</code>  method) 
+	A lock acquired by calling the called method
+	(if it is a <code>synchronized</code>  method)
 	and locks acquired by entering <code>synchronized</code>
-	blocks within the called method are released. 
-	Note: this does not apply to native locks or 
+	blocks within the called method are released.
+	Note: this does not apply to native locks or
 	<code>java.util.concurrent.locks</code> locks.
 	<p/>
 	Finally blocks are not executed.
@@ -2829,7 +2829,7 @@
 	<p/>
 	The specified thread must be suspended (which implies it cannot be the current thread).
 	<p/>
-	Both the called method and calling method must be non-native Java programming 
+	Both the called method and calling method must be non-native Java programming
         language methods.
 	<p/>
 	No <jvmti/> events are generated by this function.
@@ -2892,7 +2892,7 @@
 	<param id="location_ptr">
 	  <outptr><jlocation/></outptr>
 	  <description>
-	    On return, points to the index of the currently 
+	    On return, points to the index of the currently
 	    executing instruction.
             Is set to <code>-1</code> if the frame is executing
             a native method.
@@ -2906,11 +2906,11 @@
     <function id="NotifyFramePop" num="20">
       <synopsis>Notify Frame Pop</synopsis>
       <description>
-	When the frame that is currently at <paramlink id="depth"></paramlink> 
+	When the frame that is currently at <paramlink id="depth"></paramlink>
         is popped from the stack, generate a
-	<eventlink id="FramePop"></eventlink> event.  See the 
+	<eventlink id="FramePop"></eventlink> event.  See the
 	<eventlink id="FramePop"></eventlink> event for details.
-        Only frames corresponding to non-native Java programming language 
+        Only frames corresponding to non-native Java programming language
         methods can receive notification.
         <p/>
         The specified thread must either be the current thread
@@ -2922,7 +2922,7 @@
       </capabilities>
       <parameters>
  	<param id="thread">
-	  <jthread null="current" frame="depth"/>	  
+	  <jthread null="current" frame="depth"/>
 	  <description>
 	    The thread of the frame for which the frame pop event will be generated.
 	  </description>
@@ -2935,7 +2935,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
+	<error id="JVMTI_ERROR_OPAQUE_FRAME">
 	  The frame at <code>depth</code> is executing a
           native method.
 	</error>
@@ -2954,7 +2954,7 @@
       The method which will return early is referred to as the <i>called method</i>.
       The called method is the current method
       (as defined by
-      <vmspec chapter="3.6"/>) 
+      <vmspec chapter="3.6"/>)
       for the specified thread at
       the time the function is called.
       <p/>
@@ -2962,17 +2962,17 @@
       The return occurs when execution of Java programming
       language code is resumed on this thread.
       Between calling one of these functions and resumption
-      of thread execution, the state of the stack is undefined.  
+      of thread execution, the state of the stack is undefined.
       <p/>
-      No further instructions are executed in the called method.  
+      No further instructions are executed in the called method.
       Specifically, finally blocks are not executed.
       Note: this can cause inconsistent states in the application.
       <p/>
-      A lock acquired by calling the called method 
-      (if it is a <code>synchronized</code>  method) 
+      A lock acquired by calling the called method
+      (if it is a <code>synchronized</code>  method)
       and locks acquired by entering <code>synchronized</code>
-      blocks within the called method are released. 
-      Note: this does not apply to native locks or 
+      blocks within the called method are released.
+      Note: this does not apply to native locks or
       <code>java.util.concurrent.locks</code> locks.
       <p/>
       Events, such as <eventlink id="MethodExit"></eventlink>,
@@ -2989,7 +2989,7 @@
       <description>
 	This function can be used to return from a method whose
         result type is <code>Object</code>
-        or a subclass of <code>Object</code>. 
+        or a subclass of <code>Object</code>.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -3005,7 +3005,7 @@
 	<param id="value">
 	  <jobject/>
 	  <description>
-	    The return value for the called frame. 
+	    The return value for the called frame.
             An object or <code>NULL</code>.
 	  </description>
 	</param>
@@ -3017,12 +3017,12 @@
           Or the implementation is unable to provide
           this functionality on this frame.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
-	  The result type of the called method is not 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
+	  The result type of the called method is not
           <code>Object</code> or a subclass of <code>Object</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
-	  The supplied <paramlink id="value"/> is not compatible with the 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
+	  The supplied <paramlink id="value"/> is not compatible with the
           result type of the called method.
 	</error>
 	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
@@ -3039,8 +3039,8 @@
       <description>
 	This function can be used to return from a method whose
         result type is <code>int</code>, <code>short</code>,
-        <code>char</code>, <code>byte</code>, or 
-	<code>boolean</code>. 
+        <code>char</code>, <code>byte</code>, or
+	<code>boolean</code>.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -3067,10 +3067,10 @@
           Or the implementation is unable to provide
           this functionality on this frame.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
-	  The result type of the called method is not 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
+	  The result type of the called method is not
           <code>int</code>, <code>short</code>,
-          <code>char</code>, <code>byte</code>, or 
+          <code>char</code>, <code>byte</code>, or
   	  <code>boolean</code>.
 	</error>
 	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
@@ -3113,7 +3113,7 @@
           Or the implementation is unable to provide
           this functionality on this frame.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
 	  The result type of the called method is not <code>long</code>.
 	</error>
 	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
@@ -3156,7 +3156,7 @@
           Or the implementation is unable to provide
           this functionality on this frame.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
 	  The result type of the called method is not <code>float</code>.
 	</error>
 	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
@@ -3197,7 +3197,7 @@
 	  Attempted to return early from a frame corresponding to a native method.
           Or the implementation is unable to provide this functionality on this frame.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
 	  The result type of the called method is not <code>double</code>.
 	</error>
 	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
@@ -3234,8 +3234,8 @@
           Or the implementation is unable to provide
           this functionality on this frame.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
-	  The called method has a result type.  
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
+	  The called method has a result type.
 	</error>
 	<error id="JVMTI_ERROR_THREAD_NOT_SUSPENDED">
 	  Thread was not the current thread and was not suspended.
@@ -3254,12 +3254,12 @@
       Functionality includes the ability to view the objects in the
       heap and to tag these objects.
     </intro>
-   
+
     <intro id="objectTags" label="Object Tags">
       A <i>tag</i> is a value associated with an object.
       Tags are explicitly set by the agent using the
       <functionlink id="SetTag"></functionlink> function or by
-      callback functions such as <functionlink id="jvmtiHeapIterationCallback"/>.    
+      callback functions such as <functionlink id="jvmtiHeapIterationCallback"/>.
       <p/>
       Tags are local to the environment; that is, the tags of one
       environment are not visible in another.
@@ -3267,10 +3267,10 @@
       Tags are <code>jlong</code> values which can be used
       simply to mark an object or to store a pointer to more detailed
       information.  Objects which have not been tagged have a
-      tag of zero.  
+      tag of zero.
       Setting a tag to zero makes the object untagged.
     </intro>
-   
+
     <intro id="heapCallbacks" label="Heap Callback Functions">
         Heap functions which iterate through the heap and recursively
         follow object references use agent supplied callback functions
@@ -3278,7 +3278,7 @@
         <p/>
         These heap callback functions must adhere to the following restrictions --
         These callbacks must not use JNI functions.
-        These callbacks must not use <jvmti/> functions except 
+        These callbacks must not use <jvmti/> functions except
         <i>callback safe</i> functions which
         specifically allow such use (see the raw monitor, memory management,
         and environment local storage functions).
@@ -3289,7 +3289,7 @@
         be invoked at a time.
         <p/>
         The Heap Filter Flags can be used to prevent reporting
-        based on the tag status of an object or its class.  
+        based on the tag status of an object or its class.
         If no flags are set (the <code>jint</code> is zero), objects
         will not be filtered out.
 
@@ -3310,43 +3310,43 @@
 
         <p/>
         The Heap Visit Control Flags are returned by the heap callbacks
-        and can be used to abort the iteration.  For the 
-        <functionlink id="jvmtiHeapReferenceCallback">Heap 
-        Reference Callback</functionlink>, it can also be used 
+        and can be used to abort the iteration.  For the
+        <functionlink id="jvmtiHeapReferenceCallback">Heap
+        Reference Callback</functionlink>, it can also be used
         to prune the graph of traversed references
         (<code>JVMTI_VISIT_OBJECTS</code> is not set).
 
-        <constants id="jvmtiHeapVisitControl" 
-                   label="Heap Visit Control Flags" 
-                   kind="bits" 
+        <constants id="jvmtiHeapVisitControl"
+                   label="Heap Visit Control Flags"
+                   kind="bits"
                    since="1.1">
 	  <constant id="JVMTI_VISIT_OBJECTS" num="0x100">
             If we are visiting an object and if this callback
-            was initiated by <functionlink id="FollowReferences"/>, 
+            was initiated by <functionlink id="FollowReferences"/>,
             traverse the references of this object.
             Otherwise ignored.
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_VISIT_ABORT" num="0x8000">
 	    Abort the iteration.  Ignore all other bits.
 	  </constant>
 	</constants>
 
         <p/>
-        The Heap Reference Enumeration is provided by the 
-        <functionlink id="jvmtiHeapReferenceCallback">Heap 
-        Reference Callback</functionlink> and 
-        <functionlink id="jvmtiPrimitiveFieldCallback">Primitive Field 
-        Callback</functionlink> to 
+        The Heap Reference Enumeration is provided by the
+        <functionlink id="jvmtiHeapReferenceCallback">Heap
+        Reference Callback</functionlink> and
+        <functionlink id="jvmtiPrimitiveFieldCallback">Primitive Field
+        Callback</functionlink> to
         describe the kind of reference
         being reported.
 
-        <constants id="jvmtiHeapReferenceKind" 
-                   label="Heap Reference Enumeration" 
-                   kind="enum" 
+        <constants id="jvmtiHeapReferenceKind"
+                   label="Heap Reference Enumeration"
+                   kind="enum"
                    since="1.1">
 	  <constant id="JVMTI_HEAP_REFERENCE_CLASS" num="1">
 	    Reference from an object to its class.
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_HEAP_REFERENCE_FIELD" num="2">
 	    Reference from an object to the value of one of its instance fields.
 	  </constant>
@@ -3361,11 +3361,11 @@
 	  </constant>
 	  <constant id="JVMTI_HEAP_REFERENCE_PROTECTION_DOMAIN" num="6">
 	    Reference from a class to its protection domain.
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_HEAP_REFERENCE_INTERFACE" num="7">
-            Reference from a class to one of its interfaces. 
+            Reference from a class to one of its interfaces.
             Note: interfaces are defined via a constant pool reference,
-            so the referenced interfaces may also be reported with a 
+            so the referenced interfaces may also be reported with a
             <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
 	  </constant>
 	  <constant id="JVMTI_HEAP_REFERENCE_STATIC_FIELD" num="8">
@@ -3375,10 +3375,10 @@
 	    Reference from a class to a resolved entry in the constant pool.
 	  </constant>
 	  <constant id="JVMTI_HEAP_REFERENCE_SUPERCLASS" num="10">
-            Reference from a class to its superclass. 
+            Reference from a class to its superclass.
             A callback is not sent if the superclass is <code>java.lang.Object</code>.
             Note: loaded classes define superclasses via a constant pool
-            reference, so the referenced superclass may also be reported with 
+            reference, so the referenced superclass may also be reported with
             a <code>JVMTI_HEAP_REFERENCE_CONSTANT_POOL</code> reference kind.
 	  </constant>
 	  <constant id="JVMTI_HEAP_REFERENCE_JNI_GLOBAL" num="21">
@@ -3408,88 +3408,88 @@
         Definitions for the single character type descriptors of
         primitive types.
 
-        <constants id="jvmtiPrimitiveType" 
-                   label="Primitive Type Enumeration" 
-                   kind="enum" 
+        <constants id="jvmtiPrimitiveType"
+                   label="Primitive Type Enumeration"
+                   kind="enum"
                    since="1.1">
 	  <constant id="JVMTI_PRIMITIVE_TYPE_BOOLEAN" num="90">
             'Z' - Java programming language <code>boolean</code> - JNI <code>jboolean</code>
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_PRIMITIVE_TYPE_BYTE" num="66">
             'B' - Java programming language <code>byte</code> - JNI <code>jbyte</code>
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_PRIMITIVE_TYPE_CHAR" num="67">
             'C' - Java programming language <code>char</code> - JNI <code>jchar</code>
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_PRIMITIVE_TYPE_SHORT" num="83">
             'S' - Java programming language <code>short</code> - JNI <code>jshort</code>
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_PRIMITIVE_TYPE_INT" num="73">
             'I' - Java programming language <code>int</code> - JNI <code>jint</code>
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_PRIMITIVE_TYPE_LONG" num="74">
             'J' - Java programming language <code>long</code> - JNI <code>jlong</code>
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_PRIMITIVE_TYPE_FLOAT" num="70">
             'F' - Java programming language <code>float</code> - JNI <code>jfloat</code>
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_PRIMITIVE_TYPE_DOUBLE" num="68">
             'D' - Java programming language <code>double</code> - JNI <code>jdouble</code>
-	  </constant>	  
+	  </constant>
 	</constants>
     </intro>
 
-      <typedef id="jvmtiHeapReferenceInfoField" 
-               label="Reference information structure for Field references" 
+      <typedef id="jvmtiHeapReferenceInfoField"
+               label="Reference information structure for Field references"
                since="1.1">
         <description>
-          Reference information returned for 
-          <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> and 
+          Reference information returned for
+          <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> and
           <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
         </description>
 	<field id="index">
 	  <jint/>
-	  <description>	    
-            For <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>, the 
-            referrer object is not a class or an inteface.  
-            In this case, <code>index</code> is the index of the field 
-            in the class of the referrer object.  
+	  <description>
+            For <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>, the
+            referrer object is not a class or an inteface.
+            In this case, <code>index</code> is the index of the field
+            in the class of the referrer object.
             This class is referred to below as <i>C</i>.
             <p/>
             For <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
             the referrer object is a class (referred to below as <i>C</i>)
             or an interface (referred to below as <i>I</i>).
-            In this case, <code>index</code> is the index of the field in 
+            In this case, <code>index</code> is the index of the field in
             that class or interface.
             <p/>
-            If the referrer object is not an interface, then the field 
-            indices are determined as follows: 
+            If the referrer object is not an interface, then the field
+            indices are determined as follows:
             <ul>
               <li>make a list of all the fields in <i>C</i> and its
-                  superclasses, starting with all the fields in 
+                  superclasses, starting with all the fields in
                   <code>java.lang.Object</code> and ending with all the
                   fields in <i>C</i>.</li>
-              <li>Within this list, put 
+              <li>Within this list, put
                   the fields for a given class in the order returned by
                   <functionlink id="GetClassFields"/>.</li>
-              <li>Assign the fields in this list indices 
-                  <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i> 
+              <li>Assign the fields in this list indices
+                  <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
                   is the count of the fields in all the interfaces
-                  implemented by <i>C</i>. 
-                  Note that <i>C</i> implements all interfaces 
+                  implemented by <i>C</i>.
+                  Note that <i>C</i> implements all interfaces
                   directly implemented by its superclasses; as well
                   as all superinterfaces of these interfaces.</li>
             </ul>
-            If the referrer object is an interface, then the field 
+            If the referrer object is an interface, then the field
             indices are determined as follows:
             <ul>
-              <li>make a list of the fields directly declared in 
+              <li>make a list of the fields directly declared in
                   <i>I</i>.</li>
-              <li>Within this list, put 
+              <li>Within this list, put
                   the fields in the order returned by
                   <functionlink id="GetClassFields"/>.</li>
-              <li>Assign the fields in this list indices 
-                  <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i> 
+              <li>Assign the fields in this list indices
+                  <i>n</i>, <i>n</i>+1, ..., in order, where <i>n</i>
                   is the count of the fields in all the superinterfaces
                   of <i>I</i>.</li>
             </ul>
@@ -3522,7 +3522,7 @@
             </example>
             Assume that <functionlink id="GetClassFields"/> called on
             <code>C1</code> returns the fields of <code>C1</code> in the
-            order: a, b; and that the fields of <code>C2</code> are 
+            order: a, b; and that the fields of <code>C2</code> are
             returned in the order: q, r.
             An instance of class <code>C1</code> will have the
             following field indices:
@@ -3569,7 +3569,7 @@
                   The count of the fields in the interfaces
                   implemented by <code>C2</code> is three (<i>n</i>=3):
                   <code>p</code> of <code>I0</code>,
-                  <code>x</code> of <code>I1</code> and <code>y</code> of <code>I2</code> 
+                  <code>x</code> of <code>I1</code> and <code>y</code> of <code>I2</code>
                   (an interface of <code>C2</code>).  Note that the field <code>p</code>
                   of <code>I0</code> is only included once.
                 </td>
@@ -3611,7 +3611,7 @@
             The class <code>C2</code> will have the same field indices.
             Note that a field may have a different index depending on the
             object that is viewing it -- for example field "a" above.
-            Note also: not all field indices may be visible from the 
+            Note also: not all field indices may be visible from the
             callbacks, but all indices are shown for illustrative purposes.
             <p/>
             The interface <code>I1</code> will have the
@@ -3631,46 +3631,46 @@
                 </td>
               </tr>
             </table></dd></dl>
-	  </description>	    
+	  </description>
 	</field>
       </typedef>
 
-      <typedef id="jvmtiHeapReferenceInfoArray" 
-               label="Reference information structure for Array references" 
+      <typedef id="jvmtiHeapReferenceInfoArray"
+               label="Reference information structure for Array references"
                since="1.1">
         <description>
-          Reference information returned for 
+          Reference information returned for
          <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
         </description>
 	<field id="index">
 	  <jint/>
-	  <description>	    
+	  <description>
 	    The array index.
 	  </description>
 	</field>
       </typedef>
 
-      <typedef id="jvmtiHeapReferenceInfoConstantPool" 
-               label="Reference information structure for Constant Pool references" 
+      <typedef id="jvmtiHeapReferenceInfoConstantPool"
+               label="Reference information structure for Constant Pool references"
                since="1.1">
         <description>
-          Reference information returned for 
+          Reference information returned for
           <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
         </description>
 	<field id="index">
 	  <jint/>
-	  <description>	    
-	    The index into the constant pool of the class. See the description in 
+	  <description>
+	    The index into the constant pool of the class. See the description in
       <vmspec chapter="4.4"/>.
 	  </description>
 	</field>
       </typedef>
 
-      <typedef id="jvmtiHeapReferenceInfoStackLocal" 
-               label="Reference information structure for Local Variable references" 
+      <typedef id="jvmtiHeapReferenceInfoStackLocal"
+               label="Reference information structure for Local Variable references"
                since="1.1">
         <description>
-          Reference information returned for 
+          Reference information returned for
           <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
         </description>
         <field id="thread_tag">
@@ -3688,7 +3688,7 @@
         <field id="depth">
 	  <jint/>
 	  <description>
-	    The depth of the frame. 
+	    The depth of the frame.
 	  </description>
 	</field>
         <field id="method">
@@ -3711,11 +3711,11 @@
 	</field>
       </typedef>
 
-      <typedef id="jvmtiHeapReferenceInfoJniLocal" 
-               label="Reference information structure for JNI local references" 
+      <typedef id="jvmtiHeapReferenceInfoJniLocal"
+               label="Reference information structure for JNI local references"
                since="1.1">
         <description>
-          Reference information returned for 
+          Reference information returned for
           <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
         </description>
         <field id="thread_tag">
@@ -3733,7 +3733,7 @@
         <field id="depth">
 	  <jint/>
 	  <description>
-	    The depth of the frame. 
+	    The depth of the frame.
 	  </description>
 	</field>
         <field id="method">
@@ -3744,8 +3744,8 @@
 	</field>
       </typedef>
 
-      <typedef id="jvmtiHeapReferenceInfoReserved" 
-               label="Reference information structure for Other references" 
+      <typedef id="jvmtiHeapReferenceInfoReserved"
+               label="Reference information structure for Other references"
                since="1.1">
         <description>
           Reference information returned for other references.
@@ -3800,8 +3800,8 @@
 	</field>
       </typedef>
 
-      <uniontypedef id="jvmtiHeapReferenceInfo" 
-               label="Reference information structure" 
+      <uniontypedef id="jvmtiHeapReferenceInfo"
+               label="Reference information structure"
                since="1.1">
         <description>
           The information returned about referrers.
@@ -3809,50 +3809,50 @@
         </description>
 	<field id="field">
 	  <struct>jvmtiHeapReferenceInfoField</struct>
-	  <description>	    
-	    The referrer information for 
-            <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> 
+	  <description>
+	    The referrer information for
+            <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>
             and <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/> references.
 	  </description>
 	</field>
 	<field id="array">
 	  <struct>jvmtiHeapReferenceInfoArray</struct>
-	  <description>	    
-	    The referrer information for 
+	  <description>
+	    The referrer information for
 	    For <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/> references.
 	  </description>
 	</field>
 	<field id="constant_pool">
 	  <struct>jvmtiHeapReferenceInfoConstantPool</struct>
-	  <description>	    
-	    The referrer information for 
+	  <description>
+	    The referrer information for
 	    For <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/> references.
 	  </description>
 	</field>
         <field id="stack_local">
 	  <struct>jvmtiHeapReferenceInfoStackLocal</struct>
-	  <description>	    
-	    The referrer information for 
+	  <description>
+	    The referrer information for
 	    For <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/> references.
 	  </description>
 	</field>
         <field id="jni_local">
 	  <struct>jvmtiHeapReferenceInfoJniLocal</struct>
-	  <description>	    
-	    The referrer information for 
+	  <description>
+	    The referrer information for
 	    For <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/> references.
 	  </description>
 	</field>
         <field id="other">
 	  <struct>jvmtiHeapReferenceInfoReserved</struct>
-	  <description>	    
+	  <description>
 	    reserved for future use.
 	  </description>
 	</field>
       </uniontypedef>
 
-      <typedef id="jvmtiHeapCallbacks" 
-               label="Heap callback function structure" 
+      <typedef id="jvmtiHeapCallbacks"
+               label="Heap callback function structure"
                since="1.1">
         <field id="heap_iteration_callback">
 	  <ptrtype>
@@ -3860,22 +3860,22 @@
 	  </ptrtype>
 	  <description>
 	    The callback to be called to describe an
-	    object in the heap. Used by the 
+	    object in the heap. Used by the
             <functionlink id="IterateThroughHeap"/> function, ignored by the
             <functionlink id="FollowReferences"/> function.
 	  </description>
-	</field>		  
+	</field>
         <field id="heap_reference_callback">
 	  <ptrtype>
 	    <struct>jvmtiHeapReferenceCallback</struct>
 	  </ptrtype>
 	  <description>
 	    The callback to be called to describe an
-	    object reference.  Used by the 
+	    object reference.  Used by the
             <functionlink id="FollowReferences"/> function, ignored by the
             <functionlink id="IterateThroughHeap"/> function.
 	  </description>
-	</field>		  
+	</field>
         <field id="primitive_field_callback">
 	  <ptrtype>
 	    <struct>jvmtiPrimitiveFieldCallback</struct>
@@ -3884,7 +3884,7 @@
             The callback to be called to describe a
             primitive field.
           </description>
-	</field>		  
+	</field>
         <field id="array_primitive_value_callback">
 	  <ptrtype>
 	    <struct>jvmtiArrayPrimitiveValueCallback</struct>
@@ -3893,7 +3893,7 @@
 	    The callback to be called to describe an
 	    array of primitive values.
 	  </description>
-	</field>		  
+	</field>
         <field id="string_primitive_value_callback">
 	  <ptrtype>
 	    <struct>jvmtiStringPrimitiveValueCallback</struct>
@@ -3901,7 +3901,7 @@
 	  <description>
 	    The callback to be called to describe a String value.
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved5">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3909,7 +3909,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved6">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3917,7 +3917,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved7">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3925,7 +3925,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved8">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3933,7 +3933,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved9">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3941,7 +3941,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved10">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3949,7 +3949,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved11">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3957,7 +3957,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved12">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3965,7 +3965,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved13">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3973,7 +3973,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved14">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3981,7 +3981,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
         <field id="reserved15">
 	  <ptrtype>
 	    <struct>jvmtiReservedCallback</struct>
@@ -3989,7 +3989,7 @@
 	  <description>
 	    Reserved for future use..
 	  </description>
-	</field>		  
+	</field>
       </typedef>
 
 
@@ -4033,10 +4033,10 @@
         <param id="class_tag">
 	  <jlong/>
 	  <description>
-	    The tag of the class of object (zero if the class is not tagged). 
-	    If the object represents a runtime class, 
-            the <code>class_tag</code> is the tag 
-	    associated with <code>java.lang.Class</code> 
+	    The tag of the class of object (zero if the class is not tagged).
+	    If the object represents a runtime class,
+            the <code>class_tag</code> is the tag
+	    associated with <code>java.lang.Class</code>
             (zero if <code>java.lang.Class</code> is not tagged).
 	  </description>
 	</param>
@@ -4051,7 +4051,7 @@
 	  <description>
 	    The object tag value, or zero if the object is not tagged.
 	    To set the tag value to be associated with the object
-	    the agent sets the <code>jlong</code> pointed to by the parameter. 
+	    the agent sets the <code>jlong</code> pointed to by the parameter.
 	  </description>
 	</param>
         <param id="length">
@@ -4063,17 +4063,17 @@
         <param id="user_data">
 	  <outptr><void/></outptr>
 	  <description>
-	    The user supplied data that was passed into the iteration function. 
+	    The user supplied data that was passed into the iteration function.
 	  </description>
 	</param>
       </parameters>
-    </callback>  
+    </callback>
 
     <callback id="jvmtiHeapReferenceCallback" since="1.1">
       <jint/>
       <synopsis>Heap Reference Callback</synopsis>
       <description>
-        Agent supplied callback function.	
+        Agent supplied callback function.
 	Describes a reference from an object or the VM (the referrer) to another object
 	(the referree) or a heap root to a referree.
         <p/>
@@ -4097,12 +4097,12 @@
 	    <struct>jvmtiHeapReferenceInfo</struct>
 	  </inptr>
 	  <description>
-	    Details about the reference. 
+	    Details about the reference.
             Set when the <datalink id="jvmtiHeapReferenceCallback.reference_kind">reference_kind</datalink> is
             <datalink id="JVMTI_HEAP_REFERENCE_FIELD"/>,
 	    <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>,
 	    <datalink id="JVMTI_HEAP_REFERENCE_ARRAY_ELEMENT"/>,
-	    <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/>, 
+	    <datalink id="JVMTI_HEAP_REFERENCE_CONSTANT_POOL"/>,
             <datalink id="JVMTI_HEAP_REFERENCE_STACK_LOCAL"/>,
             or <datalink id="JVMTI_HEAP_REFERENCE_JNI_LOCAL"/>.
             Otherwise <code>NULL</code>.
@@ -4111,9 +4111,9 @@
         <param id="class_tag">
 	  <jlong/>
 	  <description>
-	    The tag of the class of referree object (zero if the class is not tagged). 
-            If the referree object represents a runtime class, 
-            the <code>class_tag</code> is the tag 
+	    The tag of the class of referree object (zero if the class is not tagged).
+            If the referree object represents a runtime class,
+            the <code>class_tag</code> is the tag
             associated with <code>java.lang.Class</code>
             (zero if <code>java.lang.Class</code> is not tagged).
 	  </description>
@@ -4131,14 +4131,14 @@
         <param id="size">
 	  <jlong/>
 	  <description>
-	    Size of the referree object (in bytes). 
+	    Size of the referree object (in bytes).
             See <functionlink id="GetObjectSize"/>.
 	  </description>
 	</param>
         <param id="tag_ptr">
 	  <outptr><jlong/></outptr>
 	  <description>
-	    Points to the referree object tag value, or zero if the object is not 
+	    Points to the referree object tag value, or zero if the object is not
 	    tagged.
 	    To set the tag value to be associated with the object
 	    the agent sets the <code>jlong</code> pointed to by the parameter.
@@ -4147,14 +4147,14 @@
         <param id="referrer_tag_ptr">
 	  <outptr><jlong/></outptr>
 	  <description>
-	    Points to the tag of the referrer object, or 
+	    Points to the tag of the referrer object, or
             points to the zero if the referrer
-	    object is not tagged. 
+	    object is not tagged.
             <code>NULL</code> if the referrer in not an object (that is,
             this callback is reporting a heap root).
 	    To set the tag value to be associated with the referrer object
 	    the agent sets the <code>jlong</code> pointed to by the parameter.
-            If this callback is reporting a reference from an object to itself, 
+            If this callback is reporting a reference from an object to itself,
             <code>referrer_tag_ptr == tag_ptr</code>.
 	  </description>
 	</param>
@@ -4167,7 +4167,7 @@
         <param id="user_data">
 	  <outptr><void/></outptr>
 	  <description>
-	    The user supplied data that was passed into the iteration function. 
+	    The user supplied data that was passed into the iteration function.
 	  </description>
 	</param>
       </parameters>
@@ -4177,7 +4177,7 @@
       <jint/>
       <synopsis>Primitive Field Callback</synopsis>
       <description>
-        Agent supplied callback function which	
+        Agent supplied callback function which
         describes a primitive field of an object (<i>the object</i>).
         A primitive field is a field whose type is a primitive type.
         This callback will describe a static field if the object is a class,
@@ -4195,7 +4195,7 @@
 	<param id="kind">
 	  <enum>jvmtiHeapReferenceKind</enum>
 	  <description>
-	    The kind of field -- instance or static (<datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> or 
+	    The kind of field -- instance or static (<datalink id="JVMTI_HEAP_REFERENCE_FIELD"/> or
             <datalink id="JVMTI_HEAP_REFERENCE_STATIC_FIELD"/>).
 	  </description>
 	</param>
@@ -4210,17 +4210,17 @@
         <param id="object_class_tag">
 	  <jlong/>
 	  <description>
-            The tag of the class of the object (zero if the class is not tagged). 
-            If the object represents a runtime class, the 
-            <code>object_class_tag</code> is the tag 
-            associated with <code>java.lang.Class</code> 
+            The tag of the class of the object (zero if the class is not tagged).
+            If the object represents a runtime class, the
+            <code>object_class_tag</code> is the tag
+            associated with <code>java.lang.Class</code>
             (zero if <code>java.lang.Class</code> is not tagged).
 	  </description>
 	</param>
         <param id="object_tag_ptr">
 	  <outptr><jlong/></outptr>
 	  <description>
-	    Points to the tag of the object, or zero if the object is not 
+	    Points to the tag of the object, or zero if the object is not
 	    tagged.
 	    To set the tag value to be associated with the object
 	    the agent sets the <code>jlong</code> pointed to by the parameter.
@@ -4241,7 +4241,7 @@
         <param id="user_data">
 	  <outptr><void/></outptr>
 	  <description>
-	    The user supplied data that was passed into the iteration function. 
+	    The user supplied data that was passed into the iteration function.
 	  </description>
 	</param>
       </parameters>
@@ -4251,7 +4251,7 @@
       <jint/>
       <synopsis>Array Primitive Value Callback</synopsis>
       <description>
-        Agent supplied callback function.	
+        Agent supplied callback function.
 	Describes the values in an array of a primitive type.
         <p/>
         This function should return a bit vector of the desired
@@ -4266,20 +4266,20 @@
         <param id="class_tag">
 	  <jlong/>
 	  <description>
-	    The tag of the class of the array object (zero if the class is not tagged). 
+	    The tag of the class of the array object (zero if the class is not tagged).
 	  </description>
 	</param>
         <param id="size">
 	  <jlong/>
 	  <description>
-	    Size of the array (in bytes). 
+	    Size of the array (in bytes).
             See <functionlink id="GetObjectSize"/>.
 	  </description>
 	</param>
         <param id="tag_ptr">
 	  <outptr><jlong/></outptr>
 	  <description>
-	    Points to the tag of the array object, or zero if the object is not 
+	    Points to the tag of the array object, or zero if the object is not
 	    tagged.
 	    To set the tag value to be associated with the object
 	    the agent sets the <code>jlong</code> pointed to by the parameter.
@@ -4307,7 +4307,7 @@
         <param id="user_data">
 	  <outptr><void/></outptr>
 	  <description>
-	    The user supplied data that was passed into the iteration function. 
+	    The user supplied data that was passed into the iteration function.
 	  </description>
 	</param>
       </parameters>
@@ -4317,7 +4317,7 @@
       <jint/>
       <synopsis>String Primitive Value Callback</synopsis>
       <description>
-        Agent supplied callback function.	
+        Agent supplied callback function.
 	Describes the value of a java.lang.String.
         <p/>
         This function should return a bit vector of the desired
@@ -4332,21 +4332,21 @@
         <param id="class_tag">
 	  <jlong/>
 	  <description>
-	    The tag of the class of the String class (zero if the class is not tagged). 
+	    The tag of the class of the String class (zero if the class is not tagged).
             <issue>Is this needed?</issue>
 	  </description>
 	</param>
         <param id="size">
 	  <jlong/>
 	  <description>
-	    Size of the string (in bytes). 
+	    Size of the string (in bytes).
             See <functionlink id="GetObjectSize"/>.
 	  </description>
 	</param>
         <param id="tag_ptr">
 	  <outptr><jlong/></outptr>
 	  <description>
-	    Points to the tag of the String object, or zero if the object is not 
+	    Points to the tag of the String object, or zero if the object is not
 	    tagged.
 	    To set the tag value to be associated with the object
 	    the agent sets the <code>jlong</code> pointed to by the parameter.
@@ -4361,15 +4361,15 @@
         <param id="value_length">
 	  <jint/>
 	  <description>
-	    The length of the string. 
-            The length is equal to the number of 16-bit Unicode 
+	    The length of the string.
+            The length is equal to the number of 16-bit Unicode
             characters in the string.
 	  </description>
 	</param>
         <param id="user_data">
 	  <outptr><void/></outptr>
 	  <description>
-	    The user supplied data that was passed into the iteration function. 
+	    The user supplied data that was passed into the iteration function.
 	  </description>
 	</param>
       </parameters>
@@ -4388,27 +4388,27 @@
 
     <function id="FollowReferences" num="115" since="1.1">
       <synopsis>Follow References</synopsis>
-      <description>	
-        This function initiates a traversal over the objects that are 
+      <description>
+        This function initiates a traversal over the objects that are
         directly and indirectly reachable from the specified object or,
-        if <code>initial_object</code> is not specified, all objects 
+        if <code>initial_object</code> is not specified, all objects
         reachable from the heap roots.
-	The heap root are the set of system classes, 
-	JNI globals, references from thread stacks, and other objects used as roots 
-	for the purposes of garbage collection. 
+	The heap root are the set of system classes,
+	JNI globals, references from thread stacks, and other objects used as roots
+	for the purposes of garbage collection.
         <p/>
         This function operates by traversing the reference graph.
         Let <i>A</i>, <i>B</i>, ... represent objects.
         When a reference from <i>A</i> to <i>B</i> is traversed,
-        when a reference from a heap root to <i>B</i> is traversed, 
-        or when <i>B</i> is specified as the <paramlink id="initial_object"/>, 
+        when a reference from a heap root to <i>B</i> is traversed,
+        or when <i>B</i> is specified as the <paramlink id="initial_object"/>,
         then <i>B</i> is said to be <i>visited</i>.
-        A reference from <i>A</i> to <i>B</i> is not traversed until <i>A</i> 
+        A reference from <i>A</i> to <i>B</i> is not traversed until <i>A</i>
         is visited.
         References are reported in the same order that the references are traversed.
-        Object references are reported by invoking the agent supplied  
+        Object references are reported by invoking the agent supplied
         callback function <functionlink id="jvmtiHeapReferenceCallback"/>.
-        In a reference from <i>A</i> to <i>B</i>, <i>A</i> is known 
+        In a reference from <i>A</i> to <i>B</i>, <i>A</i> is known
         as the <i>referrer</i> and <i>B</i> as the <i>referree</i>.
         The callback is invoked exactly once for each reference from a referrer;
         this is true even if there are reference cycles or multiple paths to
@@ -4416,10 +4416,10 @@
         There may be more than one reference between a referrer and a referree,
         each reference is reported.
         These references may be distinguished by examining the
-        <datalink 
+        <datalink
          id="jvmtiHeapReferenceCallback.reference_kind"><code>reference_kind</code></datalink>
          and
-        <datalink 
+        <datalink
          id="jvmtiHeapReferenceCallback.reference_info"><code>reference_info</code></datalink>
         parameters of the <functionlink id="jvmtiHeapReferenceCallback"/> callback.
 	<p/>
@@ -4456,10 +4456,10 @@
         whether the callback will be invoked, it does not influence
         which objects are visited nor does it influence whether other callbacks
         will be invoked.
-        However, the 
+        However, the
         <datalink id="jvmtiHeapVisitControl">visit control flags</datalink>
         returned by <functionlink id="jvmtiHeapReferenceCallback"/>
-        do determine if the objects referenced by the 
+        do determine if the objects referenced by the
         current object as visited.
         The <datalink id="jvmtiHeapFilter">heap filter flags</datalink>
         and <paramlink id="klass"/> provided as parameters to this function
@@ -4468,7 +4468,7 @@
         For example, if the only callback that was set is
         <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
         is set to the array of bytes class, then only arrays of byte will be
-        reported.  
+        reported.
         The table below summarizes this:
         <p/>
         <table>
@@ -4547,22 +4547,22 @@
         <p/>
         During the execution of this function the state of the heap
         does not change: no objects are allocated, no objects are
-        garbage collected, and the state of objects (including 
-        held values) does not change. 
-        As a result, threads executing Java 
+        garbage collected, and the state of objects (including
+        held values) does not change.
+        As a result, threads executing Java
         programming language code, threads attempting to resume the
-        execution of Java programming language code, and threads 
+        execution of Java programming language code, and threads
         attempting to execute JNI functions are typically stalled.
       </description>
       <origin>new</origin>
       <capabilities>
         <required id="can_tag_objects"></required>
       </capabilities>
-      <parameters>             
+      <parameters>
         <param id="heap_filter">
           <jint/>
           <description>
-            This bit vector of 
+            This bit vector of
             <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
             restricts the objects for which the callback function is called.
             This applies to both the object and primitive callbacks.
@@ -4575,7 +4575,7 @@
                     class</nullok>
           </ptrtype>
           <description>
-            Callbacks are only reported when the object is an instance of 
+            Callbacks are only reported when the object is an instance of
             this class.
             Objects which are instances of a subclass of <code>klass</code>
             are not reported.
@@ -4599,14 +4599,14 @@
           <description>
             Structure defining the set of callback functions.
           </description>
-        </param>                  
+        </param>
         <param id="user_data">
           <inbuf>
             <void/>
             <nullok><code>NULL</code> is passed as the user supplied data</nullok>
           </inbuf>
           <description>
-            User supplied data to be passed to the callback. 
+            User supplied data to be passed to the callback.
           </description>
         </param>
       </parameters>
@@ -4623,12 +4623,12 @@
 
     <function id="IterateThroughHeap" num="116" since="1.1">
       <synopsis>Iterate Through Heap</synopsis>
-      <description>        
-        Initiate an iteration over all objects in the heap. 
-        This includes both reachable and 
+      <description>
+        Initiate an iteration over all objects in the heap.
+        This includes both reachable and
         unreachable objects. Objects are visited in no particular order.
         <p/>
-        Heap objects are reported by invoking the agent supplied 
+        Heap objects are reported by invoking the agent supplied
         callback function <functionlink id="jvmtiHeapIterationCallback"/>.
         References between objects are not reported.
         If only reachable objects are desired, or if object reference information
@@ -4642,7 +4642,7 @@
         <functionlink id="jvmtiStringPrimitiveValueCallback"/>.
         A primitive field
         is reported after the object with that field is visited;
-        it is reported by invoking the agent supplied 
+        it is reported by invoking the agent supplied
         callback function
         <functionlink id="jvmtiPrimitiveFieldCallback"/>.
         <p/>
@@ -4660,7 +4660,7 @@
         For example, if the only callback that was set is
         <fieldlink id="array_primitive_value_callback" struct="jvmtiHeapCallbacks"/> and <code>klass</code>
         is set to the array of bytes class, then only arrays of byte will be
-        reported. The table below summarizes this (contrast this with 
+        reported. The table below summarizes this (contrast this with
         <functionlink id="FollowReferences"/>):
         <p/>
         <table>
@@ -4739,11 +4739,11 @@
         <p/>
         During the execution of this function the state of the heap
         does not change: no objects are allocated, no objects are
-        garbage collected, and the state of objects (including 
-        held values) does not change. 
-        As a result, threads executing Java 
+        garbage collected, and the state of objects (including
+        held values) does not change.
+        As a result, threads executing Java
         programming language code, threads attempting to resume the
-        execution of Java programming language code, and threads 
+        execution of Java programming language code, and threads
         attempting to execute JNI functions are typically stalled.
       </description>
       <origin>new</origin>
@@ -4754,7 +4754,7 @@
         <param id="heap_filter">
           <jint/>
           <description>
-            This bit vector of 
+            This bit vector of
             <datalink id="jvmtiHeapFilter">heap filter flags</datalink>.
             restricts the objects for which the callback function is called.
             This applies to both the object and primitive callbacks.
@@ -4766,7 +4766,7 @@
             <nullok>callbacks are not limited to instances of a particular class</nullok>
           </ptrtype>
           <description>
-            Callbacks are only reported when the object is an instance of 
+            Callbacks are only reported when the object is an instance of
             this class.
             Objects which are instances of a subclass of <code>klass</code>
             are not reported.
@@ -4781,14 +4781,14 @@
           <description>
             Structure defining the set callback functions.
           </description>
-        </param>                  
+        </param>
         <param id="user_data">
           <inbuf>
             <void/>
             <nullok><code>NULL</code> is passed as the user supplied data</nullok>
           </inbuf>
           <description>
-            User supplied data to be passed to the callback. 
+            User supplied data to be passed to the callback.
           </description>
         </param>
       </parameters>
@@ -4803,7 +4803,7 @@
       <synopsis>Get Tag</synopsis>
       <description>
         Retrieve the tag associated with an object.
-        The tag is a long value typically used to store a 
+        The tag is a long value typically used to store a
         unique identifier or pointer to object information.
         The tag is set with
         <functionlink id="SetTag"></functionlink>.
@@ -4824,7 +4824,7 @@
         <param id="tag_ptr">
 	  <outptr><jlong/></outptr>
 	  <description>
-	    On return, the referenced long is set to the value 
+	    On return, the referenced long is set to the value
 	    of the tag.
 	  </description>
 	</param>
@@ -4837,7 +4837,7 @@
       <synopsis>Set Tag</synopsis>
       <description>
         Set the tag associated with an object.
-        The tag is a long value typically used to store a 
+        The tag is a long value typically used to store a
         unique identifier or pointer to object information.
         The tag is visible with
         <functionlink id="GetTag"></functionlink>.
@@ -4895,7 +4895,7 @@
 	    <jint/>
 	  </outptr>
 	    <description>
-	      Return the number of objects with any of the tags 
+	      Return the number of objects with any of the tags
 	      in <paramlink id="tags"/>.
 	    </description>
 	</param>
@@ -4905,7 +4905,7 @@
 	    <nullok>this information is not returned</nullok>
 	  </allocbuf>
 	    <description>
-	      Returns the array of objects with any of the tags 
+	      Returns the array of objects with any of the tags
 	      in <paramlink id="tags"/>.
 	    </description>
 	</param>
@@ -4936,13 +4936,13 @@
         This function does not return until the garbage collection
         is finished.
         <p/>
-        Although garbage collection is as complete 
-        as possible there is no guarantee that all 
+        Although garbage collection is as complete
+        as possible there is no guarantee that all
         <eventlink id="ObjectFree"/>
-        events will have been 
-        sent by the time that this function 
-        returns. In particular, an object may be 
-        prevented from being freed because it 
+        events will have been
+        sent by the time that this function
+        returns. In particular, an object may be
+        prevented from being freed because it
         is awaiting finalization.
       </description>
       <origin>new</origin>
@@ -4960,7 +4960,7 @@
   <category id="Heap_1_0" label="Heap (1.0)">
     <intro>
       <b>
-        These functions and data types were introduced in the original 
+        These functions and data types were introduced in the original
         <jvmti/> version 1.0 and have been superseded by more
       </b>
       <internallink id="Heap"><b>powerful and flexible versions</b></internallink>
@@ -4970,7 +4970,7 @@
       <ul>
         <li>
           <b>
-            Allow access to primitive values (the value of Strings, arrays, 
+            Allow access to primitive values (the value of Strings, arrays,
             and primitive fields)
           </b>
         </li>
@@ -5034,13 +5034,13 @@
         <constants id="jvmtiObjectReferenceKind" label="Object Reference Enumeration" kind="enum">
 	  <constant id="JVMTI_REFERENCE_CLASS" num="1">
 	    Reference from an object to its class.
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_REFERENCE_FIELD" num="2">
 	    Reference from an object to the value of one of its instance fields.
 	    For references of this kind the <code>referrer_index</code>
 	    parameter to the <internallink id="jvmtiObjectReferenceCallback">
             jvmtiObjectReferenceCallback</internallink> is the index of the
- 	    the instance field. The index is based on the order of all the 
+ 	    the instance field. The index is based on the order of all the
             object's fields. This includes all fields of the directly declared
             static and instance fields in the class, and includes all fields (both
             public and private) fields declared in superclasses and superinterfaces.
@@ -5063,7 +5063,7 @@
 	  </constant>
 	  <constant id="JVMTI_REFERENCE_PROTECTION_DOMAIN" num="6">
 	    Reference from a class to its protection domain.
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_REFERENCE_INTERFACE" num="7">
 	    Reference from a class to one of its interfaces.
 	  </constant>
@@ -5072,7 +5072,7 @@
 	    For references of this kind the <code>referrer_index</code>
 	    parameter to the <internallink id="jvmtiObjectReferenceCallback">
             jvmtiObjectReferenceCallback</internallink> is the index of the
- 	    the static field. The index is based on the order of all the 
+ 	    the static field. The index is based on the order of all the
             object's fields. This includes all fields of the directly declared
             static and instance fields in the class, and includes all fields (both
             public and private) fields declared in superclasses and superinterfaces.
@@ -5095,11 +5095,11 @@
 
         <constants id="jvmtiIterationControl" label="Iteration Control Enumeration" kind="enum">
 	  <constant id="JVMTI_ITERATION_CONTINUE" num="1">
-	    Continue the iteration.  
+	    Continue the iteration.
             If this is a reference iteration, follow the references of this object.
-	  </constant>	  
+	  </constant>
 	  <constant id="JVMTI_ITERATION_IGNORE" num="2">
-	    Continue the iteration.  
+	    Continue the iteration.
             If this is a reference iteration, ignore the references of this object.
 	  </constant>
 	  <constant id="JVMTI_ITERATION_ABORT" num="0">
@@ -5125,9 +5125,9 @@
         <param id="class_tag">
 	  <jlong/>
 	  <description>
-	    The tag of the class of object (zero if the class is not tagged). 
-	    If the object represents a runtime class, 
-            the <code>class_tag</code> is the tag 
+	    The tag of the class of object (zero if the class is not tagged).
+	    If the object represents a runtime class,
+            the <code>class_tag</code> is the tag
 	    associated with <code>java.lang.Class</code>
             (zero if <code>java.lang.Class</code> is not tagged).
 	  </description>
@@ -5143,82 +5143,82 @@
 	  <description>
 	    The object tag value, or zero if the object is not tagged.
 	    To set the tag value to be associated with the object
-	    the agent sets the <code>jlong</code> pointed to by the parameter. 
-	  </description>
-	</param>
-        <param id="user_data">
-	  <outptr><void/></outptr>
-	  <description>
-	    The user supplied data that was passed into the iteration function. 
-	  </description>
-	</param>
-      </parameters>
-    </callback>  
-
-    <callback id="jvmtiHeapRootCallback">
-      <enum>jvmtiIterationControl</enum>
-      <synopsis>Heap Root Object Callback</synopsis>
-      <description>
-        Agent supplied callback function.
-	Describes (but does not pass in) an object that is a root for the purposes
-	of garbage collection.
-        <p/>
-        Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
-        <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing 
-        references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
-        <p/>
-        See the <internallink id="heapCallbacks">heap callback
-        function restrictions</internallink>.
-      </description>
-      <parameters>
-	<param id="root_kind">
-	  <enum>jvmtiHeapRootKind</enum>
-	  <description>
-	    The kind of heap root.
-	  </description>
-	</param>
-        <param id="class_tag">
-	  <jlong/>
-	  <description>
-	    The tag of the class of object (zero if the class is not tagged). 
-            If the object represents a runtime class, the <code>class_tag</code> is the tag 
-            associated with <code>java.lang.Class</code> 
-            (zero if <code>java.lang.Class</code> is not tagged).
-	  </description>
-	</param>
-        <param id="size">
-	  <jlong/>
-	  <description>
-	    Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
-	  </description>
-	</param>
-        <param id="tag_ptr">
-	  <outptr><jlong/></outptr>
-	  <description>
-	    The object tag value, or zero if the object is not tagged.
-	    To set the tag value to be associated with the object
 	    the agent sets the <code>jlong</code> pointed to by the parameter.
 	  </description>
 	</param>
         <param id="user_data">
 	  <outptr><void/></outptr>
 	  <description>
-	    The user supplied data that was passed into the iteration function. 
+	    The user supplied data that was passed into the iteration function.
 	  </description>
 	</param>
       </parameters>
-    </callback> 
+    </callback>
+
+    <callback id="jvmtiHeapRootCallback">
+      <enum>jvmtiIterationControl</enum>
+      <synopsis>Heap Root Object Callback</synopsis>
+      <description>
+        Agent supplied callback function.
+	Describes (but does not pass in) an object that is a root for the purposes
+	of garbage collection.
+        <p/>
+        Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
+        <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
+        references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
+        <p/>
+        See the <internallink id="heapCallbacks">heap callback
+        function restrictions</internallink>.
+      </description>
+      <parameters>
+	<param id="root_kind">
+	  <enum>jvmtiHeapRootKind</enum>
+	  <description>
+	    The kind of heap root.
+	  </description>
+	</param>
+        <param id="class_tag">
+	  <jlong/>
+	  <description>
+	    The tag of the class of object (zero if the class is not tagged).
+            If the object represents a runtime class, the <code>class_tag</code> is the tag
+            associated with <code>java.lang.Class</code>
+            (zero if <code>java.lang.Class</code> is not tagged).
+	  </description>
+	</param>
+        <param id="size">
+	  <jlong/>
+	  <description>
+	    Size of the object (in bytes). See <functionlink id="GetObjectSize"/>.
+	  </description>
+	</param>
+        <param id="tag_ptr">
+	  <outptr><jlong/></outptr>
+	  <description>
+	    The object tag value, or zero if the object is not tagged.
+	    To set the tag value to be associated with the object
+	    the agent sets the <code>jlong</code> pointed to by the parameter.
+	  </description>
+	</param>
+        <param id="user_data">
+	  <outptr><void/></outptr>
+	  <description>
+	    The user supplied data that was passed into the iteration function.
+	  </description>
+	</param>
+      </parameters>
+    </callback>
 
     <callback id="jvmtiStackReferenceCallback">
       <enum>jvmtiIterationControl</enum>
       <synopsis>Stack Reference Object Callback</synopsis>
       <description>
         Agent supplied callback function.
-	Describes (but does not pass in) an object on the stack that is a root for 
+	Describes (but does not pass in) an object on the stack that is a root for
 	the purposes of garbage collection.
         <p/>
         Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
-        <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing 
+        <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
         references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
         <p/>
         See the <internallink id="heapCallbacks">heap callback
@@ -5235,9 +5235,9 @@
         <param id="class_tag">
 	  <jlong/>
 	  <description>
-           The tag of the class of object (zero if the class is not tagged). 
-           If the object represents a runtime class, the  <code>class_tag</code> is the tag 
-           associated with <code>java.lang.Class</code> 
+           The tag of the class of object (zero if the class is not tagged).
+           If the object represents a runtime class, the  <code>class_tag</code> is the tag
+           associated with <code>java.lang.Class</code>
            (zero if <code>java.lang.Class</code> is not tagged).
 	  </description>
 	</param>
@@ -5264,7 +5264,7 @@
         <param id="depth">
 	  <jint/>
 	  <description>
-	    The depth of the frame. 
+	    The depth of the frame.
 	  </description>
 	</param>
         <param id="method">
@@ -5282,7 +5282,7 @@
         <param id="user_data">
 	  <outptr><void/></outptr>
 	  <description>
-	    The user supplied data that was passed into the iteration function. 
+	    The user supplied data that was passed into the iteration function.
 	  </description>
 	</param>
       </parameters>
@@ -5292,12 +5292,12 @@
       <enum>jvmtiIterationControl</enum>
       <synopsis>Object Reference Callback</synopsis>
       <description>
-        Agent supplied callback function.	
+        Agent supplied callback function.
 	Describes a reference from an object (the referrer) to another object
 	(the referree).
         <p/>
         Return value should be <code>JVMTI_ITERATION_CONTINUE</code> to continue iteration,
-        <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing 
+        <code>JVMTI_ITERATION_IGNORE</code> to continue iteration without pursuing
         references from referree object or <code>JVMTI_ITERATION_ABORT</code> to stop iteration.
         <p/>
         See the <internallink id="heapCallbacks">heap callback
@@ -5313,24 +5313,24 @@
         <param id="class_tag">
 	  <jlong/>
 	  <description>
-	    The tag of the class of referree object (zero if the class is not tagged). 
+	    The tag of the class of referree object (zero if the class is not tagged).
             If the referree object represents a runtime class,
-            the  <code>class_tag</code> is the tag 
-            associated with <code>java.lang.Class</code> 
+            the  <code>class_tag</code> is the tag
+            associated with <code>java.lang.Class</code>
             (zero if <code>java.lang.Class</code> is not tagged).
 	  </description>
 	</param>
         <param id="size">
 	  <jlong/>
 	  <description>
-	    Size of the referree object (in bytes). 
+	    Size of the referree object (in bytes).
             See <functionlink id="GetObjectSize"/>.
 	  </description>
 	</param>
         <param id="tag_ptr">
 	  <outptr><jlong/></outptr>
 	  <description>
-	    The referree object tag value, or zero if the object is not 
+	    The referree object tag value, or zero if the object is not
 	    tagged.
 	    To set the tag value to be associated with the object
 	    the agent sets the <code>jlong</code> pointed to by the parameter.
@@ -5345,11 +5345,11 @@
 	</param>
 	<param id="referrer_index">
 	  <jint/>
-	  <description>	    
+	  <description>
 	    For references of type <code>JVMTI_REFERENCE_FIELD</code> or
             <code>JVMTI_REFERENCE_STATIC_FIELD</code> the index
-	    of the field in the referrer object. The index is based on the 
-	    order of all the object's fields - see <internallink 
+	    of the field in the referrer object. The index is based on the
+	    order of all the object's fields - see <internallink
 	    id="JVMTI_REFERENCE_FIELD">JVMTI_REFERENCE_FIELD</internallink>
             or <internallink
 	    id="JVMTI_REFERENCE_STATIC_FIELD">JVMTI_REFERENCE_STATIC_FIELD
@@ -5362,7 +5362,7 @@
 	    For references of type <code>JVMTI_REFERENCE_CONSTANT_POOL</code>
 	    the index into the constant pool of the class - see
 	    <internallink id="JVMTI_REFERENCE_CONSTANT_POOL">
-	    JVMTI_REFERENCE_CONSTANT_POOL</internallink> for further 
+	    JVMTI_REFERENCE_CONSTANT_POOL</internallink> for further
 	    description.
 	    <p/>
 	    For references of other kinds the <code>referrer_index</code> is
@@ -5372,7 +5372,7 @@
         <param id="user_data">
 	  <outptr><void/></outptr>
 	  <description>
-	    The user supplied data that was passed into the iteration function. 
+	    The user supplied data that was passed into the iteration function.
 	  </description>
 	</param>
       </parameters>
@@ -5380,17 +5380,17 @@
 
     <function id="IterateOverObjectsReachableFromObject" num="109">
       <synopsis>Iterate Over Objects Reachable From Object</synopsis>
-      <description>	
+      <description>
         This function iterates over all objects that are directly
         and indirectly reachable from the specified object.
 	For each object <i>A</i> (known
-	as the referrer) with a reference to object <i>B</i> the specified 
+	as the referrer) with a reference to object <i>B</i> the specified
 	callback function is called to describe the object reference.
         The callback is called exactly once for each reference from a referrer;
         this is true even if there are reference cycles or multiple paths to
         the referrer.
         There may be more than one reference between a referrer and a referree,
-        These may be distinguished by the 
+        These may be distinguished by the
         <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
         <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
         The callback for an object will always occur after the callback for
@@ -5401,18 +5401,18 @@
         <p/>
         During the execution of this function the state of the heap
         does not change: no objects are allocated, no objects are
-        garbage collected, and the state of objects (including 
-        held values) does not change. 
-        As a result, threads executing Java 
+        garbage collected, and the state of objects (including
+        held values) does not change.
+        As a result, threads executing Java
         programming language code, threads attempting to resume the
-        execution of Java programming language code, and threads 
+        execution of Java programming language code, and threads
         attempting to execute JNI functions are typically stalled.
       </description>
       <origin>new</origin>
       <capabilities>
         <required id="can_tag_objects"></required>
       </capabilities>
-      <parameters>             
+      <parameters>
         <param id="object">
 	  <jobject/>
 	    <description>
@@ -5427,14 +5427,14 @@
 	      The callback to be called to describe each
 	      object reference.
 	    </description>
-	</param>		  
+	</param>
         <param id="user_data">
 	  <inbuf>
 	    <void/>
 	    <nullok><code>NULL</code> is passed as the user supplied data</nullok>
 	  </inbuf>
 	  <description>
-	    User supplied data to be passed to the callback. 
+	    User supplied data to be passed to the callback.
 	  </description>
 	</param>
       </parameters>
@@ -5447,9 +5447,9 @@
       <description>
         This function iterates over the root objects and all objects that
         are directly and indirectly reachable from the root objects.
-	The root objects comprise the set of system classes, 
-	JNI globals, references from thread stacks, and other objects used as roots 
-	for the purposes of garbage collection. 
+	The root objects comprise the set of system classes,
+	JNI globals, references from thread stacks, and other objects used as roots
+	for the purposes of garbage collection.
 	<p/>
 	For each root the <paramlink id="heap_root_callback"></paramlink>
 	or <paramlink id="stack_ref_callback"></paramlink> callback is called.
@@ -5462,7 +5462,7 @@
         this is true even if there are reference cycles or multiple paths to
         the referrer.
         There may be more than one reference between a referrer and a referree,
-        These may be distinguished by the 
+        These may be distinguished by the
         <datalink id="jvmtiObjectReferenceCallback.reference_kind"></datalink> and
         <datalink id="jvmtiObjectReferenceCallback.referrer_index"></datalink>.
         The callback for an object will always occur after the callback for
@@ -5472,26 +5472,26 @@
         references which are reported.
 	<p/>
 	Roots are always reported to the profiler before any object references
-	are reported. In other words, the <paramlink id="object_ref_callback"></paramlink> 
+	are reported. In other words, the <paramlink id="object_ref_callback"></paramlink>
 	callback will not be called until the appropriate callback has been called
-	for all roots. If the <paramlink id="object_ref_callback"></paramlink> callback is 
+	for all roots. If the <paramlink id="object_ref_callback"></paramlink> callback is
 	specified as <code>NULL</code> then this function returns after
 	reporting the root objects to the profiler.
         <p/>
         During the execution of this function the state of the heap
         does not change: no objects are allocated, no objects are
-        garbage collected, and the state of objects (including 
-        held values) does not change. 
-        As a result, threads executing Java 
+        garbage collected, and the state of objects (including
+        held values) does not change.
+        As a result, threads executing Java
         programming language code, threads attempting to resume the
-        execution of Java programming language code, and threads 
+        execution of Java programming language code, and threads
         attempting to execute JNI functions are typically stalled.
       </description>
       <origin>new</origin>
       <capabilities>
         <required id="can_tag_objects"></required>
       </capabilities>
-      <parameters>      	
+      <parameters>
         <param id="heap_root_callback">
 	  <ptrtype>
 	    <struct>jvmtiHeapRootCallback</struct>
@@ -5502,7 +5502,7 @@
 	      <code>JVMTI_HEAP_ROOT_JNI_GLOBAL</code>,
 	      <code>JVMTI_HEAP_ROOT_SYSTEM_CLASS</code>,
 	      <code>JVMTI_HEAP_ROOT_MONITOR</code>,
-	      <code>JVMTI_HEAP_ROOT_THREAD</code>, or 
+	      <code>JVMTI_HEAP_ROOT_THREAD</code>, or
 	      <code>JVMTI_HEAP_ROOT_OTHER</code>.
 	    </description>
 	</param>
@@ -5532,7 +5532,7 @@
 	    <nullok><code>NULL</code> is passed as the user supplied data</nullok>
 	  </inbuf>
 	  <description>
-	    User supplied data to be passed to the callback. 
+	    User supplied data to be passed to the callback.
 	  </description>
 	</param>
       </parameters>
@@ -5542,14 +5542,14 @@
 
     <function id="IterateOverHeap" num="111">
       <synopsis>Iterate Over Heap</synopsis>
-      <description>        
-        Iterate over all objects in the heap. This includes both reachable and 
+      <description>
+        Iterate over all objects in the heap. This includes both reachable and
 	unreachable objects.
 	<p/>
 	The <paramlink id="object_filter"></paramlink> parameter indicates the
 	objects for which the callback function is called. If this parameter
-	is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be 
-	called for every object that is tagged. If the parameter is 
+	is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
+	called for every object that is tagged. If the parameter is
 	<code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
 	for objects that are not tagged. If the parameter
 	is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
@@ -5558,11 +5558,11 @@
         <p/>
         During the execution of this function the state of the heap
         does not change: no objects are allocated, no objects are
-        garbage collected, and the state of objects (including 
-        held values) does not change. 
-        As a result, threads executing Java 
+        garbage collected, and the state of objects (including
+        held values) does not change.
+        As a result, threads executing Java
         programming language code, threads attempting to resume the
-        execution of Java programming language code, and threads 
+        execution of Java programming language code, and threads
         attempting to execute JNI functions are typically stalled.
       </description>
       <origin>new</origin>
@@ -5591,7 +5591,7 @@
 	    <nullok><code>NULL</code> is passed as the user supplied data</nullok>
 	  </inbuf>
 	  <description>
-	    User supplied data to be passed to the callback. 
+	    User supplied data to be passed to the callback.
 	  </description>
 	</param>
       </parameters>
@@ -5602,15 +5602,15 @@
     <function id="IterateOverInstancesOfClass" num="112">
       <synopsis>Iterate Over Instances Of Class</synopsis>
       <description>
-        Iterate over all objects in the heap that are instances of the specified class. 
-        This includes direct instances of the specified class and 
+        Iterate over all objects in the heap that are instances of the specified class.
+        This includes direct instances of the specified class and
         instances of all subclasses of the specified class.
 	This includes both reachable and unreachable objects.
 	<p/>
 	The <paramlink id="object_filter"></paramlink> parameter indicates the
 	objects for which the callback function is called. If this parameter
-	is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be 
-	called for every object that is tagged. If the parameter is 
+	is <code>JVMTI_HEAP_OBJECT_TAGGED</code> then the callback will only be
+	called for every object that is tagged. If the parameter is
 	<code>JVMTI_HEAP_OBJECT_UNTAGGED</code> then the callback will only be
 	called for objects that are not tagged. If the parameter
 	is <code>JVMTI_HEAP_OBJECT_EITHER</code> then the callback will be
@@ -5619,11 +5619,11 @@
 	<p/>
 	During the execution of this function the state of the heap
 	does not change: no objects are allocated, no objects are
-	garbage collected, and the state of objects (including 
-	held values) does not change. 
-	As a result, threads executing Java 
+	garbage collected, and the state of objects (including
+	held values) does not change.
+	As a result, threads executing Java
 	programming language code, threads attempting to resume the
-	execution of Java programming language code, and threads 
+	execution of Java programming language code, and threads
 	attempting to execute JNI functions are typically stalled.
       </description>
       <origin>new</origin>
@@ -5649,7 +5649,7 @@
 	  </ptrtype>
 	    <description>
 	      The iterator function to be called for each
-	      <paramlink id="klass"/> instance matching 
+	      <paramlink id="klass"/> instance matching
               the <paramlink id="object_filter"/>.
 	    </description>
 	</param>
@@ -5659,7 +5659,7 @@
 	    <nullok><code>NULL</code> is passed as the user supplied data</nullok>
 	  </inbuf>
 	  <description>
-	    User supplied data to be passed to the callback. 
+	    User supplied data to be passed to the callback.
 	  </description>
 	</param>
       </parameters>
@@ -5672,19 +5672,19 @@
   <category id="local" label="Local Variable">
 
     <intro>
-      These functions are used to retrieve or set the value of a local variable. 
+      These functions are used to retrieve or set the value of a local variable.
       The variable is identified by the depth of the frame containing its
-      value and the variable's slot number within that frame. 
-      The mapping of variables to 
-      slot numbers can be obtained with the function 
+      value and the variable's slot number within that frame.
+      The mapping of variables to
+      slot numbers can be obtained with the function
       <functionlink id="GetLocalVariableTable"></functionlink>.
     </intro>
 
     <function id="GetLocalObject" num="21">
       <synopsis>Get Local Variable - Object</synopsis>
       <description>
-	This function can be used to retrieve the value of a local 
-        variable whose type is <code>Object</code> or a subclass of <code>Object</code>. 
+	This function can be used to retrieve the value of a local
+        variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -5712,7 +5712,7 @@
 	<param id="value_ptr">
 	  <outptr><jobject/></outptr>
 	    <description>
-	      On return, points to the variable's value. 
+	      On return, points to the variable's value.
 	    </description>
 	</param>
       </parameters>
@@ -5720,11 +5720,11 @@
 	<error id="JVMTI_ERROR_INVALID_SLOT">
 	  Invalid <code>slot</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
           The variable type is not
           <code>Object</code> or a subclass of <code>Object</code>.
 	</error>
-	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
+	<error id="JVMTI_ERROR_OPAQUE_FRAME">
 	  Not a visible frame
 	</error>
       </errors>
@@ -5736,7 +5736,7 @@
         This function can be used to retrieve the value of the local object
         variable at slot 0 (the "<code>this</code>" object) from non-static
         frames.  This function can retrieve the "<code>this</code>" object from
-        native method frames, whereas <code>GetLocalObject()</code> would 
+        native method frames, whereas <code>GetLocalObject()</code> would
         return <code>JVMTI_ERROR_OPAQUE_FRAME</code> in those cases.
       </description>
       <origin>new</origin>
@@ -5759,7 +5759,7 @@
 	<param id="value_ptr">
 	  <outptr><jobject/></outptr>
 	    <description>
-	      On return, points to the variable's value. 
+	      On return, points to the variable's value.
 	    </description>
 	</param>
       </parameters>
@@ -5772,10 +5772,10 @@
     <function id="GetLocalInt" num="22">
       <synopsis>Get Local Variable - Int</synopsis>
       <description>
-	This function can be used to retrieve the value of a local 
+	This function can be used to retrieve the value of a local
         variable whose type is <code>int</code>,
-        <code>short</code>, <code>char</code>, <code>byte</code>, or 
-	<code>boolean</code>. 
+        <code>short</code>, <code>char</code>, <code>byte</code>, or
+	<code>boolean</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -5803,7 +5803,7 @@
 	<param id="value_ptr">
 	  <outptr><jint/></outptr>
 	  <description>
-	    On return, points to the variable's value. 
+	    On return, points to the variable's value.
 	  </description>
 	</param>
       </parameters>
@@ -5811,13 +5811,13 @@
 	<error id="JVMTI_ERROR_INVALID_SLOT">
 	  Invalid <code>slot</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
-	  The variable type is not 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
+	  The variable type is not
           <code>int</code>, <code>short</code>,
-          <code>char</code>, <code>byte</code>, or 
+          <code>char</code>, <code>byte</code>, or
   	  <code>boolean</code>.
 	</error>
-	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
+	<error id="JVMTI_ERROR_OPAQUE_FRAME">
 	  Not a visible frame
 	</error>
       </errors>
@@ -5826,8 +5826,8 @@
     <function id="GetLocalLong" num="23">
       <synopsis>Get Local Variable - Long</synopsis>
       <description>
-	This function can be used to retrieve the value of a local 
-        variable whose type is <code>long</code>. 
+	This function can be used to retrieve the value of a local
+        variable whose type is <code>long</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -5855,7 +5855,7 @@
 	<param id="value_ptr">
 	  <outptr><jlong/></outptr>
 	  <description>
-	    On return, points to the variable's value. 
+	    On return, points to the variable's value.
 	  </description>
 	</param>
       </parameters>
@@ -5863,10 +5863,10 @@
 	<error id="JVMTI_ERROR_INVALID_SLOT">
 	  Invalid <code>slot</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
 	  The variable type is not <code>long</code>.
 	</error>
-	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
+	<error id="JVMTI_ERROR_OPAQUE_FRAME">
 	  Not a visible frame
 	</error>
       </errors>
@@ -5875,8 +5875,8 @@
     <function id="GetLocalFloat" num="24">
       <synopsis>Get Local Variable - Float</synopsis>
       <description>
-	This function can be used to retrieve the value of a local 
-        variable whose type is <code>float</code>. 
+	This function can be used to retrieve the value of a local
+        variable whose type is <code>float</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -5904,7 +5904,7 @@
 	<param id="value_ptr">
 	  <outptr><jfloat/></outptr>
 	  <description>
-	    On return, points to the variable's value. 
+	    On return, points to the variable's value.
 	  </description>
 	</param>
       </parameters>
@@ -5912,10 +5912,10 @@
 	<error id="JVMTI_ERROR_INVALID_SLOT">
 	  Invalid <code>slot</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
 	  The variable type is not <code>float</code>.
 	</error>
-	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
+	<error id="JVMTI_ERROR_OPAQUE_FRAME">
 	  Not a visible frame
 	</error>
       </errors>
@@ -5924,8 +5924,8 @@
     <function id="GetLocalDouble" num="25">
       <synopsis>Get Local Variable - Double</synopsis>
       <description>
-	This function can be used to retrieve the value of a local 
-        variable whose type is <code>long</code>. 
+	This function can be used to retrieve the value of a local
+        variable whose type is <code>long</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -5953,7 +5953,7 @@
 	<param id="value_ptr">
 	  <outptr><jdouble/></outptr>
 	  <description>
-	    On return, points to the variable's value. 
+	    On return, points to the variable's value.
 	  </description>
 	</param>
       </parameters>
@@ -5961,10 +5961,10 @@
 	<error id="JVMTI_ERROR_INVALID_SLOT">
 	  Invalid <code>slot</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
 	  The variable type is not <code>double</code>.
 	</error>
-	<error id="JVMTI_ERROR_OPAQUE_FRAME"> 
+	<error id="JVMTI_ERROR_OPAQUE_FRAME">
 	  Not a visible frame
 	</error>
       </errors>
@@ -5973,8 +5973,8 @@
     <function id="SetLocalObject" num="26">
       <synopsis>Set Local Variable - Object</synopsis>
       <description>
-	This function can be used to set the value of a local 
-        variable whose type is <code>Object</code> or a subclass of <code>Object</code>. 
+	This function can be used to set the value of a local
+        variable whose type is <code>Object</code> or a subclass of <code>Object</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -6015,7 +6015,7 @@
 	  <code>Object</code> or a subclass of <code>Object</code>.
 	</error>
 	<error id="JVMTI_ERROR_TYPE_MISMATCH">
-	  The supplied <paramlink id="value"/> is not compatible 
+	  The supplied <paramlink id="value"/> is not compatible
 	  with the variable type.
 	</error>
 	<error id="JVMTI_ERROR_OPAQUE_FRAME">
@@ -6027,10 +6027,10 @@
     <function id="SetLocalInt" num="27">
       <synopsis>Set Local Variable - Int</synopsis>
       <description>
-	This function can be used to set the value of a local 
+	This function can be used to set the value of a local
         variable whose type is <code>int</code>,
-        <code>short</code>, <code>char</code>, <code>byte</code>, or 
-	<code>boolean</code>. 
+        <code>short</code>, <code>char</code>, <code>byte</code>, or
+	<code>boolean</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -6066,10 +6066,10 @@
 	<error id="JVMTI_ERROR_INVALID_SLOT">
 	  Invalid <code>slot</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
-	  The variable type is not 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
+	  The variable type is not
           <code>int</code>, <code>short</code>,
-          <code>char</code>, <code>byte</code>, or 
+          <code>char</code>, <code>byte</code>, or
   	  <code>boolean</code>.
 	</error>
 	<error id="JVMTI_ERROR_OPAQUE_FRAME">
@@ -6081,8 +6081,8 @@
     <function id="SetLocalLong" num="28">
       <synopsis>Set Local Variable - Long</synopsis>
       <description>
-	This function can be used to set the value of a local 
-        variable whose type is <code>long</code>. 
+	This function can be used to set the value of a local
+        variable whose type is <code>long</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -6118,7 +6118,7 @@
 	<error id="JVMTI_ERROR_INVALID_SLOT">
 	  Invalid <code>slot</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
 	  The variable type is not <code>long</code>.
 	</error>
 	<error id="JVMTI_ERROR_OPAQUE_FRAME">
@@ -6130,8 +6130,8 @@
     <function id="SetLocalFloat" num="29">
       <synopsis>Set Local Variable - Float</synopsis>
       <description>
-	This function can be used to set the value of a local 
-        variable whose type is <code>float</code>. 
+	This function can be used to set the value of a local
+        variable whose type is <code>float</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -6167,7 +6167,7 @@
 	<error id="JVMTI_ERROR_INVALID_SLOT">
 	  Invalid <code>slot</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
 	  The variable type is not <code>float</code>.
 	</error>
 	<error id="JVMTI_ERROR_OPAQUE_FRAME">
@@ -6179,8 +6179,8 @@
     <function id="SetLocalDouble" num="30">
       <synopsis>Set Local Variable - Double</synopsis>
       <description>
-	This function can be used to set the value of a local 
-        variable whose type is <code>double</code>. 
+	This function can be used to set the value of a local
+        variable whose type is <code>double</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -6216,7 +6216,7 @@
 	<error id="JVMTI_ERROR_INVALID_SLOT">
 	  Invalid <code>slot</code>.
 	</error>
-	<error id="JVMTI_ERROR_TYPE_MISMATCH"> 
+	<error id="JVMTI_ERROR_TYPE_MISMATCH">
 	  The variable type is not <code>double</code>.
 	</error>
 	<error id="JVMTI_ERROR_OPAQUE_FRAME">
@@ -6267,7 +6267,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_DUPLICATE"> 
+	<error id="JVMTI_ERROR_DUPLICATE">
 	  The designated bytecode already has a breakpoint.
 	</error>
       </errors>
@@ -6304,7 +6304,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_NOT_FOUND"> 
+	<error id="JVMTI_ERROR_NOT_FOUND">
 	  There's no breakpoint at the designated bytecode.
 	</error>
       </errors>
@@ -6325,14 +6325,14 @@
 	by <code>klass</code> and
 	<code>field</code> is about to be accessed.
 	An event will be generated for each access of the field
-	until it is canceled with 
+	until it is canceled with
 	<functionlink id="ClearFieldAccessWatch"></functionlink>.
 	Field accesses from Java programming language code or from JNI code are watched,
 	fields modified by other means are not watched.
 	Note that <jvmti/> users should be aware that their own field accesses
 	will trigger the watch.
 	A field can only have one field access watch set.
-	Modification of a field is not considered an access--use 
+	Modification of a field is not considered an access--use
 	<functionlink id="SetFieldModificationWatch"></functionlink>
 	to monitor modifications.
       </description>
@@ -6356,7 +6356,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_DUPLICATE"> 
+	<error id="JVMTI_ERROR_DUPLICATE">
 	  The designated field is already being watched for accesses.
 	</error>
       </errors>
@@ -6365,8 +6365,8 @@
     <function id="ClearFieldAccessWatch" num="42">
       <synopsis>Clear Field Access Watch</synopsis>
       <description>
-	Cancel a field access watch previously set by 
-	<functionlink id="SetFieldAccessWatch"></functionlink>, on the 
+	Cancel a field access watch previously set by
+	<functionlink id="SetFieldAccessWatch"></functionlink>, on the
 	field specified
 	by <code>klass</code> and
 	<code>field</code>.
@@ -6391,7 +6391,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_NOT_FOUND"> 
+	<error id="JVMTI_ERROR_NOT_FOUND">
 	  The designated field is not being watched for accesses.
 	</error>
       </errors>
@@ -6405,7 +6405,7 @@
 	by <code>klass</code> and
 	<code>field</code> is about to be modified.
 	An event will be generated for each modification of the field
-	until it is canceled with 
+	until it is canceled with
 	<functionlink id="ClearFieldModificationWatch"></functionlink>.
 	Field modifications from Java programming language code or from JNI code are watched,
 	fields modified by other means are not watched.
@@ -6433,7 +6433,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_DUPLICATE"> 
+	<error id="JVMTI_ERROR_DUPLICATE">
 	  The designated field is already being watched for modifications.
 	</error>
       </errors>
@@ -6443,8 +6443,8 @@
       <synopsis>Clear Field Modification Watch</synopsis>
       <description>
 
-	Cancel a field modification watch previously set by 
-	<functionlink id="SetFieldModificationWatch"></functionlink>, on the 
+	Cancel a field modification watch previously set by
+	<functionlink id="SetFieldModificationWatch"></functionlink>, on the
 	field specified
 	by <code>klass</code> and
 	<code>field</code>.
@@ -6469,7 +6469,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_NOT_FOUND"> 
+	<error id="JVMTI_ERROR_NOT_FOUND">
 	  The designated field is not being watched for modifications.
 	</error>
       </errors>
@@ -6857,9 +6857,9 @@
 	<code>class_count_ptr</code>, and the array itself via
 	<code>classes_ptr</code>.
 	<p/>
-	Array classes of all types (including arrays of primitive types) are 
-	included in the returned list. Primitive classes (for example, 
-	<code>java.lang.Integer.TYPE</code>) are <i>not</i> included in this list. 
+	Array classes of all types (including arrays of primitive types) are
+	included in the returned list. Primitive classes (for example,
+	<code>java.lang.Integer.TYPE</code>) are <i>not</i> included in this list.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -6887,8 +6887,8 @@
       <synopsis>Get Classloader Classes</synopsis>
       <description>
 	Returns an array of those classes for which this class loader has
-	been recorded as an initiating loader. Each 
-	class in the returned array was created by this class loader, 
+	been recorded as an initiating loader. Each
+	class in the returned array was created by this class loader,
 	either by defining it directly or by delegation to another class loader.
 	See <vmspec chapter="5.3"/>.
 	<p/>
@@ -6930,14 +6930,14 @@
     <function id="GetClassSignature" phase="start" num="48">
       <synopsis>Get Class Signature</synopsis>
       <description>
-        For the class indicated by <code>klass</code>, return the 
-        <externallink id="docs/technotes/guides/jni/spec/types.html#type_signatures">JNI 
-            type signature</externallink> 
+        For the class indicated by <code>klass</code>, return the
+        <externallink id="jni/types.html#type-signatures">JNI
+            type signature</externallink>
         and the generic signature of the class.
         For example, <code>java.util.List</code> is <code>"Ljava/util/List;"</code>
         and <code>int[]</code> is <code>"[I"</code>
 	The returned name for primitive classes
-	is the type signature character of the corresponding primitive type. 
+	is the type signature character of the corresponding primitive type.
         For example, <code>java.lang.Integer.TYPE</code> is <code>"I"</code>.
       </description>
       <origin>jvmdiClone</origin>
@@ -6952,7 +6952,7 @@
 	</param>
 	<param id="signature_ptr">
 	  <allocbuf>
-            <char/>           
+            <char/>
             <nullok>the signature is not returned</nullok>
           </allocbuf>
 	  <description>
@@ -6962,14 +6962,14 @@
 	</param>
 	<param id="generic_ptr">
 	  <allocbuf>
-            <char/>           
+            <char/>
             <nullok>the generic signature is not returned</nullok>
           </allocbuf>
 	  <description>
 	    On return, points to the generic signature of the class, encoded as a
 	    <internallink id="mUTF">modified UTF-8</internallink> string.
             If there is no generic signature attribute for the class, then,
-            on return, points to <code>NULL</code>. 
+            on return, points to <code>NULL</code>.
 	  </description>
 	</param>
       </parameters>
@@ -6980,7 +6980,7 @@
     <function id="GetClassStatus" phase="start" num="49">
       <synopsis>Get Class Status</synopsis>
       <description>
-	Get the status of the class. Zero or more of the following bits can be 
+	Get the status of the class. Zero or more of the following bits can be
 	set.
 	<constants id="jvmtiClassStatus" label="Class Status Flags" kind="bits">
 	  <constant id="JVMTI_CLASS_STATUS_VERIFIED" num="1">
@@ -6999,7 +6999,7 @@
 	    Class is an array.  If set, all other bits are zero.
 	  </constant>
 	  <constant id="JVMTI_CLASS_STATUS_PRIMITIVE" num="32">
-	    Class is a primitive class (for example, <code>java.lang.Integer.TYPE</code>).  
+	    Class is a primitive class (for example, <code>java.lang.Integer.TYPE</code>).
 	    If set, all other bits are zero.
 	  </constant>
 	</constants>
@@ -7017,7 +7017,7 @@
 	<param id="status_ptr">
 	  <outptr><jint/></outptr>
 	  <description>
-	    On return, points to the current state of this class as one or 
+	    On return, points to the current state of this class as one or
 	    more of the <internallink id="jvmtiClassStatus">class status flags</internallink>.
 	  </description>
 	</param>
@@ -7030,11 +7030,11 @@
       <synopsis>Get Source File Name</synopsis>
       <description>
 	For the class indicated by <code>klass</code>, return the source file
-	name via <code>source_name_ptr</code>. The returned string 
-	is a file name only and never contains a directory name. 
+	name via <code>source_name_ptr</code>. The returned string
+	is a file name only and never contains a directory name.
 	<p/>
-	For primitive classes (for example, <code>java.lang.Integer.TYPE</code>) 
-	and for arrays this function returns 
+	For primitive classes (for example, <code>java.lang.Integer.TYPE</code>)
+	and for arrays this function returns
 	<errorlink id="JVMTI_ERROR_ABSENT_INFORMATION"></errorlink>.
       </description>
       <origin>jvmdi</origin>
@@ -7057,7 +7057,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
+	<error id="JVMTI_ERROR_ABSENT_INFORMATION">
 	  Class information does not include a source file name. This includes
 	  cases where the class is an array class or primitive class.
 	</error>
@@ -7072,17 +7072,17 @@
 	via <code>modifiers_ptr</code>.
 	Access flags are defined in <vmspec chapter="4"/>.
 	<p/>
-	If the class is an array class, then its public, private, and protected 
-	modifiers are the same as those of its component type. For arrays of 
-	primitives, this component type is represented by one of the primitive 
-	classes (for example, <code>java.lang.Integer.TYPE</code>). 
+	If the class is an array class, then its public, private, and protected
+	modifiers are the same as those of its component type. For arrays of
+	primitives, this component type is represented by one of the primitive
+	classes (for example, <code>java.lang.Integer.TYPE</code>).
 	<p/>
-	If the class is a primitive class, its public modifier is always true, 
-	and its protected and private modifiers are always false. 
+	If the class is a primitive class, its public modifier is always true,
+	and its protected and private modifiers are always false.
 	<p/>
-	If the class is an array class or a primitive class then its final 
-	modifier is always true and its interface modifier is always false. 
-	The values of its other modifiers are not determined by this specification. 
+	If the class is an array class or a primitive class then its final
+	modifier is always true and its interface modifier is always false.
+	The values of its other modifiers are not determined by this specification.
 
       </description>
       <origin>jvmdi</origin>
@@ -7112,7 +7112,7 @@
       <description>
 	For the class indicated by <code>klass</code>, return a count of
 	methods via <code>method_count_ptr</code> and a list of
-	method IDs via <code>methods_ptr</code>. The method list contains 
+	method IDs via <code>methods_ptr</code>. The method list contains
 	constructors and static initializers as well as true methods.
 	Only directly declared methods are returned (not inherited methods).
 	An empty method list is returned for array classes and primitive classes
@@ -7185,7 +7185,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_CLASS_NOT_PREPARED"> 
+	<error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
 	  <paramlink id="klass"></paramlink> is not prepared.
 	</error>
       </errors>
@@ -7194,7 +7194,7 @@
     <function id="GetImplementedInterfaces" phase="start" num="54">
       <synopsis>Get Implemented Interfaces</synopsis>
       <description>
-	Return the direct super-interfaces of this class. For a class, this 
+	Return the direct super-interfaces of this class. For a class, this
 	function returns the interfaces declared in its <code>implements</code>
 	clause. For an interface, this function returns the interfaces declared in
 	its <code>extends</code> clause.
@@ -7225,7 +7225,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_CLASS_NOT_PREPARED"> 
+	<error id="JVMTI_ERROR_CLASS_NOT_PREPARED">
 	  <paramlink id="klass"></paramlink> is not prepared.
 	</error>
       </errors>
@@ -7234,10 +7234,10 @@
     <function id="GetClassVersionNumbers" phase="start" num="145" since="1.1">
       <synopsis>Get Class Version Numbers</synopsis>
       <description>
-        For the class indicated by <code>klass</code>, 
+        For the class indicated by <code>klass</code>,
         return the minor and major version numbers,
         as defined in
-        <vmspec chapter="4"/>. 
+        <vmspec chapter="4"/>.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -7253,7 +7253,7 @@
 	  <outptr><jint/></outptr>
 	  <description>
 	    On return, points to the value of the
-            <code>minor_version</code> item of the 
+            <code>minor_version</code> item of the
             Class File Format.
             Note: to be consistent with the Class File Format,
             the minor version number is the first parameter.
@@ -7263,13 +7263,13 @@
 	  <outptr><jint/></outptr>
 	  <description>
 	    On return, points to the value of the
-            <code>major_version</code> item of the 
+            <code>major_version</code> item of the
             Class File Format.
 	  </description>
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
+	<error id="JVMTI_ERROR_ABSENT_INFORMATION">
 	  The class is a primitive or array class.
 	</error>
       </errors>
@@ -7278,13 +7278,13 @@
     <function id="GetConstantPool" phase="start" num="146" since="1.1">
       <synopsis>Get Constant Pool</synopsis>
       <description>
-	For the class indicated by <code>klass</code>, 
+	For the class indicated by <code>klass</code>,
         return the raw bytes of the constant pool in the format of the
-        <code>constant_pool</code> item of 
+        <code>constant_pool</code> item of
         <vmspec chapter="4"/>.
         The format of the constant pool may differ between versions
-        of the Class File Format, so, the 
-        <functionlink id="GetClassVersionNumbers">minor and major 
+        of the Class File Format, so, the
+        <functionlink id="GetClassVersionNumbers">minor and major
         class version numbers</functionlink> should be checked for
         compatibility.
         <p/>
@@ -7294,17 +7294,17 @@
         more or fewer entries than the defining constant pool.
         Entries may be in a different order.
         The constant pool returned by GetConstantPool() will match the
-        constant pool used by 
+        constant pool used by
         <functionlink id="GetBytecodes">GetBytecodes()</functionlink>.
         That is, the bytecodes returned by GetBytecodes() will have
         constant pool indices which refer to constant pool entries returned
         by GetConstantPool().
-        Note that since <functionlink id="RetransformClasses"/> 
-        and <functionlink id="RedefineClasses"/> can change 
+        Note that since <functionlink id="RetransformClasses"/>
+        and <functionlink id="RedefineClasses"/> can change
         the constant pool, the constant pool returned by this function
-        can change accordingly.  Thus, the correspondence between 
+        can change accordingly.  Thus, the correspondence between
         GetConstantPool() and GetBytecodes() does not hold if there
-        is an intervening class retransformation or redefinition. 
+        is an intervening class retransformation or redefinition.
         The value of a constant pool entry used by a given bytecode will
         match that of the defining class file (even if the indices don't match).
         Constant pool entries which are not used directly or indirectly by
@@ -7342,13 +7342,13 @@
 	  <allocbuf outcount="constant_pool_byte_count_ptr"><uchar/></allocbuf>
 	    <description>
 	      On return, points to the raw constant pool, that is the bytes
-              defined by the <code>constant_pool</code> item of the 
+              defined by the <code>constant_pool</code> item of the
               Class File Format
 	    </description>
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
+	<error id="JVMTI_ERROR_ABSENT_INFORMATION">
 	  The class is a primitive or array class.
 	</error>
       </errors>
@@ -7360,7 +7360,7 @@
 	Determines whether a class object reference represents an interface.
 	The <code>jboolean</code> result is
 	<code>JNI_TRUE</code> if the "class" is actually an interface,
-	<code>JNI_FALSE</code> otherwise. 
+	<code>JNI_FALSE</code> otherwise.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -7390,7 +7390,7 @@
 	Determines whether a class object reference represents an array.
 	The <code>jboolean</code> result is
 	<code>JNI_TRUE</code> if the class is an array,
-	<code>JNI_FALSE</code> otherwise. 
+	<code>JNI_FALSE</code> otherwise.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -7420,11 +7420,11 @@
 	Determines whether a class is modifiable.
         If a class is modifiable (<paramlink id="is_modifiable_class_ptr"/>
         returns <code>JNI_TRUE</code>) the class can be
-        redefined with <functionlink id="RedefineClasses"/> (assuming 
+        redefined with <functionlink id="RedefineClasses"/> (assuming
         the agent possesses the
         <fieldlink id="can_redefine_classes" struct="jvmtiCapabilities"/>
         capability) or
-        retransformed with <functionlink id="RetransformClasses"/> (assuming 
+        retransformed with <functionlink id="RetransformClasses"/> (assuming
         the agent possesses the
         <fieldlink id="can_retransform_classes" struct="jvmtiCapabilities"/>
         capability).
@@ -7433,7 +7433,7 @@
         redefined nor retransformed.
         <p/>
         Primitive classes (for example, <code>java.lang.Integer.TYPE</code>),
-        array classes, and some implementation defined classes are never modifiable. 
+        array classes, and some implementation defined classes are never modifiable.
         <p/>
       </description>
       <origin>new</origin>
@@ -7511,11 +7511,11 @@
     <function id="GetSourceDebugExtension" phase="start" num="90">
       <synopsis>Get Source Debug Extension</synopsis>
       <description>
-	For the class indicated by <code>klass</code>, return the debug 
+	For the class indicated by <code>klass</code>, return the debug
         extension via <code>source_debug_extension_ptr</code>.
-        The returned string 
+        The returned string
 	contains exactly the debug extension information present in the
-	class file of <code>klass</code>. 
+	class file of <code>klass</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -7537,7 +7537,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
+	<error id="JVMTI_ERROR_ABSENT_INFORMATION">
 	  Class information does not include a debug extension.
 	</error>
       </errors>
@@ -7546,15 +7546,15 @@
     <function id="RetransformClasses" jkernel="yes" num="152" since="1.1">
       <synopsis>Retransform Classes</synopsis>
       <description>
-        This function facilitates the 
+        This function facilitates the
         <internallink id="bci">bytecode instrumentation</internallink>
         of already loaded classes.
         To replace the class definition without reference to the existing
-        bytecodes, as one might do when recompiling from source for 
+        bytecodes, as one might do when recompiling from source for
         fix-and-continue debugging, <functionlink id="RedefineClasses"/>
         function should be used instead.
         <p/>
-        When classes are initially loaded or when they are 
+        When classes are initially loaded or when they are
         <functionlink id="RedefineClasses">redefined</functionlink>,
         the initial class file bytes can be transformed with the
         <eventlink id="ClassFileLoadHook"/> event.
@@ -7562,16 +7562,16 @@
         (whether or not a transformation has previously occurred).
         This retransformation follows these steps:
         <ul>
-          <li>starting from the initial class file bytes 
+          <li>starting from the initial class file bytes
           </li>
           <li>for each <fieldlink id="can_retransform_classes"
                      struct="jvmtiCapabilities">retransformation
                                                 incapable</fieldlink>
             agent which received a
             <code>ClassFileLoadHook</code> event during the previous
-            load or redefine, the bytes it returned 
+            load or redefine, the bytes it returned
             (via the <code>new_class_data</code> parameter)
-            are reused as the output of the transformation; 
+            are reused as the output of the transformation;
             note that this is equivalent to reapplying
             the previous transformation, unaltered. except that
             the <code>ClassFileLoadHook</code> event
@@ -7589,7 +7589,7 @@
         </ul>
         See the <eventlink id="ClassFileLoadHook"/> event for more details.
         <p/>
-        The initial class file bytes represent the bytes passed to 
+        The initial class file bytes represent the bytes passed to
         <code>ClassLoader.defineClass</code>
         or <code>RedefineClasses</code> (before any transformations
         were applied), however they may not exactly match them.
@@ -7601,13 +7601,13 @@
         order may not be preserved.
         <p/>
         Retransformation can cause new versions of methods to be installed.
-        Old method versions may become 
+        Old method versions may become
         <internallink id="obsoleteMethods">obsolete</internallink>
-        The new method version will be used on new invokes.  
+        The new method version will be used on new invokes.
         If a method has active stack frames, those active frames continue to
-        run the bytecodes of the original method version. 
+        run the bytecodes of the original method version.
         <p/>
-        This function does not cause any initialization except that which 
+        This function does not cause any initialization except that which
         would occur under the customary JVM semantics.
         In other words, retransforming a class does not cause its initializers to be
         run. The values of static fields will remain as they were
@@ -7620,7 +7620,7 @@
         All attributes are updated.
         <p/>
         Instances of the retransformed class are not affected -- fields retain their
-        previous values.  
+        previous values.
         <functionlink id="GetTag">Tags</functionlink> on the instances are
         also unaffected.
         <p/>
@@ -7629,8 +7629,8 @@
         will be sent.
         <p/>
         The retransformation may change method bodies, the constant pool and attributes.
-        The retransformation must not add, remove or rename fields or methods, change the 
-        signatures of methods, change modifiers, or change inheritance.  
+        The retransformation must not add, remove or rename fields or methods, change the
+        signatures of methods, change modifiers, or change inheritance.
         These restrictions may be lifted in future versions.
         See the error return description below for information on error codes
         returned if an unsupported retransformation is attempted.
@@ -7640,7 +7640,7 @@
         If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
         none of the classes to be retransformed will have a new definition installed.
         When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
-        all of the classes to be retransformed will have their new definitions installed.        
+        all of the classes to be retransformed will have their new definitions installed.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -7663,7 +7663,7 @@
       </parameters>
       <errors>
         <error id="JVMTI_ERROR_UNMODIFIABLE_CLASS">
-          One of the <paramlink id="classes"/> cannot be modified. 
+          One of the <paramlink id="classes"/> cannot be modified.
           See <functionlink id="IsModifiableClass"/>.
         </error>
         <error id="JVMTI_ERROR_INVALID_CLASS">
@@ -7676,7 +7676,7 @@
           A retransformed class file is malformed (The VM would return a <code>ClassFormatError</code>).
         </error>
         <error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
-          The retransformed class file definitions would lead to a circular definition 
+          The retransformed class file definitions would lead to a circular definition
           (the VM would return a <code>ClassCircularityError</code>).
         </error>
         <error id="JVMTI_ERROR_FAILS_VERIFICATION">
@@ -7739,22 +7739,22 @@
 	This function is used to replace the definition of a class
 	with a new definition, as might be needed in fix-and-continue
 	debugging.
-	Where the existing class file bytes are to be transformed, for 
+	Where the existing class file bytes are to be transformed, for
 	example in
 	<internallink id="bci">bytecode instrumentation</internallink>,
 	<functionlink id="RetransformClasses"/> should be used.
 	<p/>
 	Redefinition can cause new versions of methods to be installed.
-	Old method versions may become 
+	Old method versions may become
 	<internallink id="obsoleteMethods">obsolete</internallink>
-	The new method version will be used on new invokes.  
+	The new method version will be used on new invokes.
 	If a method has active stack frames, those active frames continue to
-        run the bytecodes of the original method version. 
-	If resetting of stack frames is desired, use 
+        run the bytecodes of the original method version.
+	If resetting of stack frames is desired, use
 	<functionlink id="PopFrame"></functionlink>
 	to pop frames with obsolete method versions.
 	<p/>
-	This function does not cause any initialization except that which 
+	This function 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 fields will remain as they were
@@ -7767,7 +7767,7 @@
 	All attributes are updated.
 	<p/>
         Instances of the redefined class are not affected -- fields retain their
-        previous values.  
+        previous values.
 	<functionlink id="GetTag">Tags</functionlink> on the instances are
         also unaffected.
 	<p/>
@@ -7776,8 +7776,8 @@
         will be sent (if enabled), but no other <jvmti/> events will be sent.
         <p/>
         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, change modifiers, or change inheritance.  
+        The redefinition must not add, remove or rename fields or methods, change the
+        signatures of methods, change modifiers, or change inheritance.
         These restrictions may be lifted in future versions.
 	See the error return description below for information on error codes
 	returned if an unsupported redefinition is attempted.
@@ -7788,7 +7788,7 @@
         If any error code is returned other than <code>JVMTI_ERROR_NONE</code>,
         none of the classes to be redefined will have a new definition installed.
         When this function returns (with the error code of <code>JVMTI_ERROR_NONE</code>)
-        all of the classes to be redefined will have their new definitions installed.        
+        all of the classes to be redefined will have their new definitions installed.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -7827,7 +7827,7 @@
 	  A new class file is malformed (The VM would return a <code>ClassFormatError</code>).
 	</error>
 	<error id="JVMTI_ERROR_CIRCULAR_CLASS_DEFINITION">
-	  The new class file definitions would lead to a circular definition 
+	  The new class file definitions would lead to a circular definition
 	  (the VM would return a <code>ClassCircularityError</code>).
 	</error>
 	<error id="JVMTI_ERROR_FAILS_VERIFICATION">
@@ -7876,7 +7876,7 @@
 	For the object indicated by <code>object</code>,
 	return via <code>size_ptr</code> the size of the object.
         This size is an implementation-specific approximation of
-        the amount of storage consumed by this object. 
+        the amount of storage consumed by this object.
         It may include some or all of the object's overhead, and thus
         is useful for comparison within an implementation but not
         between implementations.
@@ -7909,11 +7909,11 @@
 	For the object indicated by <code>object</code>,
 	return via <code>hash_code_ptr</code> a hash code.
         This hash code could be used to maintain a hash table of object references,
-        however, on some implementations this can cause significant performance 
-        impacts--in most cases 
-        <internallink id="Heap">tags</internallink> 
+        however, on some implementations this can cause significant performance
+        impacts--in most cases
+        <internallink id="Heap">tags</internallink>
         will be a more efficient means of associating information with objects.
-	This function guarantees 
+	This function guarantees
 	the same hash code value for a particular object throughout its life
       </description>
       <origin>jvmdi</origin>
@@ -7979,7 +7979,7 @@
       </typedef>
       <description>
 	Get information about the object's monitor.
-	The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure 
+	The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
 	are filled in with information about usage of the monitor.
 	  <todo>
 	    Decide and then clarify suspend requirements.
@@ -7999,7 +7999,7 @@
 	<param id="info_ptr">
 	  <outptr><struct>jvmtiMonitorUsage</struct></outptr>
 	  <description>
-	    On return, filled with monitor information for the 
+	    On return, filled with monitor information for the
 	    specified object.
 	  </description>
 	</param>
@@ -8014,7 +8014,7 @@
       <description>
         Return the list of object monitors.
         <p/>
-        Note: details about each monitor can be examined with 
+        Note: details about each monitor can be examined with
         <functionlink id="GetObjectMonitorUsage"></functionlink>.
       </description>
       <origin>new</origin>
@@ -8025,7 +8025,7 @@
         <param id="monitorCnt">
 	  <outptr><jint/></outptr>
 	  <description>
-	    On return, pointer to the number 
+	    On return, pointer to the number
 	    of monitors returned in <code>monitors_ptr</code>.
 	  </description>
 	</param>
@@ -8056,7 +8056,7 @@
 	<paramlink id="signature_ptr"/>.
 	<p/>
         Field signatures are defined in the
-        <externallink id="docs/technotes/guides/jni/spec/jniTOC.html">JNI Specification</externallink>
+        <externallink id="jni/index.html">JNI Specification</externallink>
         and are referred to as <code>field descriptors</code> in
         <vmspec chapter="4.3.2"/>.
       </description>
@@ -8098,14 +8098,14 @@
 	</param>
 	<param id="generic_ptr">
 	  <allocbuf>
-            <char/>           
+            <char/>
             <nullok>the generic signature is not returned</nullok>
           </allocbuf>
 	  <description>
 	    On return, points to the generic signature of the field, encoded as a
 	    <internallink id="mUTF">modified UTF-8</internallink> string.
             If there is no generic signature attribute for the field, then,
-            on return, points to <code>NULL</code>. 
+            on return, points to <code>NULL</code>.
 	  </description>
 	</param>
       </parameters>
@@ -8187,7 +8187,7 @@
       <description>
 	For the field indicated by <code>klass</code> and <code>field</code>, return a
 	value indicating whether the field is synthetic via <code>is_synthetic_ptr</code>.
-	Synthetic fields are generated by the compiler but not present in the 
+	Synthetic fields are generated by the compiler but not present in the
 	original source code.
       </description>
       <origin>jvmdi</origin>
@@ -8241,7 +8241,7 @@
       An original method version which is not equivalent to the
       new method version is called obsolete and is assigned a new method ID;
       the original method ID now refers to the new method version.
-      A method ID can be tested for obsolescence with 
+      A method ID can be tested for obsolescence with
       <functionlink id="IsMethodObsolete"/>.
     </intro>
 
@@ -8253,8 +8253,8 @@
 	<code>signature_ptr</code>.
         <p/>
         Method signatures are defined in the
-        <externallink id="docs/technotes/guides/jni/spec/jniTOC.html">JNI Specification</externallink>
-        and are referred to as <code>method descriptors</code> in 
+        <externallink id="jni/index.html">JNI Specification</externallink>
+        and are referred to as <code>method descriptors</code> in
         <vmspec chapter="4.3.3"/>.
 	Note this is different
 	than method signatures as defined in the <i>Java Language Specification</i>.
@@ -8291,14 +8291,14 @@
 	</param>
 	<param id="generic_ptr">
 	  <allocbuf>
-            <char/>           
+            <char/>
             <nullok>the generic signature is not returned</nullok>
           </allocbuf>
 	  <description>
 	    On return, points to the generic signature of the method, encoded as a
 	    <internallink id="mUTF">modified UTF-8</internallink> string.
             If there is no generic signature attribute for the method, then,
-            on return, points to <code>NULL</code>. 
+            on return, points to <code>NULL</code>.
 	  </description>
 	</param>
       </parameters>
@@ -8379,7 +8379,7 @@
 	  For the method indicated by <code>method</code>,
 	  return the number of local variable slots used by the method,
 	  including the local variables used to pass parameters to the
-	  method on its invocation. 
+	  method on its invocation.
 	  <p/>
 	  See <code>max_locals</code> in <vmspec chapter="4.7.3"/>.
       </description>
@@ -8465,7 +8465,7 @@
 	For the method indicated by <code>method</code>,
 	return a table of source line number entries. The size of the table is
 	returned via <code>entry_count_ptr</code> and the table itself is
-	returned via <code>table_ptr</code>. 
+	returned via <code>table_ptr</code>.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -8498,7 +8498,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
+	<error id="JVMTI_ERROR_ABSENT_INFORMATION">
 	  Class information does not include line numbers.
 	</error>
       </errors>
@@ -8510,10 +8510,10 @@
 	For the method indicated by <code>method</code>,
 	return the beginning and ending addresses through
 	<code>start_location_ptr</code> and <code>end_location_ptr</code>. In a
-	conventional byte code indexing scheme, 
+	conventional byte code indexing scheme,
 	<code>start_location_ptr</code> will always point to zero
-	and <code>end_location_ptr</code> 
-	will always point to the byte code count minus one. 
+	and <code>end_location_ptr</code>
+	will always point to the byte code count minus one.
       </description>
       <origin>jvmdi</origin>
       <capabilities>
@@ -8534,9 +8534,9 @@
 	<param id="start_location_ptr">
 	  <outptr><jlocation/></outptr>
 	  <description>
-	    On return, points to the first location, or 
+	    On return, points to the first location, or
 	    <code>-1</code> if location information is not available.
-	    If the information is available and 
+	    If the information is available and
 	    <functionlink id="GetJLocationFormat"></functionlink>
 	    returns <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>
 	    then this will always be zero.
@@ -8551,7 +8551,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_ABSENT_INFORMATION"> 
+	<error id="JVMTI_ERROR_ABSENT_INFORMATION">
 	  Class information does not include method sizes.
 	</error>
       </errors>
@@ -8571,7 +8571,7 @@
 	  <jint/>
 	  <description>
             The length of the valid section for this local variable.
-	    The last code array index where the local variable is valid 
+	    The last code array index where the local variable is valid
             is <code>start_location + length</code>.
 	  </description>
 	</field>
@@ -8596,7 +8596,7 @@
 	  <description>
 	    The local variable's generic signature, encoded as a
 	    <internallink id="mUTF">modified UTF-8</internallink> string.
-            The value of this field will be <code>NULL</code> for any local 
+            The value of this field will be <code>NULL</code> for any local
             variable which does not have a generic type.
 	  </description>
 	</field>
@@ -8722,7 +8722,7 @@
       <description>
 	For the method indicated by <code>method</code>, return a
 	value indicating whether the method is synthetic via <code>is_synthetic_ptr</code>.
-	Synthetic methods are generated by the compiler but not present in the 
+	Synthetic methods are generated by the compiler but not present in the
 	original source code.
       </description>
       <origin>jvmdi</origin>
@@ -8793,7 +8793,7 @@
 	This function modifies the failure handling of
         native method resolution by allowing retry
         with a prefix applied to the name.
-        When used with the 
+        When used with the
         <eventlink id="ClassFileLoadHook">ClassFileLoadHook
         event</eventlink>, it enables native methods to be
         <internallink id="bci">instrumented</internallink>.
@@ -8805,7 +8805,7 @@
         <example>
 native boolean foo(int x);</example>
         <p/>
-        We could transform the class file (with the 
+        We could transform the class file (with the
         ClassFileLoadHook event) so that this becomes:
         <example>
 boolean foo(int x) {
@@ -8823,28 +8823,28 @@
         better but would make these examples less readable.
         <p/>
         The wrapper will allow data to be collected on the native
-        method call, but now the problem becomes linking up the  
-        wrapped method with the native implementation.  
-        That is, the method <code>wrapped_foo</code> needs to be 
+        method call, but now the problem becomes linking up the
+        wrapped method with the native implementation.
+        That is, the method <code>wrapped_foo</code> needs to be
         resolved to the native implementation of <code>foo</code>,
         which might be:
         <example>
 Java_somePackage_someClass_foo(JNIEnv* env, jint x)</example>
         <p/>
         This function allows the prefix to be specified and the
-        proper resolution to occur.  
+        proper resolution to occur.
         Specifically, when the standard resolution fails, the
         resolution is retried taking the prefix into consideration.
         There are two ways that resolution occurs, explicit
         resolution with the JNI function <code>RegisterNatives</code>
-        and the normal automatic resolution.  For 
-        <code>RegisterNatives</code>, the VM will attempt this 
+        and the normal automatic resolution.  For
+        <code>RegisterNatives</code>, the VM will attempt this
         association:
         <example>
 method(foo) -> nativeImplementation(foo)</example>
         <p/>
         When this fails, the resolution will be retried with
-        the specified prefix prepended to the method name, 
+        the specified prefix prepended to the method name,
         yielding the correct resolution:
         <example>
 method(wrapped_foo) -> nativeImplementation(foo)</example>
@@ -8854,7 +8854,7 @@
 method(wrapped_foo) -> nativeImplementation(wrapped_foo)</example>
         <p/>
         When this fails, the resolution will be retried with
-        the specified prefix deleted from the implementation name, 
+        the specified prefix deleted from the implementation name,
         yielding the correct resolution:
         <example>
 method(wrapped_foo) -> nativeImplementation(foo)</example>
@@ -8863,7 +8863,7 @@
         resolution fails, native methods can be wrapped selectively.
         <p/>
         Since each <jvmti/> environment is independent and
-        can do its own transformation of the bytecodes, more 
+        can do its own transformation of the bytecodes, more
         than one layer of wrappers may be applied. Thus each
         environment needs its own prefix.  Since transformations
         are applied in order, the prefixes, if applied, will
@@ -8871,21 +8871,21 @@
         The order of transformation application is described in
         the <eventlink id="ClassFileLoadHook"/> event.
         Thus if three environments applied
-        wrappers, <code>foo</code> might become 
+        wrappers, <code>foo</code> might become
         <code>$env3_$env2_$env1_foo</code>.  But if, say,
         the second environment did not apply a wrapper to
-        <code>foo</code> it would be just 
-        <code>$env3_$env1_foo</code>.  To be able to 
+        <code>foo</code> it would be just
+        <code>$env3_$env1_foo</code>.  To be able to
         efficiently determine the sequence of prefixes,
         an intermediate prefix is only applied if its non-native
-        wrapper exists.  Thus, in the last example, even though 
+        wrapper exists.  Thus, in the last example, even though
         <code>$env1_foo</code> is not a native method, the
-        <code>$env1_</code> prefix is applied since 
+        <code>$env1_</code> prefix is applied since
         <code>$env1_foo</code> exists.
         <p/>
         Since the prefixes are used at resolution time
         and since resolution may be arbitrarily delayed, a
-        native method prefix must remain set as long as there 
+        native method prefix must remain set as long as there
         are corresponding prefixed native methods.
       </description>
       <origin>new</origin>
@@ -8918,7 +8918,7 @@
          For a meta-agent that performs multiple independent class
          file transformations (for example as a proxy for another
          layer of agents) this function allows each transformation
-         to have its own prefix.  
+         to have its own prefix.
          The prefixes are applied in the order supplied and are
          processed in the same manor as described for the
          application of prefixes from multiple <jvmti/> environments
@@ -8929,13 +8929,13 @@
          disables prefixing in this environment.
          <p/>
          <functionlink id="SetNativeMethodPrefix"/> and this function
-         are the two ways to set the prefixes.  
-         Calling <code>SetNativeMethodPrefix</code> with 
-         a prefix is the same as calling this function with 
-         <paramlink id="prefix_count"/> of <code>1</code>. 
-         Calling <code>SetNativeMethodPrefix</code> with 
-         <code>NULL</code> is the same as calling this function with 
-         <paramlink id="prefix_count"/> of <code>0</code>. 
+         are the two ways to set the prefixes.
+         Calling <code>SetNativeMethodPrefix</code> with
+         a prefix is the same as calling this function with
+         <paramlink id="prefix_count"/> of <code>1</code>.
+         Calling <code>SetNativeMethodPrefix</code> with
+         <code>NULL</code> is the same as calling this function with
+         <paramlink id="prefix_count"/> of <code>0</code>.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -9014,16 +9014,16 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER"> 
+	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
 	  Not monitor owner
-	</error>        
+	</error>
       </errors>
     </function>
 
     <function id="RawMonitorEnter" phase="any" callbacksafe="safe" impl="innative notrace" num="33">
       <synopsis>Raw Monitor Enter</synopsis>
       <description>
-	Gain exclusive ownership of a raw monitor.  
+	Gain exclusive ownership of a raw monitor.
         The same thread may enter a monitor more then once.
         The thread must
         <functionlink id="RawMonitorExit">exit</functionlink>
@@ -9064,7 +9064,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER"> 
+	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
 	  Not monitor owner
 	</error>
       </errors>
@@ -9075,9 +9075,9 @@
       <description>
         Wait for notification of the raw monitor.
         <p/>
-        Causes the current thread to wait until either another thread calls 
-        <functionlink id="RawMonitorNotify"/> or 
-        <functionlink id="RawMonitorNotifyAll"/> 
+        Causes the current thread to wait until either another thread calls
+        <functionlink id="RawMonitorNotify"/> or
+        <functionlink id="RawMonitorNotifyAll"/>
         for the specified raw monitor, or the specified
         <paramlink id="millis">timeout</paramlink>
         has elapsed.
@@ -9102,10 +9102,10 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER"> 
+	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
 	  Not monitor owner
 	</error>
-	<error id="JVMTI_ERROR_INTERRUPT"> 
+	<error id="JVMTI_ERROR_INTERRUPT">
 	  Wait was interrupted, try again
 	</error>
       </errors>
@@ -9151,7 +9151,7 @@
 	</param>
       </parameters>
       <errors>
-	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER"> 
+	<error id="JVMTI_ERROR_NOT_MONITOR_OWNER">
 	  Not monitor owner
 	</error>
       </errors>
@@ -9161,7 +9161,7 @@
     <function id="GetRawMonitorUse" num="118">
       <synopsis>Get Raw Monitor Use</synopsis>
       <description>
-        The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure 
+        The fields of the <functionlink id="jvmtiMonitorUsage"></functionlink> structure
         are filled in with information about usage of the raw monitor.
       </description>
       <origin>new</origin>
@@ -9178,7 +9178,7 @@
         <param id="info_ptr">
 	  <outptr><struct>jvmtiMonitorUsage</struct></outptr>
 	  <description>
-	    On return, filled with monitor information for the 
+	    On return, filled with monitor information for the
 	    specified raw monitor.
 	  </description>
 	</param>
@@ -9192,7 +9192,7 @@
       <description>
         Return the list of raw monitors.
         <p/>
-        Note: details about each monitor can be examined with 
+        Note: details about each monitor can be examined with
         <functionlink id="GetRawMonitorUse"></functionlink>.
       </description>
       <origin>new</origin>
@@ -9203,7 +9203,7 @@
         <param id="monitorCnt">
 	  <outptr><jint/></outptr>
 	  <description>
-	    On return, pointer to the number 
+	    On return, pointer to the number
 	    of monitors returned in <code>monitors_ptr</code>.
 	  </description>
 	</param>
@@ -9223,13 +9223,13 @@
   <category id="jniIntercept" label="JNI Function Interception">
 
     <intro>
-      Provides the ability to intercept and resend 
+      Provides the ability to intercept and resend
       Java Native Interface (JNI) function calls
       by manipulating the JNI function table.
-      See <externallink id="docs/technotes/guides/jni/spec/functions.html">JNI
+      See <externallink id="jni/functions.html">JNI
 	Functions</externallink> in the <i>Java Native Interface Specification</i>.
       <p/>
-      The following example illustrates intercepting the 
+      The following example illustrates intercepting the
       <code>NewGlobalRef</code> JNI call in order to count reference
       creation.
       <example>
@@ -9274,19 +9274,19 @@
 	check that the example compiles and executes.
       </todo>
     </intro>
-    
+
     <function id="SetJNIFunctionTable" phase="start" num="120">
       <synopsis>Set JNI Function Table</synopsis>
       <description>
-        Set the JNI function table 
+        Set the JNI function table
         in all current and future JNI environments.
         As a result, all future JNI calls are directed to the specified functions.
         Use <functionlink id="GetJNIFunctionTable"></functionlink> to get the
         function table to pass to this function.
-        For this function to take effect the the updated table entries must be 
+        For this function to take effect the the updated table entries must be
         used by the JNI clients.
         Since the table is defined <code>const</code> some compilers may optimize
-        away the access to the table, thus preventing this function from taking 
+        away the access to the table, thus preventing this function from taking
         effect.
         The table is copied--changes to the local copy of the
         table have no effect.
@@ -9310,16 +9310,16 @@
       <errors>
       </errors>
     </function>
-    
+
     <function id="GetJNIFunctionTable" phase="start" num="121">
       <synopsis>Get JNI Function Table</synopsis>
       <description>
         Get the JNI function table.
         The JNI function table is copied into allocated memory.
-        If <functionlink id="SetJNIFunctionTable"></functionlink> 
+        If <functionlink id="SetJNIFunctionTable"></functionlink>
         has been called, the modified (not the original) function
         table is returned.
-        Only the function table is copied, no other aspects of the environment 
+        Only the function table is copied, no other aspects of the environment
         are copied.
         See the examples <internallink id="jniIntercept">above</internallink>.
       </description>
@@ -9332,7 +9332,7 @@
 	    <struct>jniNativeInterface</struct>
 	  </allocbuf>
           <description>
-	    On return, <code>*function_table</code> 
+	    On return, <code>*function_table</code>
 	    points a newly allocated copy of the JNI function table.
 	  </description>
 	</param>
@@ -9354,13 +9354,13 @@
         table have no effect.
         This is an atomic action, all callbacks are set at once.
         No events are sent before this function is called.
-        When an entry is <code>NULL</code> or when the event is beyond 
+        When an entry is <code>NULL</code> or when the event is beyond
         <paramlink id="size_of_callbacks"></paramlink> no event is sent.
-        Details on events are 
+        Details on events are
         described <internallink id="EventSection">later</internallink> in this document.
         An event must be enabled and have a callback in order to be
-        sent--the order in which this function and 
-        <functionlink id="SetEventNotificationMode"></functionlink> 
+        sent--the order in which this function and
+        <functionlink id="SetEventNotificationMode"></functionlink>
         are called does not affect the result.
       </description>
       <origin>new</origin>
@@ -9391,28 +9391,28 @@
     <function id="SetEventNotificationMode" jkernel="yes" phase="onload" num="2">
       <synopsis>Set Event Notification Mode</synopsis>
       <description>
-	Control the generation of events. 
+	Control the generation of events.
 	<constants id="jvmtiEventMode" label="Event Enable/Disable" kind="enum">
 	  <constant id="JVMTI_ENABLE" num="1">
-	    If <paramlink id="mode"></paramlink> is <code>JVMTI_ENABLE</code>, 
+	    If <paramlink id="mode"></paramlink> is <code>JVMTI_ENABLE</code>,
 	    the event <paramlink id="event_type"></paramlink> will be enabled
 	  </constant>
 	  <constant id="JVMTI_DISABLE" num="0">
-	    If <paramlink id="mode"></paramlink> is <code>JVMTI_DISABLE</code>, 
+	    If <paramlink id="mode"></paramlink> is <code>JVMTI_DISABLE</code>,
 	    the event <paramlink id="event_type"></paramlink> will be disabled
 	  </constant>
 	</constants>
 	If <code>thread</code> is <code>NULL</code>,
-	the event is enabled or disabled globally; otherwise, it is 
-	enabled or disabled for a particular thread. 
-	An event is generated for 
+	the event is enabled or disabled globally; otherwise, it is
+	enabled or disabled for a particular thread.
+	An event is generated for
 	a particular thread if it is enabled either at the thread or global
-	levels. 
+	levels.
 	<p/>
 	See <internallink id="EventIndex">below</internallink> for information on specific events.
 	<p/>
 	The following events cannot be controlled at the thread
-	level through this function. 
+	level through this function.
 	<ul>
 	  <li><eventlink id="VMInit"></eventlink></li>
 	  <li><eventlink id="VMStart"></eventlink></li>
@@ -9424,13 +9424,13 @@
 	  <li><eventlink id="DataDumpRequest"></eventlink></li>
 	</ul>
 	<p/>
-	Initially, no events are enabled at either the thread level 
+	Initially, no events are enabled at either the thread level
 	or the global level.
 	<p/>
         Any needed capabilities (see Event Enabling Capabilities below) must be possessed
         before calling this function.
         <p/>
-	Details on events are 
+	Details on events are
 	described <internallink id="EventSection">below</internallink>.
       </description>
       <origin>jvmdiClone</origin>
@@ -9472,10 +9472,10 @@
           <paramlink id="event_thread"/> is non-<code>NULL</code> and is not live (has not been started or is now dead).
         </error>
 	<error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
-	  thread level control was attempted on events which do not 
+	  thread level control was attempted on events which do not
           permit thread level control.
 	</error>
-        <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY"> 
+        <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
           The Required Event Enabling Capability is not possessed.
         </error>
       </errors>
@@ -9484,14 +9484,14 @@
     <function id="GenerateEvents" num="123">
       <synopsis>Generate Events</synopsis>
       <description>
-        Generate events to represent the current state of the VM.  
-        For example, if <paramlink id="event_type"/> is 
+        Generate events to represent the current state of the VM.
+        For example, if <paramlink id="event_type"/> is
         <code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code>,
         a <eventlink id="CompiledMethodLoad"></eventlink> event will be
         sent for each currently compiled method.
         Methods that were loaded and now have been unloaded are not sent.
-        The history of what events have previously been sent does not 
-        effect what events are sent by this function--for example, 
+        The history of what events have previously been sent does not
+        effect what events are sent by this function--for example,
         all currently compiled methods
         will be sent each time this function is called.
         <p/>
@@ -9502,14 +9502,14 @@
 	Attempts to execute Java programming language code or
 	JNI functions may be paused until this function returns -
 	so neither should be called from the thread sending the event.
-	This function returns only after the missed events have been 
+	This function returns only after the missed events have been
         sent, processed and have returned.
 	The event may be sent on a different thread than the thread
 	on which the event occurred.
-	The callback for the event must be set with 
-        <functionlink id="SetEventCallbacks"></functionlink> 
+	The callback for the event must be set with
+        <functionlink id="SetEventCallbacks"></functionlink>
 	and the event must be enabled with
-        <functionlink id="SetEventNotificationMode"></functionlink> 
+        <functionlink id="SetEventNotificationMode"></functionlink>
 	or the events will not occur.
 	If the VM no longer has the information to generate some or
         all of the requested events, the events are simply not sent -
@@ -9538,13 +9538,13 @@
 	</param>
       </parameters>
       <errors>
-        <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY"> 
-          <paramlink id="event_type"/> is 
+        <error id="JVMTI_ERROR_MUST_POSSESS_CAPABILITY">
+          <paramlink id="event_type"/> is
 	  <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
 	  and <fieldlink id="can_generate_compiled_method_load_events" struct="jvmtiCapabilities"></fieldlink>
 	  is <code>false</code>.
         </error>
-        <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT"> 
+        <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
           <paramlink id="event_type"/> is other than
 	  <eventlink id="CompiledMethodLoad"><code>JVMTI_EVENT_COMPILED_METHOD_LOAD</code></eventlink>
 	  or <eventlink id="DynamicCodeGenerated"><code>JVMTI_EVENT_DYNAMIC_CODE_GENERATED</code></eventlink>.
@@ -9566,63 +9566,63 @@
 
 	<constants id="jvmtiParamTypes" label="Extension Function/Event Parameter Types" kind="enum">
 	  <constant id="JVMTI_TYPE_JBYTE" num="101">
-	    Java programming language primitive type - <code>byte</code>. 
+	    Java programming language primitive type - <code>byte</code>.
 	    JNI type <code>jbyte</code>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JCHAR" num="102">
-	    Java programming language primitive type - <code>char</code>. 
+	    Java programming language primitive type - <code>char</code>.
 	    JNI type <code>jchar</code>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JSHORT" num="103">
-	    Java programming language primitive type - <code>short</code>. 
+	    Java programming language primitive type - <code>short</code>.
 	    JNI type <code>jshort</code>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JINT" num="104">
-	    Java programming language primitive type - <code>int</code>. 
+	    Java programming language primitive type - <code>int</code>.
 	    JNI type <datalink id="jint"></datalink>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JLONG" num="105">
-	    Java programming language primitive type - <code>long</code>. 
+	    Java programming language primitive type - <code>long</code>.
 	    JNI type <datalink id="jlong"></datalink>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JFLOAT" num="106">
-	    Java programming language primitive type - <code>float</code>. 
+	    Java programming language primitive type - <code>float</code>.
 	    JNI type <datalink id="jfloat"></datalink>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JDOUBLE" num="107">
-	    Java programming language primitive type - <code>double</code>. 
+	    Java programming language primitive type - <code>double</code>.
 	    JNI type <datalink id="jdouble"></datalink>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JBOOLEAN" num="108">
-	    Java programming language primitive type - <code>boolean</code>. 
+	    Java programming language primitive type - <code>boolean</code>.
 	    JNI type <datalink id="jboolean"></datalink>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JOBJECT" num="109">
-	    Java programming language object type - <code>java.lang.Object</code>. 
+	    Java programming language object type - <code>java.lang.Object</code>.
 	    JNI type <datalink id="jobject"></datalink>.
 	    Returned values are JNI local references and must be managed.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JTHREAD" num="110">
-	    Java programming language object type - <code>java.lang.Thread</code>. 
+	    Java programming language object type - <code>java.lang.Thread</code>.
 	    <jvmti/> type <datalink id="jthread"></datalink>.
 	    Returned values are JNI local references and must be managed.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JCLASS" num="111">
-	    Java programming language object type - <code>java.lang.Class</code>. 
+	    Java programming language object type - <code>java.lang.Class</code>.
 	    JNI type <datalink id="jclass"></datalink>.
 	    Returned values are JNI local references and must be managed.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JVALUE" num="112">
-	    Union of all Java programming language primitive and object types - 
+	    Union of all Java programming language primitive and object types -
 	    JNI type <datalink id="jvalue"></datalink>.
 	    Returned values which represent object types are JNI local references and must be managed.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JFIELDID" num="113">
-	    Java programming language field identifier - 
+	    Java programming language field identifier -
 	    JNI type <datalink id="jfieldID"></datalink>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_JMETHODID" num="114">
-	    Java programming language method identifier - 
+	    Java programming language method identifier -
 	    JNI type <datalink id="jmethodID"></datalink>.
 	  </constant>
 	  <constant id="JVMTI_TYPE_CCHAR" num="115">
@@ -9757,7 +9757,7 @@
 	      <struct>jvmtiParamInfo</struct>
 	    </allocfieldbuf>
 	    <description>
-	      Array of 
+	      Array of
 	      <fieldlink id="param_count" struct="jvmtiExtensionFunctionInfo"></fieldlink>
 	      parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
 	    </description>
@@ -9840,7 +9840,7 @@
 	      <struct>jvmtiParamInfo</struct>
 	    </allocfieldbuf>
 	    <description>
-	      Array of 
+	      Array of
 	      <fieldlink id="param_count" struct="jvmtiExtensionEventInfo"></fieldlink>
 	      parameters (<code>jvmtiEnv *jvmti_env</code> excluded)
 	    </description>
@@ -9876,7 +9876,7 @@
 	  <synopsis>Extension Event</synopsis>
 	<description>
 	  This is the implementation-specific event.
-          The event handler is set with 
+          The event handler is set with
           <functionlink id="SetExtensionEventCallback"/>.
           <p/>
           Event handlers for extension events must be declared varargs to match this definition.
@@ -9927,9 +9927,9 @@
 	    <jint/>
 	      <description>
 		Identifies which callback to set.
-		This index is the 
+		This index is the
 		<fieldlink id="extension_event_index" struct="jvmtiExtensionEventInfo"></fieldlink>
-		field of 
+		field of
 		<datalink id="jvmtiExtensionEventInfo"/>.
 	      </description>
 	  </param>
@@ -9939,18 +9939,18 @@
 	      <nullok>disable the event</nullok>
 	    </ptrtype>
 	    <description>
-	      If <code>callback</code> is non-<code>NULL</code>, 
+	      If <code>callback</code> is non-<code>NULL</code>,
 	      set <code>callback</code> to be the event callback function
 	      and enable the event.
 	    </description>
 	  </param>
 	</parameters>
 	<errors>
-        <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT"> 
+        <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
             <paramlink id="extension_event_index"/> is not an
-            <fieldlink id="extension_event_index" 
+            <fieldlink id="extension_event_index"
                        struct="jvmtiExtensionEventInfo"/>
-            returned by 
+            returned by
             <functionlink id="GetExtensionEvents"/>
         </error>
 	</errors>
@@ -9962,30 +9962,30 @@
 
     <intro>
       The capabilities functions allow you to change the
-      functionality available to <jvmti/>--that is, 
-      which <jvmti/> 
+      functionality available to <jvmti/>--that is,
+      which <jvmti/>
       functions can be called, what events can be generated,
       and what functionality these events and functions can
       provide.
       <p/>
-        The "Capabilities" section of each function and event describe which 
+        The "Capabilities" section of each function and event describe which
         capabilities, if any, they are associated with. "Required Functionality"
         means it is available for use and no capabilities must be added to use it.
         "Optional Functionality" means the agent must possess the capability
-        before it can be used.  
+        before it can be used.
         To possess a capability, the agent must
         <functionlink id="AddCapabilities">add the capability</functionlink>.
         "Optional Features" describe capabilities which,
         if added, extend the feature set.
         <p/>
-        The potentially available capabilities of each <jvmti/> implementation are different.  
+        The potentially available capabilities of each <jvmti/> implementation are different.
         Depending on the implementation, a capability:
         <ul>
           <li>may never be added</li>
           <li>may be added in either the <code>OnLoad</code> or live phase in any environment</li>
           <li>may be added only during the <code>OnLoad</code> phase</li>
           <li>may be possessed by only one environment at a time</li>
-          <li>may be possessed by only one environment at a time, 
+          <li>may be possessed by only one environment at a time,
               and only during the <code>OnLoad</code> phase</li>
           <li>and so on ...</li>
         </ul>
@@ -9993,24 +9993,24 @@
       time, and/or memory footprint.  Note that the overhead of using a capability
       is completely different than the overhead of possessing a capability.
       Take single stepping as an example. When single stepping is on (that
-      is, when the event is enabled and thus actively sending events) 
-      the overhead of sending and processing an event 
-      on each instruction is huge in any implementation. 
-      However, the overhead of possessing the capability may be small or large, 
+      is, when the event is enabled and thus actively sending events)
+      the overhead of sending and processing an event
+      on each instruction is huge in any implementation.
+      However, the overhead of possessing the capability may be small or large,
       depending on the implementation.  Also, when and if a capability is potentially
       available depends on the implementation.  Some examples:
       <ul>
-	<li>One VM might perform all execution by compiling bytecodes into 
+	<li>One VM might perform all execution by compiling bytecodes into
 	  native code and be unable to generate single step instructions.
 	  In this implementation the capability can not be added.</li>
 	<li>Another VM may be able to switch execution to a single stepping
-	  interpreter at any time.  In this implementation, having the capability has no 
+	  interpreter at any time.  In this implementation, having the capability has no
 	  overhead and could be added at any time.</li>
 	<li>Yet another VM might be able to choose a bytecode compiling or single stepping capable interpreted
 	  execution engine at start up, but be unable to switch between them.
-	  In this implementation the capability would need to be added 
+	  In this implementation the capability would need to be added
           during the <code>OnLoad</code> phase (before bytecode
-	  execution begins) and would have a large impact on execution speed 
+	  execution begins) and would have a large impact on execution speed
 	  even if single stepping was never used.</li>
 	<li>Still another VM might be able to add an "is single stepping on" check
 	  into compiled bytecodes or a generated interpreter.  Again in this implementation
@@ -10019,30 +10019,30 @@
       </ul>
       <p/>
       Each <jvmti/> <internallink id="environments">environment</internallink>
-      has its own set of capabilities.  
+      has its own set of capabilities.
       Initially, that set is empty.
       Any desired capability must be added.
-      If possible, capabilities should be added during the <code>OnLoad</code> phase.  For most 
-      virtual machines certain capabilities require special set up for 
+      If possible, capabilities should be added during the <code>OnLoad</code> phase.  For most
+      virtual machines certain capabilities require special set up for
       the virtual machine and this set up must happen
-      during the <code>OnLoad</code> phase, before the virtual machine begins execution. 
+      during the <code>OnLoad</code> phase, before the virtual machine begins execution.
       Once a capability is added, it can
       only be removed if explicitly relinquished by the environment.
       <p/>
-      The agent can, 
+      The agent can,
       <functionlink id="GetPotentialCapabilities">determine what
 	capabilities this VM can potentially provide</functionlink>,
       <functionlink id="AddCapabilities">add the capabilities
 	to be used</functionlink>,
       <functionlink id="RelinquishCapabilities">release capabilities
 	which are no longer needed</functionlink>, and
-      <functionlink id="GetCapabilities">examine the currently available 
+      <functionlink id="GetCapabilities">examine the currently available
 	capabilities</functionlink>.
     </intro>
 
     <intro id="capabilityExamples" label="Capability Examples">
       For example, a freshly started agent (in the <code>OnLoad</code> function)
-      wants to enable all possible capabilities.  
+      wants to enable all possible capabilities.
       Note that, in general, this is not advisable as the agent may suffer
       a performance penalty for functionality it is not using.
       The code might look like this in C:
@@ -10055,9 +10055,9 @@
 	   err = (*jvmti)-&gt;AddCapabilities(jvmti, &amp;capa);
       </example>
       For example, if an  agent wants to check if it can get
-      the bytecodes of a method (that is, it wants to check 
-      if it previously added this capability and has not 
-      relinquished it), the code might 
+      the bytecodes of a method (that is, it wants to check
+      if it previously added this capability and has not
+      relinquished it), the code might
       look like this in C:
       <example>
 	jvmtiCapabilities capa;
@@ -10065,13 +10065,13 @@
 
 	err = (*jvmti)-&gt;GetCapabilities(jvmti, &amp;capa);
 	if (err == JVMTI_ERROR_NONE) {
-   	   if (capa.can_get_bytecodes) { ... } } 
+   	   if (capa.can_get_bytecodes) { ... } }
       </example>
     </intro>
 
     <capabilitiestypedef id="jvmtiCapabilities" label="The Capabilities Structure">
       <description>
-        The functions in this category use this capabilities structure 
+        The functions in this category use this capabilities structure
         which contains boolean flags corresponding to each capability:
       </description>
       <capabilityfield id="can_tag_objects">
@@ -10099,14 +10099,14 @@
       </capabilityfield>
       <capabilityfield id="can_get_synthetic_attribute">
 	<description>
-	  Can test if a field or method is synthetic - 
+	  Can test if a field or method is synthetic -
           <functionlink id="IsFieldSynthetic"></functionlink> and
           <functionlink id="IsMethodSynthetic"></functionlink>
 	</description>
       </capabilityfield>
       <capabilityfield id="can_get_owned_monitor_info">
 	<description>
-	  Can get information about ownership of monitors - 
+	  Can get information about ownership of monitors -
           <functionlink id="GetOwnedMonitorInfo"></functionlink>
 	</description>
       </capabilityfield>
@@ -10167,19 +10167,19 @@
       </capabilityfield>
       <capabilityfield id="can_generate_exception_events">
 	<description>
-	  Can get <eventlink id="Exception">exception thrown</eventlink> and 
+	  Can get <eventlink id="Exception">exception thrown</eventlink> and
             <eventlink id="ExceptionCatch">exception catch</eventlink> events
 	</description>
       </capabilityfield>
       <capabilityfield id="can_generate_frame_pop_events">
 	<description>
-	  Can <functionlink id="NotifyFramePop">set</functionlink> and thus get 
+	  Can <functionlink id="NotifyFramePop">set</functionlink> and thus get
             <eventlink id="FramePop"></eventlink> events
 	</description>
       </capabilityfield>
       <capabilityfield id="can_generate_breakpoint_events">
 	<description>
-	  Can <functionlink id="SetBreakpoint">set</functionlink> and thus get 
+	  Can <functionlink id="SetBreakpoint">set</functionlink> and thus get
             <eventlink id="Breakpoint"></eventlink> events
 	</description>
       </capabilityfield>
@@ -10206,65 +10206,65 @@
 	  thread CPU time
 	</description>
       </capabilityfield>
-      <capabilityfield id="can_generate_method_entry_events" 
-		       disp1="can_generate" disp2="_method_entry_events" 
+      <capabilityfield id="can_generate_method_entry_events"
+		       disp1="can_generate" disp2="_method_entry_events"
 		       >
 	<description>
 	  Can generate method entry events on entering a method
 	</description>
       </capabilityfield>
-      <capabilityfield id="can_generate_method_exit_events" 
-		       disp1="can_generate" disp2="_method_exit_events" 
+      <capabilityfield id="can_generate_method_exit_events"
+		       disp1="can_generate" disp2="_method_exit_events"
 		       >
 	<description>
 	  Can generate method exit events on leaving a method
 	</description>
       </capabilityfield>
-      <capabilityfield id="can_generate_all_class_hook_events" 
-		       disp1="can_generate" disp2="_all_class_hook_events" 
+      <capabilityfield id="can_generate_all_class_hook_events"
+		       disp1="can_generate" disp2="_all_class_hook_events"
 		       >
 	<description>
 	  Can generate ClassFileLoadHook events for every loaded class.
 	</description>
       </capabilityfield>
-      <capabilityfield id="can_generate_compiled_method_load_events" 
-		       disp1="can_generate" disp2="_compiled_method_load_events" 
+      <capabilityfield id="can_generate_compiled_method_load_events"
+		       disp1="can_generate" disp2="_compiled_method_load_events"
 		       >
 	<description>
 	  Can generate events when a method is compiled or unloaded
 	</description>
       </capabilityfield>
-      <capabilityfield id="can_generate_monitor_events" 
-		       disp1="can_generate" disp2="_monitor_events" 
+      <capabilityfield id="can_generate_monitor_events"
+		       disp1="can_generate" disp2="_monitor_events"
 		       >
 	<description>
 	  Can generate events on monitor activity
 	</description>
       </capabilityfield>
-      <capabilityfield id="can_generate_vm_object_alloc_events" 
-		       disp1="can_generate" disp2="_vm_object_alloc_events" 
+      <capabilityfield id="can_generate_vm_object_alloc_events"
+		       disp1="can_generate" disp2="_vm_object_alloc_events"
 		       >
 	<description>
 	  Can generate events on VM allocation of an object
 	</description>
       </capabilityfield>
-      <capabilityfield id="can_generate_native_method_bind_events" 
-		       disp1="can_generate" disp2="_native_method_bind_events" 
+      <capabilityfield id="can_generate_native_method_bind_events"
+		       disp1="can_generate" disp2="_native_method_bind_events"
 		       >
 	<description>
 	  Can generate events when a native method is bound to its
 	  implementation
 	</description>
       </capabilityfield>
-      <capabilityfield id="can_generate_garbage_collection_events" 
-		       disp1="can_generate" disp2="_garbage_collection_events" 
+      <capabilityfield id="can_generate_garbage_collection_events"
+		       disp1="can_generate" disp2="_garbage_collection_events"
 		       >
 	<description>
 	  Can generate events when garbage collection begins or ends
 	</description>
       </capabilityfield>
-      <capabilityfield id="can_generate_object_free_events" 
-		       disp1="can_generate" disp2="_object_free_events" 
+      <capabilityfield id="can_generate_object_free_events"
+		       disp1="can_generate" disp2="_object_free_events"
 		       >
 	<description>
 	  Can generate events when the garbage collector frees an object
@@ -10298,16 +10298,16 @@
       <capabilityfield id="can_retransform_classes" since="1.1">
 	<description>
 	  Can retransform classes with <functionlink id="RetransformClasses"/>.
-          In addition to the restrictions imposed by the specific 
+          In addition to the restrictions imposed by the specific
           implementation on this capability (see the
           <internallink id="capability">Capability</internallink> section),
-          this capability must be set before the 
+          this capability must be set before the
           <eventlink id="ClassFileLoadHook"/> event is enabled for the
           first time in this environment.
-          An environment that possesses this capability at the time that 
+          An environment that possesses this capability at the time that
           <code>ClassFileLoadHook</code> is enabled for the first time is
           said to be <i>retransformation capable</i>.
-          An environment that does not possess this capability at the time that 
+          An environment that does not possess this capability at the time that
           <code>ClassFileLoadHook</code> is enabled for the first time is
           said to be <i>retransformation incapable</i>.
 	</description>
@@ -10322,7 +10322,7 @@
       </capabilityfield>
       <capabilityfield id="can_generate_resource_exhaustion_heap_events" since="1.1">
 	<description>
-          Can generate events when the VM is unable to allocate memory from 
+          Can generate events when the VM is unable to allocate memory from
           the <tm>Java</tm> platform heap.
           See <eventlink id="ResourceExhausted"/>.
 	</description>
@@ -10355,11 +10355,11 @@
     <function id="GetPotentialCapabilities" jkernel="yes" phase="onload" num="140">
       <synopsis>Get Potential Capabilities</synopsis>
       <description>
-        Returns via <paramlink id="capabilities_ptr"></paramlink> the <jvmti/> 
+        Returns via <paramlink id="capabilities_ptr"></paramlink> the <jvmti/>
         features that can potentially be possessed by this environment
 	at this time.
 	The returned capabilities differ from the complete set of capabilities
-	implemented by the VM in two cases: another environment possesses 
+	implemented by the VM in two cases: another environment possesses
 	capabilities that can only be possessed by one environment, or the
 	current <functionlink id="GetPhase">phase</functionlink> is live,
 	and certain capabilities can only be added during the <code>OnLoad</code> phase.
@@ -10402,7 +10402,7 @@
 	  conditional implementations would be used or are even a good idea.
 	  The thought is that release documentation for the implementation
 	  would be the best means of exposing this information.
-	  Unless new arguments are presented, I intend to remove this 
+	  Unless new arguments are presented, I intend to remove this
 	  function in the next revision.
 	</issue>
         <p/>
@@ -10412,15 +10412,15 @@
         <paramlink id="capabilities_ptr"></paramlink>.
         The returned estimates are in percentage of additional overhead, thus
         a time impact of 100 mean the application might run
-        at half the speed.  
+        at half the speed.
         The estimates are very rough approximations and are not guaranteed.
         Note also, that the estimates are of the impact of having the
         capability available--when and if it is used the impact may be
         much greater.
-        Estimates can be for a single capability or for a set of 
+        Estimates can be for a single capability or for a set of
         capabilities.  Note that the costs are not necessarily additive,
-        adding support for one capability might make another available 
-        for free or conversely having two capabilities at once may 
+        adding support for one capability might make another available
+        for free or conversely having two capabilities at once may
         have multiplicative impact.
         Estimates are relative to the current set of capabilities -
         that is, how much more impact given the currently possessed capabilities.
@@ -10460,7 +10460,7 @@
 	</param>
       </parameters>
       <errors>
-        <error id="JVMTI_ERROR_NOT_AVAILABLE"> 
+        <error id="JVMTI_ERROR_NOT_AVAILABLE">
           The desired capabilities are not even potentially available.
         </error>
       </errors>
@@ -10470,7 +10470,7 @@
     <function id="AddCapabilities" jkernel="yes" phase="onload" num="142">
       <synopsis>Add Capabilities</synopsis>
       <description>
-        Set new capabilities by adding the capabilities 
+        Set new capabilities by adding the capabilities
         whose values are set to one (<code>1</code>) in
         <code>*</code><paramlink id="capabilities_ptr"></paramlink>.
         All previous capabilities are retained.
@@ -10493,7 +10493,7 @@
 	</param>
       </parameters>
       <errors>
-        <error id="JVMTI_ERROR_NOT_AVAILABLE"> 
+        <error id="JVMTI_ERROR_NOT_AVAILABLE">
           The desired capabilities are not even potentially available.
         </error>
       </errors>
@@ -10547,7 +10547,7 @@
     <function id="GetCapabilities" jkernel="yes" phase="any" num="89">
       <synopsis>Get Capabilities</synopsis>
         <description>
-          Returns via <paramlink id="capabilities_ptr"></paramlink> the optional <jvmti/> 
+          Returns via <paramlink id="capabilities_ptr"></paramlink> the optional <jvmti/>
           features which this environment currently possesses.
           Each possessed capability is indicated by a one (<code>1</code>) in the
           corresponding field of the <internallink id="jvmtiCapabilities">capabilities
@@ -10578,16 +10578,16 @@
     </function>
 
   </category>
-  
-  
+
+
   <category id="timers" label="Timers">
 
       <intro>
 	These functions provide timing information.
-	The resolution at which the time is updated is not specified. 
-	They provides nanosecond precision, but not necessarily nanosecond accuracy. 
+	The resolution at which the time is updated is not specified.
+	They provides nanosecond precision, but not necessarily nanosecond accuracy.
 	Details about the timers, such as their maximum values, can be accessed with
-	the timer information functions.  
+	the timer information functions.
       </intro>
 
       <typedef id="jvmtiTimerInfo" label="Timer Info">
@@ -10621,7 +10621,7 @@
 	  <enum>jvmtiTimerKind</enum>
 	  <description>
 	    The kind of timer.
-            On a platform that does not distinguish between user and system time, <datalink 
+            On a platform that does not distinguish between user and system time, <datalink
                  id="JVMTI_TIMER_TOTAL_CPU"><code>JVMTI_TIMER_TOTAL_CPU</code></datalink>
             is returned.
 	  </description>
@@ -10659,12 +10659,12 @@
     <function id="GetCurrentThreadCpuTimerInfo" callbacksafe="safe"  impl="innative notrace" phase="start" num="134">
       <synopsis>Get Current Thread CPU Timer Information</synopsis>
       <description>
-	Get information about the 
-        <functionlink id="GetCurrentThreadCpuTime"/> timer. 
-	The fields of the <datalink id="jvmtiTimerInfo"/> structure 
+	Get information about the
+        <functionlink id="GetCurrentThreadCpuTime"/> timer.
+	The fields of the <datalink id="jvmtiTimerInfo"/> structure
 	are filled in with details about the timer.
         This information is specific to the platform and the implementation of
-        <functionlink id="GetCurrentThreadCpuTime"/> and thus 
+        <functionlink id="GetCurrentThreadCpuTime"/> and thus
         does not vary by thread nor does it vary
         during a particular invocation of the VM.
         <p/>
@@ -10696,15 +10696,15 @@
     <function id="GetCurrentThreadCpuTime" callbacksafe="safe" impl="innative notrace" phase="start" num="135">
       <synopsis>Get Current Thread CPU Time</synopsis>
       <description>
-            Return the CPU time utilized by the current thread.  
+            Return the CPU time utilized by the current thread.
             <p/>
             Note that the <functionlink id="GetThreadCpuTime"/>
             function provides CPU time for any thread, including
-            the current thread. <code>GetCurrentThreadCpuTime</code> 
+            the current thread. <code>GetCurrentThreadCpuTime</code>
             exists to support platforms which cannot
-            supply CPU time for threads other than the current 
+            supply CPU time for threads other than the current
             thread or which have more accurate information for
-            the current thread (see 
+            the current thread (see
             <functionlink id="GetCurrentThreadCpuTimerInfo"/> vs
             <functionlink id="GetThreadCpuTimerInfo"/>).
             On many platforms this call will be equivalent to:
@@ -10717,13 +10717,13 @@
 	<required id="can_get_current_thread_cpu_time">
 	    Can get current thread CPU time.
             <p/>
-	    If this capability is enabled after threads have started, 
+	    If this capability is enabled after threads have started,
 	    the implementation may choose any time up
-	    to and including the time that the capability is enabled 
+	    to and including the time that the capability is enabled
 	    as the point where CPU time collection starts.
             <p/>
-            This capability must be potentially available on any 
-            platform where 
+            This capability must be potentially available on any
+            platform where
             <internallink id="jvmtiCapabilities.can_get_thread_cpu_time"><code>can_get_thread_cpu_time</code></internallink>
             is potentially available.
 	</required>
@@ -10733,7 +10733,7 @@
 	  <outptr><jlong/></outptr>
 	  <description>
 	    On return, points to the CPU time used by this thread
-	    in nanoseconds.  
+	    in nanoseconds.
             This is an unsigned value.  If tested or printed as a jlong (signed value)
             it may appear to be a negative number.
 	  </description>
@@ -10746,12 +10746,12 @@
     <function id="GetThreadCpuTimerInfo" num="136">
       <synopsis>Get Thread CPU Timer Information</synopsis>
       <description>
-	Get information about the 
-        <functionlink id="GetThreadCpuTime"/> timer. 
-	The fields of the <datalink id="jvmtiTimerInfo"/> structure 
+	Get information about the
+        <functionlink id="GetThreadCpuTime"/> timer.
+	The fields of the <datalink id="jvmtiTimerInfo"/> structure
 	are filled in with details about the timer.
         This information is specific to the platform and the implementation of
-        <functionlink id="GetThreadCpuTime"/> and thus 
+        <functionlink id="GetThreadCpuTime"/> and thus
         does not vary by thread nor does it vary
         during a particular invocation of the VM.
         <p/>
@@ -10783,19 +10783,19 @@
     <function id="GetThreadCpuTime" num="137">
       <synopsis>Get Thread CPU Time</synopsis>
       <description>
-          Return the CPU time utilized by the specified thread. 
+          Return the CPU time utilized by the specified thread.
           <p/>
 	  Get information about this timer with
-          <functionlink id="GetThreadCpuTimerInfo"/>. 
+          <functionlink id="GetThreadCpuTimerInfo"/>.
       </description>
       <origin>new</origin>
       <capabilities>
 	<required id="can_get_thread_cpu_time">
 	    Can get thread CPU time.
             <p/>
-	    If this capability is enabled after threads have started, 
+	    If this capability is enabled after threads have started,
 	    the implementation may choose any time up
-	    to and including the time that the capability is enabled 
+	    to and including the time that the capability is enabled
 	    as the point where CPU time collection starts.
 	</required>
       </capabilities>
@@ -10810,7 +10810,7 @@
 	  <outptr><jlong/></outptr>
 	  <description>
 	    On return, points to the CPU time used by the specified thread
-	    in nanoseconds.  
+	    in nanoseconds.
             This is an unsigned value.  If tested or printed as a jlong (signed value)
             it may appear to be a negative number.
 	  </description>
@@ -10823,9 +10823,9 @@
     <function id="GetTimerInfo" phase="any" callbacksafe="safe" num="138">
       <synopsis>Get Timer Information</synopsis>
       <description>
-	Get information about the 
-        <functionlink id="GetTime"/> timer. 
-	The fields of the <datalink id="jvmtiTimerInfo"/> structure 
+	Get information about the
+        <functionlink id="GetTime"/> timer.
+	The fields of the <datalink id="jvmtiTimerInfo"/> structure
 	are filled in with details about the timer.
         This information will not change during a particular invocation of the VM.
       </description>
@@ -10848,7 +10848,7 @@
     <function id="GetTime" phase="any" callbacksafe="safe" num="139">
       <synopsis>Get Time</synopsis>
       <description>
-          Return the current value of the system timer, in nanoseconds. 
+          Return the current value of the system timer, in nanoseconds.
           <p/>
           The value returned represents nanoseconds since some fixed but
           arbitrary time (perhaps in the future, so values may be
@@ -10857,7 +10857,7 @@
           how frequently values change.
           <p/>
 	  Get information about this timer with
-          <functionlink id="GetTimerInfo"/>. 
+          <functionlink id="GetTimerInfo"/>.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -10866,7 +10866,7 @@
         <param id="nanos_ptr">
 	  <outptr><jlong/></outptr>
 	  <description>
-	    On return, points to the time in nanoseconds.  
+	    On return, points to the time in nanoseconds.
             This is an unsigned value.  If tested or printed as a jlong (signed value)
             it may appear to be a negative number.
 	  </description>
@@ -10881,7 +10881,7 @@
       <description>
           Returns the number of processors available to the Java virtual machine.
           <p/>
-          This value may change during a particular invocation of the virtual machine. 
+          This value may change during a particular invocation of the virtual machine.
           Applications that are sensitive to the number of available processors should
           therefore occasionally poll this property.
       </description>
@@ -10893,7 +10893,7 @@
 	  <outptr><jint/></outptr>
 	  <description>
 	    On return, points to the maximum number of processors available to the
-            virtual machine; never smaller than one.  
+            virtual machine; never smaller than one.
 	  </description>
 	</param>
       </parameters>
@@ -10914,18 +10914,18 @@
     <function id="AddToBootstrapClassLoaderSearch" jkernel="yes" phase="onload" num="149">
       <synopsis>Add To Bootstrap Class Loader Search</synopsis>
       <description>
-          This function can be used to cause instrumentation classes to be defined by the 
+          This function can be used to cause instrumentation classes to be defined by the
           bootstrap class loader. See <vmspec chapter="5.3.1"/>.
           After the bootstrap
-	  class loader unsuccessfully searches for a class, the specified platform-dependent 
-	  search path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in 
-	  the <paramlink id="segment"/>. This function may be called multiple times to add multiple segments, 
+	  class loader unsuccessfully searches for a class, the specified platform-dependent
+	  search path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in
+	  the <paramlink id="segment"/>. This function may be called multiple times to add multiple segments,
 	  the segments will be searched in the order that this function was called.
 	  <p/>
-	  In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent 
+	  In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
 	  search path segment to be searched after the bootstrap class loader unsuccessfully searches
 	  for a class. The segment is typically a directory or JAR file.
-	  <p/>	  
+	  <p/>
 	  In the live phase the <paramlink id="segment"/> may be used to specify any platform-dependent
 	  path to a <externallink id="docs/technotes/guides/jar/jar.html">
 	  JAR file</externallink>. The agent should take care that the JAR file does not
@@ -10953,7 +10953,7 @@
 	</param>
       </parameters>
       <errors>
-        <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">   
+        <error id="JVMTI_ERROR_ILLEGAL_ARGUMENT">
           <paramlink id="segment"/> is an invalid path. In the live phase, anything other than an
            existing JAR file is an invalid path.
         </error>
@@ -10965,15 +10965,15 @@
       <description>
 	  This function can be used to cause instrumentation classes to be
 	  defined by the system class loader. See <vmspec chapter="5.3.2"/>.
-	  After the class loader unsuccessfully searches for a class, the specified platform-dependent search 
-	  path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in the 
-	  <paramlink id="segment"/>. This function may be called multiple times to add multiple segments, the 
+	  After the class loader unsuccessfully searches for a class, the specified platform-dependent search
+	  path <paramlink id="segment"/> will be searched as well. Only one segment may be specified in the
+	  <paramlink id="segment"/>. This function may be called multiple times to add multiple segments, the
 	  segments will be searched in the order that this function was called.
 	  <p/>
-	  In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent 
+	  In the <code>OnLoad</code> phase the function may be used to specify any platform-dependent
 	  search path segment to be searched after the system class loader unsuccessfully searches
 	  for a class. The segment is typically a directory or JAR file.
-	  <p/>	  
+	  <p/>
 	  In the live phase the <paramlink id="segment"/> is a platform-dependent path to a
 	  <externallink id="docs/technotes/guides/jar/jar.html">JAR file</externallink> to be
 	  searched after the system class loader unsuccessfully searches for a class. The agent should
@@ -10981,9 +10981,9 @@
           defined by the system class loader for the purposes of instrumentation.
           <p/>
 	  In the live phase the system class loader supports adding a JAR file to be searched if
-          the system class loader implements a method name <code>appendToClassPathForInstrumentation</code> 
-	  which takes a single parameter of type <code>java.lang.String</code>. The method is not required 
-	  to have <code>public</code> access. 
+          the system class loader implements a method name <code>appendToClassPathForInstrumentation</code>
+	  which takes a single parameter of type <code>java.lang.String</code>. The method is not required
+	  to have <code>public</code> access.
 	  <p/>
           <vmspec/> specifies that a subsequent attempt to resolve a symbolic
           reference that the Java virtual machine has previously unsuccessfully attempted
@@ -11012,7 +11012,7 @@
         </error>
 	<error id="JVMTI_ERROR_CLASS_LOADER_UNSUPPORTED">
 	  Operation not supported by the system class loader.
-	</error>                                                                                         
+	</error>
       </errors>
     </function>
 
@@ -11028,7 +11028,7 @@
     <function id="GetSystemProperties" phase="onload" num="130">
       <synopsis>Get System Properties</synopsis>
       <description>
-        The list of VM system property keys which may be used with 
+        The list of VM system property keys which may be used with
 	<functionlink id="GetSystemProperty"/> is returned.
         It is strongly recommended that virtual machines provide the
         following property keys:
@@ -11043,15 +11043,15 @@
         Provides access to system properties defined by and used
         by the VM.
         Properties set on the command-line are included.
-	This allows getting and setting of these properties 
+	This allows getting and setting of these properties
         before the VM even begins executing bytecodes.
-	Since this is a VM view of system properties, the set of available 
+	Since this is a VM view of system properties, the set of available
         properties will usually be different than that
 	in <code>java.lang.System.getProperties</code>.
-        JNI method invocation may be used to access 
+        JNI method invocation may be used to access
         <code>java.lang.System.getProperties</code>.
         <p/>
-        The set of properties may grow during execution.	  
+        The set of properties may grow during execution.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -11066,7 +11066,7 @@
         <param id="property_ptr">
 	  <allocallocbuf outcount="count_ptr"><char/></allocallocbuf>
 	  <description>
-	    On return, points to an array of property keys, encoded as 
+	    On return, points to an array of property keys, encoded as
 	    <internallink id="mUTF">modified UTF-8</internallink> strings.
 	  </description>
 	</param>
@@ -11078,25 +11078,25 @@
     <function id="GetSystemProperty" phase="onload" num="131">
       <synopsis>Get System Property</synopsis>
       <description>
-        Return a VM system property value given the property key.  
+        Return a VM system property value given the property key.
         <p/>
 	The function <functionlink id="GetSystemProperties"/>
 	returns the set of property keys which may be used.
         The properties which can be retrieved may grow during
 	execution.
         <p/>
-	Since this is a VM view of system properties, the values 
-        of properties may differ from that returned by 
+	Since this is a VM view of system properties, the values
+        of properties may differ from that returned by
 	<code>java.lang.System.getProperty(String)</code>.
-        A typical VM might copy the values of the VM system 
+        A typical VM might copy the values of the VM system
         properties into the <code>Properties</code> held by
 	<code>java.lang.System</code> during the initialization
         of that class. Thereafter any changes to the VM system
-        properties (with <functionlink id="SetSystemProperty"/>) 
+        properties (with <functionlink id="SetSystemProperty"/>)
         or the <code>java.lang.System</code> system properties
         (with <code>java.lang.System.setProperty(String,String)</code>)
         would cause the values to diverge.
-        JNI method invocation may be used to access 
+        JNI method invocation may be used to access
         <code>java.lang.System.getProperty(String)</code>.
       </description>
       <origin>new</origin>
@@ -11119,7 +11119,7 @@
 	</param>
       </parameters>
       <errors>
-        <error id="JVMTI_ERROR_NOT_AVAILABLE"> 
+        <error id="JVMTI_ERROR_NOT_AVAILABLE">
           This property is not available.
 	  Use <functionlink id="GetSystemProperties"/> to find available properties.
         </error>
@@ -11129,7 +11129,7 @@
     <function id="SetSystemProperty" phase="onloadOnly" num="132">
       <synopsis>Set System Property</synopsis>
       <description>
-        Set a VM system property value.  
+        Set a VM system property value.
         <p/>
 	The function <functionlink id="GetSystemProperties"/>
 	returns the set of property keys, some of these may be settable.
@@ -11161,7 +11161,7 @@
 	</param>
       </parameters>
       <errors>
-        <error id="JVMTI_ERROR_NOT_AVAILABLE"> 
+        <error id="JVMTI_ERROR_NOT_AVAILABLE">
           This property is not available or is not writeable.
         </error>
       </errors>
@@ -11177,7 +11177,7 @@
     <function id="GetPhase" jkernel="yes" phase="any" num="133">
       <synopsis>Get Phase</synopsis>
       <description>
-          Return the current phase of VM execution.  
+          Return the current phase of VM execution.
           The phases proceed in sequence:
           <constants id="jvmtiPhase" label="Phases of execution" kind="enum">
             <constant id="JVMTI_PHASE_ONLOAD" num="1">
@@ -11193,7 +11193,7 @@
               <code>VMStart</code> event.
             </constant>
             <constant id="JVMTI_PHASE_START" num="6">
-              Start phase: when the <eventlink id="VMStart"><code>VMStart</code></eventlink> event 
+              Start phase: when the <eventlink id="VMStart"><code>VMStart</code></eventlink> event
               is sent and until the <code>VMInit</code> event is sent.
             </constant>
             <constant id="JVMTI_PHASE_LIVE" num="4">
@@ -11222,8 +11222,8 @@
           <p/>
           Most <jvmti/> events are sent only in the live phase.
           The following events operate in others phases:
-          <eventphaselist phase="start"/>          
-          <eventphaselist phase="any"/>          
+          <eventphaselist phase="start"/>
+          <eventphaselist phase="any"/>
       </description>
       <origin>new</origin>
       <capabilities>
@@ -11245,7 +11245,7 @@
       <description>
         Shutdown a <jvmti/> connection created with JNI <code>GetEnv</code>
         (see <internallink id="environments"><jvmti/> Environments</internallink>).
-        Dispose of any resources held by the environment.  
+        Dispose of any resources held by the environment.
         <issue>
 	    What resources are reclaimed? What is undone?
 	    Breakpoints,watchpoints removed?
@@ -11255,7 +11255,7 @@
         Memory allocated by this environment via calls to <jvmti/> functions
         is not released, this can be done explicitly by the agent
         by calling <functionlink id="Deallocate"/>.
-        Raw monitors created by this environment are not destroyed, 
+        Raw monitors created by this environment are not destroyed,
         this can be done explicitly by the agent
         by calling <functionlink id="DestroyRawMonitor"/>.
         The state of threads waiting on raw monitors created by this environment
@@ -11294,7 +11294,7 @@
         This value is <code>NULL</code> unless set with this function.
 	Agents can allocate memory in which they store environment specific
         information. By setting environment-local storage it can then be
-	accessed with 
+	accessed with
 	<functionlink id="GetEnvironmentLocalStorage"></functionlink>.
 	<p/>
         Called by the agent to set the value of the <jvmti/>
@@ -11307,10 +11307,10 @@
       </capabilities>
       <parameters>
         <param id="data">
-	  <inbuf> 
-	    <void/> 
-	    <nullok>value is set to <code>NULL</code></nullok> 
-	  </inbuf> 
+	  <inbuf>
+	    <void/>
+	    <nullok>value is set to <code>NULL</code></nullok>
+	  </inbuf>
 	  <description>
 	    The value to be entered into the environment-local storage.
 	  </description>
@@ -11324,7 +11324,7 @@
       <synopsis>Get Environment Local Storage</synopsis>
       <description>
         Called by the agent to get the value of the <jvmti/> environment-local
-        storage. 
+        storage.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -11333,10 +11333,10 @@
         <param id="data_ptr">
 	  <agentbuf><void/></agentbuf>
 	  <description>
-	    Pointer through which the value of the environment local 
+	    Pointer through which the value of the environment local
 	    storage is returned.
 	    If environment-local storage has not been set with
-	    <functionlink id="SetEnvironmentLocalStorage"></functionlink> returned 
+	    <functionlink id="SetEnvironmentLocalStorage"></functionlink> returned
 	    pointer is <code>NULL</code>.
 	  </description>
 	</param>
@@ -11349,7 +11349,7 @@
       <synopsis>Get Version Number</synopsis>
       <description>
         Return the <jvmti/> version via <code>version_ptr</code>.
-        The return value is the version identifier. 
+        The return value is the version identifier.
         The version identifier includes major, minor and micro
         version as well as the interface type.
 	<constants id="jvmtiVersionInterfaceTypes" label="Version Interface Types" kind="bits">
@@ -11362,10 +11362,10 @@
 	</constants>
 	<constants id="jvmtiVersionMasks" label="Version Masks" kind="bits">
 	  <constant id="JVMTI_VERSION_MASK_INTERFACE_TYPE" num="0x70000000">
-	    Mask to extract interface type.  
+	    Mask to extract interface type.
 	    The value of the version returned by this function masked with
 	    <code>JVMTI_VERSION_MASK_INTERFACE_TYPE</code> is always
-            <code>JVMTI_VERSION_INTERFACE_JVMTI</code> 
+            <code>JVMTI_VERSION_INTERFACE_JVMTI</code>
             since this is a <jvmti/> function.
 	  </constant>
 	  <constant id="JVMTI_VERSION_MASK_MAJOR" num="0x0FFF0000">
@@ -11409,11 +11409,11 @@
     <function id="GetErrorName" phase="any" num="128">
       <synopsis>Get Error Name</synopsis>
       <description>
-        Return the symbolic name for an 
-          <internallink id="ErrorSection">error code</internallink>.  
+        Return the symbolic name for an
+          <internallink id="ErrorSection">error code</internallink>.
         <p/>
-	For example 
-        <code>GetErrorName(env, JVMTI_ERROR_NONE, &amp;err_name)</code> 
+	For example
+        <code>GetErrorName(env, JVMTI_ERROR_NONE, &amp;err_name)</code>
         would return in <code>err_name</code> the string
         <code>"JVMTI_ERROR_NONE"</code>.
       </description>
@@ -11459,7 +11459,7 @@
 	  </constant>
         </constants>
 	Control verbose output.
-	This is the output which typically is sent to <code>stderr</code>. 
+	This is the output which typically is sent to <code>stderr</code>.
       </description>
       <origin>new</origin>
       <capabilities>
@@ -11488,18 +11488,18 @@
       <description>
         Although the greatest functionality is achieved with location information
         referencing the virtual machine bytecode index, the definition of
-        <code>jlocation</code> has intentionally been left unconstrained to allow VM 
+        <code>jlocation</code> has intentionally been left unconstrained to allow VM
         implementations that do not have this information.
         <p/>
         This function describes the representation of <code>jlocation</code> used in this VM.
-        If the returned format is <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>, 
+        If the returned format is <datalink id="JVMTI_JLOCATION_JVMBCI"></datalink>,
         <code>jlocation</code>s can
         be used as in indices into the array returned by
-        <functionlink id="GetBytecodes"></functionlink>.  
+        <functionlink id="GetBytecodes"></functionlink>.
 	<constants id="jvmtiJlocationFormat" label="JLocation Format Enumeration" kind="enum">
 	  <constant id="JVMTI_JLOCATION_JVMBCI" num="1">
-	    <code>jlocation</code> values represent virtual machine 
-	    bytecode indices--that is, offsets into the 
+	    <code>jlocation</code> values represent virtual machine
+	    bytecode indices--that is, offsets into the
 	    virtual machine code for a method.
 	  </constant>
 	  <constant id="JVMTI_JLOCATION_MACHINEPC" num="2">
@@ -11534,16 +11534,16 @@
   <intro>
     Every <jvmti/> function returns a <b><code>jvmtiError</code></b> error code.
     <p/>
-    It is the responsibility of the agent to call <jvmti/> functions with 
+    It is the responsibility of the agent to call <jvmti/> functions with
     valid parameters and in the proper context (calling thread is attached,
-    phase is correct, etc.).  
-    Detecting some error conditions may be difficult, inefficient, or 
+    phase is correct, etc.).
+    Detecting some error conditions may be difficult, inefficient, or
     impossible for an implementation.
-    The errors listed in 
+    The errors listed in
     <internallink id="reqerrors">Function Specific Required Errors</internallink>
     must be detected by the implementation.
     All other errors represent the recommended response to the error
-    condition. 
+    condition.
   </intro>
 
   <errorcategory id="universal-error" label="Universal Errors">
@@ -11559,7 +11559,7 @@
       Pointer is unexpectedly <code>NULL</code>.
     </errorid>
     <errorid id="JVMTI_ERROR_OUT_OF_MEMORY" num="110">
-      The function attempted to allocate memory and no more memory was 
+      The function attempted to allocate memory and no more memory was
       available for allocation.
     </errorid>
     <errorid id="JVMTI_ERROR_ACCESS_DENIED" num="111">
@@ -11651,7 +11651,7 @@
     <intro>
       The following errors are returned by some <jvmti/> functions.
       They are returned in the event of invalid parameters passed by the
-      agent or usage in an invalid context.  
+      agent or usage in an invalid context.
       An implementation is not required to detect these errors.
     </intro>
 
@@ -11726,7 +11726,7 @@
       declared in the old class version.
     </errorid>
     <errorid id="JVMTI_ERROR_NAMES_DONT_MATCH" num="69">
-      The class name defined in the new class file is 
+      The class name defined in the new class file is
       different from the name in the old class object.
     </errorid>
     <errorid id="JVMTI_ERROR_UNSUPPORTED_REDEFINITION_CLASS_MODIFIERS_CHANGED" num="70">
@@ -11745,33 +11745,33 @@
     programs.
     <p/>
     To handle events, designate a set of callback functions with
-    <functionlink id="SetEventCallbacks"></functionlink>. 
-    For each event the corresponding callback function will be 
+    <functionlink id="SetEventCallbacks"></functionlink>.
+    For each event the corresponding callback function will be
     called.
     Arguments to the callback function provide additional
-    information about the event. 
+    information about the event.
     <p/>
-    The callback function is usually called from within an application 
-    thread. The <jvmti/> implementation does not 
+    The callback function is usually called from within an application
+    thread. The <jvmti/> implementation does not
     queue events in any way. This means
-    that event callback functions must be written 
-    carefully. Here are some general guidelines. See 
+    that event callback functions must be written
+    carefully. Here are some general guidelines. See
     the individual event descriptions for further
     suggestions.
     <p/>
     <ul>
-      <li>Any exception thrown during the execution of an event callback can 
+      <li>Any exception thrown during the execution of an event callback can
 	overwrite any current pending exception in the current application thread.
 	Care must be taken to preserve a pending exception
 	when an event callback makes a JNI call that might generate an exception.
       </li>
       <li>Event callback functions must be re-entrant. The <jvmti/> implementation does
-	not queue events. If an agent needs to process events one at a time, it 
-	can use a raw monitor inside the 
+	not queue events. If an agent needs to process events one at a time, it
+	can use a raw monitor inside the
 	event callback functions to serialize event processing.
       </li>
       <li>Event callback functions that execute JNI's FindClass function to load
-        classes need to note that FindClass locates the class loader associated 
+        classes need to note that FindClass locates the class loader associated
         with the current native method. For the purposes of class loading, an
         event callback that includes a JNI environment as a parameter to the
         callback will treated as if it is a native call, where the native method
@@ -11779,8 +11779,8 @@
       </li>
     </ul>
     <p/>
-    Some <jvmti/> events identify objects with JNI references. 
-    All references 
+    Some <jvmti/> events identify objects with JNI references.
+    All references
     in <jvmti/> events are JNI local references and will become invalid
     after the event callback returns.
     Unless stated otherwise, memory referenced by pointers sent in event
@@ -11791,13 +11791,13 @@
     Events are sent at the time they occur.
     The specification for each event includes the set of
     <functionlink id="GetPhase">phases</functionlink> in which it can be sent;
-    if an event triggering activity occurs during another phase, no event 
-    is sent. 
+    if an event triggering activity occurs during another phase, no event
+    is sent.
     <p/>
     A thread that generates an event does not change its execution status
     (for example, the event does not cause the thread to be suspended).
     If an agent wishes the event to result in suspension, then the agent
-    is responsible for explicitly suspending the thread with 
+    is responsible for explicitly suspending the thread with
     <functionlink id="SuspendThread"></functionlink>.
     <p/>
     If an event is enabled in multiple environments, the event will be sent
@@ -11810,26 +11810,26 @@
       <ul>
 	<li>
 	  If the event requires a capability, that capability must
-	  be added with 
+	  be added with
 	  <functionlink id="AddCapabilities"></functionlink>.
 	</li>
 	<li>
-	  A callback for the event must be set with 
+	  A callback for the event must be set with
 	  <functionlink id="SetEventCallbacks"></functionlink>.
 	</li>
 	<li>
 	  The event must be enabled with
-	  <functionlink id="SetEventNotificationMode"></functionlink>. 
+	  <functionlink id="SetEventNotificationMode"></functionlink>.
 	</li>
       </ul>
   </intro>
 
   <intro label="Multiple Co-located Events" id="eventorder">
-    In many situations it is possible for multiple events to occur 
-    at the same location in one thread. When this happens, all the events 
+    In many situations it is possible for multiple events to occur
+    at the same location in one thread. When this happens, all the events
     are reported through the event callbacks in the order specified in this section.
     <p/>
-    If the current location is at the entry point of a method, the 
+    If the current location is at the entry point of a method, the
     <eventlink id="MethodEntry"></eventlink> event is reported before
     any other event at the current location in the same thread.
     <p/>
@@ -11839,39 +11839,39 @@
     <code>exceptionCatch</code> event is reported before
     any other event at the current location in the same thread.
     <p/>
-    If a <code>singleStep</code> event or 
-    <code>breakpoint</code> event is triggered at the 
-    current location, the event is defined to occur 
-    immediately before the code at the current location is executed. 
-    These events are reported before any events which are triggered 
-    by the execution of code at the current location in the same 
-    thread (specifically: 
+    If a <code>singleStep</code> event or
+    <code>breakpoint</code> event is triggered at the
+    current location, the event is defined to occur
+    immediately before the code at the current location is executed.
+    These events are reported before any events which are triggered
+    by the execution of code at the current location in the same
+    thread (specifically:
     <code>exception</code>,
     <code>fieldAccess</code>, and
     <code>fieldModification</code>).
-    If both a step and breakpoint event are triggered for the same thread and 
+    If both a step and breakpoint event are triggered for the same thread and
     location, the step event is reported before the breakpoint event.
     <p/>
     If the current location is the exit point of a method (that is, the last
-    location before returning to the caller), the 
-    <eventlink id="MethodExit"></eventlink> event and 
+    location before returning to the caller), the
+    <eventlink id="MethodExit"></eventlink> event and
     the <eventlink id="FramePop"></eventlink> event (if requested)
     are reported after all other events at the current location in the same
-    thread. There is no specified ordering of these two events 
+    thread. There is no specified ordering of these two events
     with respect to each other.
     <p/>
     Co-located events can be triggered during the processing of some other
     event by the agent at the same location in the same thread.
-    If such an event, of type <i>y</i>, is triggered during the processing of 
-    an event of type <i>x</i>, and if <i>x</i> 
-    precedes <i>y</i> in the ordering specified above, the co-located event 
+    If such an event, of type <i>y</i>, is triggered during the processing of
+    an event of type <i>x</i>, and if <i>x</i>
+    precedes <i>y</i> in the ordering specified above, the co-located event
     <i>y</i> is reported for the current thread and location. If <i>x</i> does not precede
     <i>y</i>, <i>y</i> is not reported for the current thread and location.
-    For example, if a breakpoint is set at the current location 
+    For example, if a breakpoint is set at the current location
     during the processing of <eventlink id="SingleStep"></eventlink>,
-    that breakpoint will be reported before the thread moves off the current 
+    that breakpoint will be reported before the thread moves off the current
     location.
-    <p/>The following events are never considered to be co-located with 
+    <p/>The following events are never considered to be co-located with
     other events.
     <ul>
       <li><eventlink id="VMStart"></eventlink></li>
@@ -11887,7 +11887,7 @@
   <intro label="Event Callbacks" id="jvmtiEventCallbacks">
       The event callback structure below is used to specify the handler function
       for events.  It is set with the
-      <functionlink id="SetEventCallbacks"></functionlink> function. 
+      <functionlink id="SetEventCallbacks"></functionlink> function.
   </intro>
 
   <event label="Single Step"
@@ -11895,13 +11895,13 @@
     <description>
       Single step events allow the agent to trace thread execution
       at the finest granularity allowed by the VM. A single step event is
-      generated whenever a thread reaches a new location. 
-      Typically, single step events represent the completion of one VM 
-      instruction as defined in <vmspec/>. However, some implementations 
-      may define locations differently. In any case the 
+      generated whenever a thread reaches a new location.
+      Typically, single step events represent the completion of one VM
+      instruction as defined in <vmspec/>. However, some implementations
+      may define locations differently. In any case the
       <code>method</code> and <code>location</code>
       parameters  uniquely identify the current location and allow
-      the mapping to source file and line number when that information is 
+      the mapping to source file and line number when that information is
       available.
       <p/>
       No single step events are generated from within native methods.
@@ -11910,7 +11910,7 @@
     <capabilities>
       <required id="can_generate_single_step_events"></required>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -11953,14 +11953,14 @@
       designated as a breakpoint with <functionlink id="SetBreakpoint"></functionlink>.
       The <code>method</code> and <code>location</code>
       parameters uniquely identify the current location and allow
-      the mapping to source file and line number when that information is 
+      the mapping to source file and line number when that information is
       available.
     </description>
     <origin>jvmdi</origin>
     <capabilities>
       <required id="can_generate_breakpoint_events"></required>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12000,18 +12000,18 @@
 	 id="FieldAccess" const="JVMTI_EVENT_FIELD_ACCESS" filtered="thread" num="63">
     <description>
       Field access events are generated whenever a thread accesses
-      a field that was designated as a watchpoint 
+      a field that was designated as a watchpoint
       with <functionlink id="SetFieldAccessWatch"></functionlink>.
-      The <code>method</code> and <code>location</code> 
+      The <code>method</code> and <code>location</code>
       parameters uniquely identify the current location and allow
-      the mapping to source file and line number when that information is 
-      available. 
+      the mapping to source file and line number when that information is
+      available.
     </description>
     <origin>jvmdi</origin>
     <capabilities>
       <required id="can_generate_field_access_events"></required>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12070,18 +12070,18 @@
 	 id="FieldModification" const="JVMTI_EVENT_FIELD_MODIFICATION" filtered="thread" num="64">
     <description>
       Field modification events are generated whenever a thread modifies
-      a field that was designated as a watchpoint 
+      a field that was designated as a watchpoint
       with <functionlink id="SetFieldModificationWatch"></functionlink>.
-      The <code>method</code> and <code>location</code> 
+      The <code>method</code> and <code>location</code>
       parameters uniquely identify the current location and allow
-      the mapping to source file and line number when that information is 
-      available. 
+      the mapping to source file and line number when that information is
+      available.
     </description>
     <origin>jvmdi</origin>
     <capabilities>
       <required id="can_generate_field_modification_events"></required>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12151,25 +12151,25 @@
   <event label="Frame Pop"
 	 id="FramePop" const="JVMTI_EVENT_FRAME_POP" filtered="thread" num="61">
     <description>
-      Frame pop events are generated upon exit from a single method 
+      Frame pop events are generated upon exit from a single method
       in a single frame as specified
       in a call to <functionlink id="NotifyFramePop"></functionlink>.
       This is true whether termination is caused by
       executing its return instruction
-      or by throwing an exception to its caller 
+      or by throwing an exception to its caller
       (see <paramlink id="was_popped_by_exception"></paramlink>).
-      However, frame pops caused by the <functionlink id="PopFrame"/> 
+      However, frame pops caused by the <functionlink id="PopFrame"/>
       function are not reported.
       <p/>
       The location reported by <functionlink id="GetFrameLocation"></functionlink>
-      identifies the executable location in the returning method, 
-      immediately prior to the return. 
+      identifies the executable location in the returning method,
+      immediately prior to the return.
     </description>
     <origin>jvmdi</origin>
     <capabilities>
       <required id="can_generate_frame_pop_events"></required>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12209,24 +12209,24 @@
   <event label="Method Entry"
 	 id="MethodEntry" const="JVMTI_EVENT_METHOD_ENTRY" filtered="thread" num="65">
     <description>
-      Method entry events are generated upon entry of Java 
+      Method entry events are generated upon entry of Java
       programming language methods (including native methods).
       <p/>
       The location reported by <functionlink id="GetFrameLocation"></functionlink>
       identifies the initial executable location in
-      the method. 
+      the method.
       <p/>
       Enabling method
       entry or exit events will significantly degrade performance on many platforms and is thus
       not advised for performance critical usage (such as profiling).
-      <internallink id="bci">Bytecode instrumentation</internallink> should be 
+      <internallink id="bci">Bytecode instrumentation</internallink> should be
       used in these cases.
     </description>
     <origin>jvmdi</origin>
     <capabilities>
       <required id="can_generate_method_entry_events"></required>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12259,25 +12259,25 @@
   <event label="Method Exit"
 	 id="MethodExit" const="JVMTI_EVENT_METHOD_EXIT" filtered="thread" num="66">
     <description>
-      Method exit events are generated upon exit from Java 
+      Method exit events are generated upon exit from Java
       programming language methods (including native methods).
       This is true whether termination is caused by
       executing its return instruction
-      or by throwing an exception to its caller 
+      or by throwing an exception to its caller
       (see <paramlink id="was_popped_by_exception"></paramlink>).
       <p/>
       The <code>method</code> field uniquely identifies the
-      method being entered or exited. The <code>frame</code> field provides 
+      method being entered or exited. The <code>frame</code> field provides
       access to the stack frame for the method.
       <p/>
       The location reported by <functionlink id="GetFrameLocation"></functionlink>
-      identifies the executable location in the returning method 
-      immediately prior to the return. 
+      identifies the executable location in the returning method
+      immediately prior to the return.
       <p/>
         Enabling method
 	entry or exit events will significantly degrade performance on many platforms and is thus
 	not advised for performance critical usage (such as profiling).
-        <internallink id="bci">Bytecode instrumentation</internallink> should be 
+        <internallink id="bci">Bytecode instrumentation</internallink> should be
         used in these cases.
     </description>
     <origin>jvmdi</origin>
@@ -12322,7 +12322,7 @@
 	<jvalue/>
 	<description>
 	  The return value of the method being exited.
-	  Undefined and should not be used if 
+	  Undefined and should not be used if
 	  <paramlink id="was_popped_by_exception"></paramlink>
 	  is true.
 	</description>
@@ -12333,18 +12333,18 @@
   <event label="Native Method Bind" phase="any"
 	 id="NativeMethodBind" const="JVMTI_EVENT_NATIVE_METHOD_BIND" num="67">
     <description>
-      A Native Method Bind event is sent when a VM binds a 
+      A Native Method Bind event is sent when a VM binds a
       Java programming language native method
-      to the address of a function that implements the native method. 
+      to the address of a function that implements the native method.
       This will occur when the native method is called for the first time
       and also occurs when the JNI function <code>RegisterNatives</code> is called.
       This event allows the bind to be redirected to an agent-specified
-      proxy function. 
+      proxy function.
       This event is not sent when the native method is unbound.
-      Typically, this proxy function will need to be specific to a 
+      Typically, this proxy function will need to be specific to a
       particular method or, to handle the general case, automatically
-      generated assembly code, since after instrumentation code is 
-      executed the function at the original binding 
+      generated assembly code, since after instrumentation code is
+      executed the function at the original binding
       address will usually be invoked.
       The original binding can be restored or the redirection changed
       by use of the JNI function <code>RegisterNatives</code>.
@@ -12363,7 +12363,7 @@
         </outptr>
           <description>
             The JNI environment of the event (current) thread
-	    Will be <code>NULL</code> if sent during the primordial 
+	    Will be <code>NULL</code> if sent during the primordial
             <functionlink id="GetPhase">phase</functionlink>.
           </description>
       </param>
@@ -12407,7 +12407,7 @@
 	 id="Exception" const="JVMTI_EVENT_EXCEPTION" filtered="thread" num="58">
     <description>
       Exception events are generated whenever an exception is first detected
-      in a Java programming language method. 
+      in a Java programming language method.
       Where "exception" means any <code>java.lang.Throwable</code>.
       The exception may have been thrown by a Java programming language or native
       method, but in the case of native methods, the event is not generated
@@ -12416,20 +12416,20 @@
       no exception event is generated.
       <p/>
       The <code>method</code> and <code>location</code>
-      parameters  uniquely identify the current location 
+      parameters  uniquely identify the current location
       (where the exception was detected) and allow
-      the mapping to source file and line number when that information is 
+      the mapping to source file and line number when that information is
       available. The <code>exception</code> field identifies the thrown
       exception object. The <code>catch_method</code>
       and <code>catch_location</code> identify the location of the catch clause,
       if any, that handles the thrown exception. If there is no such catch clause,
       each field is set to 0. There is no guarantee that the thread will ever
       reach this catch clause. If there are native methods on the call stack
-      between the throw location and the catch clause, the exception may 
+      between the throw location and the catch clause, the exception may
       be reset by one of those native methods.
       Similarly, exceptions that are reported as uncaught (<code>catch_klass</code>
       et al. set to 0) may in fact be caught by native code.
-      Agents can check for these occurrences by monitoring 
+      Agents can check for these occurrences by monitoring
       <eventlink id="ExceptionCatch"></eventlink> events.
       Note that finally clauses are implemented as catch and re-throw. Therefore they
       will be reported in the catch location.
@@ -12438,7 +12438,7 @@
     <capabilities>
       <required id="can_generate_exception_events"></required>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12505,18 +12505,18 @@
       Where "exception" means any <code>java.lang.Throwable</code>.
       If the exception is caught in a Java programming language method, the event is generated
       when the catch clause is reached. If the exception is caught in a native
-      method, the event is generated as soon as control is returned to a Java programming language 
+      method, the event is generated as soon as control is returned to a Java programming language
       method. Exception catch events are generated for any exception for which
       a throw was detected in a Java programming language method.
       Note that finally clauses are implemented as catch and re-throw. Therefore they
       will generate exception catch events.
       <p/>
       The <code>method</code> and <code>location</code>
-      parameters uniquely identify the current location 
-      and allow the mapping to source file and line number when that information is 
-      available. For exceptions caught in a Java programming language method, the 
+      parameters uniquely identify the current location
+      and allow the mapping to source file and line number when that information is
+      available. For exceptions caught in a Java programming language method, the
       <code>exception</code> object identifies the exception object. Exceptions
-      caught in native methods are not necessarily available by the time the 
+      caught in native methods are not necessarily available by the time the
       exception catch is reported, so the <code>exception</code> field is set
       to <code>NULL</code>.
     </description>
@@ -12524,7 +12524,7 @@
     <capabilities>
       <required id="can_generate_exception_events"></required>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12570,11 +12570,11 @@
 	 id="ThreadStart" const="JVMTI_EVENT_THREAD_START" num="52" phase="start">
     <description>
       Thread start events are generated by a new thread before its initial
-      method executes. 
+      method executes.
       <p/>
       A thread may be listed in the array returned by
       <functionlink id="GetAllThreads"></functionlink>
-      before its thread start event is generated. 
+      before its thread start event is generated.
       It is possible for other events to be generated
       on a thread before its thread start event.
       <p/>
@@ -12583,7 +12583,7 @@
     <origin>jvmdi</origin>
     <capabilities>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12602,14 +12602,14 @@
   </event>
 
   <event label="Thread End"
-	 id="ThreadEnd" const="JVMTI_EVENT_THREAD_END" filtered="thread" num="53" phase="start"> 
+	 id="ThreadEnd" const="JVMTI_EVENT_THREAD_END" filtered="thread" num="53" phase="start">
     <description>
       Thread end events are generated by a terminating thread
-      after its initial method has finished execution. 
+      after its initial method has finished execution.
       <p/>
       A thread may be listed in the array returned by
       <functionlink id="GetAllThreads"></functionlink>
-      after its thread end event is generated. 
+      after its thread end event is generated.
       No events are generated on a thread
       after its thread end event.
       <p/>
@@ -12618,7 +12618,7 @@
     <origin>jvmdi</origin>
     <capabilities>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12641,15 +12641,15 @@
     <description>
       A class load event is generated when a class is first loaded. The order
       of class load events generated by a particular thread are guaranteed
-      to match the order of class loading within that thread. 
+      to match the order of class loading within that thread.
       Array class creation does not generate a class load event.
-      The creation of a primitive class (for example, java.lang.Integer.TYPE) 
+      The creation of a primitive class (for example, java.lang.Integer.TYPE)
       does not generate a class load event.
       <p/>
       This event is sent at an early stage in loading the class. As
       a result the class should be used carefully.  Note, for example,
       that methods and fields are not yet loaded, so queries for methods,
-      fields, subclasses, and so on will not give correct results. 
+      fields, subclasses, and so on will not give correct results.
       See "Loading of Classes and Interfaces" in the <i>Java Language
       Specification</i>.  For most
       purposes the <eventlink id="ClassPrepare"></eventlink> event will
@@ -12658,7 +12658,7 @@
     <origin>jvmdi</origin>
     <capabilities>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12687,7 +12687,7 @@
 	 id="ClassUnload" const="JVMTI_EVENT_CLASS_UNLOAD" num="57">
     <description>
       A class unload event is generated when the class is about to be unloaded.
-      Class unload events take place during garbage collection and must be 
+      Class unload events take place during garbage collection and must be
       handled extremely carefully. The garbage collector holds many locks
       and has suspended all other threads, so the event handler cannot depend
       on the ability to acquire any locks. The class unload event handler should
@@ -12704,7 +12704,7 @@
     <origin>jvmdi</origin>
     <capabilities>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12733,16 +12733,16 @@
 	 id="ClassPrepare" const="JVMTI_EVENT_CLASS_PREPARE" filtered="thread" phase="start" num="56">
     <description>
       A class prepare event is generated when class preparation is complete.
-      At this point, class fields, methods, and implemented interfaces are 
-      available, and no code from the class has been executed. Since array 
-      classes never have fields or methods, class prepare events are not 
-      generated for them. Class prepare events are not generated for 
-      primitive classes (for example, <code>java.lang.Integer.TYPE</code>). 
+      At this point, class fields, methods, and implemented interfaces are
+      available, and no code from the class has been executed. Since array
+      classes never have fields or methods, class prepare events are not
+      generated for them. Class prepare events are not generated for
+      primitive classes (for example, <code>java.lang.Integer.TYPE</code>).
     </description>
     <origin>jvmdi</origin>
     <capabilities>
     </capabilities>
-    <parameters> 
+    <parameters>
       <param id="jni_env">
         <outptr>
           <struct>JNIEnv</struct>
@@ -12771,14 +12771,14 @@
     <description>
       This event is sent when the VM obtains class file data,
       but before it constructs
-      the in-memory representation for that class. 
-      This event is also sent when the class is being modified by the 
+      the in-memory representation for that class.
+      This event is also sent when the class is being modified by the
       <functionlink id="RetransformClasses"/> function or
       the <functionlink id="RedefineClasses"/> function,
       called in any <jvmti/> environment.
       The agent can instrument
       the existing class file data sent by the VM to include profiling/debugging hooks.
-      See the description of 
+      See the description of
       <internallink id="bci">bytecode instrumentation</internallink>
       for usage information.
       <p/>
@@ -12788,28 +12788,28 @@
     <internallink id="jvmtiCapabilities.can_generate_all_class_hook_events">
     <code>can_generate_all_class_hook_events</code></internallink>
     are enabled then this event may be sent in the primordial phase.
-    Otherwise, this event may be sent before the VM is initialized (the start 
+    Otherwise, this event may be sent before the VM is initialized (the start
     <functionlink id="GetPhase">phase</functionlink>).
     Some classes might not be compatible
     with the function (eg. ROMized classes or implementation defined classes) and this event will
     not be generated for these classes.
     <p/>
-    The agent must allocate the space for the modified 
+    The agent must allocate the space for the modified
     class file data buffer
-    using the memory allocation function 
+    using the memory allocation function
     <functionlink id="Allocate"></functionlink> because the
     VM is responsible for freeing the new class file data buffer
     using <functionlink id="Deallocate"></functionlink>.
     <p/>
-    If the agent wishes to modify the class file, it must set 
+    If the agent wishes to modify the class file, it must set
     <code>new_class_data</code> to point
     to the newly instrumented class file data buffer and set
-    <code>new_class_data_len</code> to the length of that 
+    <code>new_class_data_len</code> to the length of that
     buffer before returning
     from this call.  If no modification is desired, the agent simply
     does not set <code>new_class_data</code>.  If multiple agents
     have enabled this event the results are chained. That is, if
-    <code>new_class_data</code> has been set, it becomes the 
+    <code>new_class_data</code> has been set, it becomes the
     <code>class_data</code> for the next agent.
     <p/>
     When handling a class load in the live phase, then the
@@ -12827,13 +12827,13 @@
       <li><fieldlink id="can_retransform_classes"
                      struct="jvmtiCapabilities">retransformation
                                                 incapable</fieldlink>
-          environments, in the 
+          environments, in the
           order in which they were created
       </li>
       <li><fieldlink id="can_retransform_classes"
                      struct="jvmtiCapabilities">retransformation
                                                 capable</fieldlink>
-          environments, in the 
+          environments, in the
           order in which they were created
       </li>
     </ul>
@@ -12869,7 +12869,7 @@
       <param id="loader">
 	<jobject/>
 	  <description>
-	    The class loader loading the class.  
+	    The class loader loading the class.
             <code>NULL</code> if the bootstrap class loader.
 	  </description>
       </param>
@@ -12972,7 +12972,7 @@
       with other events, but
       the preceding events should be handled carefully, if at all, because the
       VM has not completed its initialization. The thread start event for the
-      main application thread is guaranteed not to occur until after the 
+      main application thread is guaranteed not to occur until after the
       handler for the VM initialization event returns.
       <p/>
       In the case of VM start-up failure, this event will not be sent.
@@ -13001,7 +13001,7 @@
   <event label="VM Death Event"
 	 id="VMDeath" const="JVMTI_EVENT_VM_DEATH" num="51">
     <description>
-      The VM death event notifies the agent of the termination of the VM. 
+      The VM death event notifies the agent of the termination of the VM.
       No events will occur after the VMDeath event.
       <p/>
       In the case of VM start-up failure, this event will not be sent.
@@ -13032,7 +13032,7 @@
       followed by a new <code>CompiledMethodLoad</code> event.
       Note that a single method may have multiple compiled forms, and that
       this event will be sent for each form.
-      Note also that several methods may be inlined into a single 
+      Note also that several methods may be inlined into a single
       address range, and that this event will be sent for each method.
       <p/>
       These events can be sent after their initial occurrence with
@@ -13049,7 +13049,7 @@
       <field id="location">
 	<jlocation/>
 	<description>
-	  Corresponding location. See 
+	  Corresponding location. See
 	  <functionlink id="GetJLocationFormat"></functionlink>
 	  for the meaning of location.
 	</description>
@@ -13095,7 +13095,7 @@
 	<vmbuf><struct>jvmtiAddrLocationMap</struct></vmbuf>
 	<description>
 	  Map from native addresses to location.
-	  The native address range of each entry is from 
+	  The native address range of each entry is from
 	  <fieldlink id="start_address" struct="jvmtiAddrLocationMap"></fieldlink>
 	  to <code>start_address-1</code> of the next entry.
 	  <code>NULL</code> if mapping information cannot be supplied.
@@ -13104,10 +13104,10 @@
       <param id="compile_info">
 	<vmbuf><void/></vmbuf>
 	<description>
-	  VM-specific compilation information.  
+	  VM-specific compilation information.
 	  The referenced compile information is managed by the VM
 	  and must not depend on the agent for collection.
-	  A VM implementation defines the content and lifetime 
+	  A VM implementation defines the content and lifetime
 	  of the information.
 	</description>
       </param>
@@ -13119,9 +13119,9 @@
     <description>
       Sent when a compiled method is unloaded from memory.
       This event might not be sent on the thread which performed the unload.
-      This event may be sent sometime after the unload occurs, but 
+      This event may be sent sometime after the unload occurs, but
       will be sent before the memory is reused
-      by a newly generated compiled method. This event may be sent after 
+      by a newly generated compiled method. This event may be sent after
       the class is unloaded.
     </description>
     <origin>jvmpi</origin>
@@ -13139,7 +13139,7 @@
 	<jmethodID class="klass"/>
 	  <description>
 	    Compiled method being unloaded.
-	    For identification of the compiled method only -- the class 
+	    For identification of the compiled method only -- the class
 	    may be unloaded and therefore the method should not be used
 	    as an argument to further JNI or <jvmti/> functions.
 	  </description>
@@ -13148,7 +13148,7 @@
 	<vmbuf><void/></vmbuf>
 	<description>
 	  Address where compiled method code was loaded.
-          For identification of the compiled method only -- 
+          For identification of the compiled method only --
           the space may have been reclaimed.
 	</description>
       </param>
@@ -13236,7 +13236,7 @@
       <param id="thread">
 	<jthread/>
 	  <description>
-	    JNI local reference to the thread 
+	    JNI local reference to the thread
 	    attempting to enter the monitor
 	  </description>
       </param>
@@ -13367,28 +13367,28 @@
          since="1.1">
     <description>
       Sent when a VM resource needed by a running application has been exhausted.
-      Except as required by the optional capabilities, the set of resources 
+      Except as required by the optional capabilities, the set of resources
       which report exhaustion is implementation dependent.
       <p/>
       The following bit flags define the properties of the resource exhaustion:
-      <constants id="jvmtiResourceExhaustionFlags" 
-                 label="Resource Exhaustion Flags" 
-                 kind="bits" 
+      <constants id="jvmtiResourceExhaustionFlags"
+                 label="Resource Exhaustion Flags"
+                 kind="bits"
                  since="1.1">
         <constant id="JVMTI_RESOURCE_EXHAUSTED_OOM_ERROR" num="0x0001">
           After this event returns, the VM will throw a
           <code>java.lang.OutOfMemoryError</code>.
-        </constant>	  
+        </constant>
         <constant id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP" num="0x0002">
-	  The VM was unable to allocate memory from the <tm>Java</tm> 
+	  The VM was unable to allocate memory from the <tm>Java</tm>
           platform <i>heap</i>.
           The <i>heap</i> is the runtime
           data area from which memory for all class instances and
           arrays are allocated.
-        </constant>	  
+        </constant>
         <constant id="JVMTI_RESOURCE_EXHAUSTED_THREADS" num="0x0004">
 	  The VM was unable to create a thread.
-        </constant>	  
+        </constant>
       </constants>
     </description>
     <origin>new</origin>
@@ -13398,7 +13398,7 @@
         <internallink id="JVMTI_RESOURCE_EXHAUSTED_JAVA_HEAP">heap</internallink>.
       </capability>
       <capability id="can_generate_resource_exhaustion_threads_events">
-        Can generate events when the VM is unable to 
+        Can generate events when the VM is unable to
         <internallink id="JVMTI_RESOURCE_EXHAUSTED_THREADS">create
         a thread</internallink>.
       </capability>
@@ -13416,8 +13416,8 @@
 	<jint/>
         <description>
 	  Flags defining the properties of the of resource exhaustion
-	  as specified by the 
-          <internallink id="jvmtiResourceExhaustionFlags">Resource 
+	  as specified by the
+          <internallink id="jvmtiResourceExhaustionFlags">Resource
           Exhaustion Flags</internallink>.
 	  </description>
 	</param>
@@ -13440,16 +13440,16 @@
   <event label="VM Object Allocation"
 	 id="VMObjectAlloc" const="JVMTI_EVENT_VM_OBJECT_ALLOC" num="84">
     <description>
-      Sent when a method causes the virtual machine to allocate an 
+      Sent when a method causes the virtual machine to allocate an
       Object visible to Java programming language code and the
       allocation is not detectable by other intrumentation mechanisms.
       Generally object allocation should be detected by instrumenting
       the bytecodes of allocating methods.
       Object allocation generated in native code by JNI function
-      calls should be detected using 
+      calls should be detected using
       <internallink id="jniIntercept">JNI function interception</internallink>.
-      Some methods might not have associated bytecodes and are not 
-      native methods, they instead are executed directly by the 
+      Some methods might not have associated bytecodes and are not
+      native methods, they instead are executed directly by the
       VM. These methods should send this event.
       Virtual machines which are incapable of bytecode instrumentation
       for some or all of their methods can send this event.
@@ -13539,7 +13539,7 @@
   <event label="Garbage Collection Start"
 	 id="GarbageCollectionStart" const="JVMTI_EVENT_GARBAGE_COLLECTION_START" num="81">
     <description>
-      A Garbage Collection Start event is sent when a 
+      A Garbage Collection Start event is sent when a
       garbage collection pause begins.
       Only stop-the-world collections are reported--that is, collections during
       which all threads cease to modify the state of the Java virtual machine.
@@ -13550,8 +13550,8 @@
       specifically allow such use (see the raw monitor, memory management,
       and environment local storage functions).
       <p/>
-      This event is always sent as a matched pair with 
-      <eventlink id="GarbageCollectionFinish"/> 
+      This event is always sent as a matched pair with
+      <eventlink id="GarbageCollectionFinish"/>
       (assuming both events are enabled) and no garbage collection
       events will occur between them.
     </description>
@@ -13580,11 +13580,11 @@
       and the handler for the Garbage Collection Finish event simply
       notifies the raw monitor
       <p/>
-      This event is always sent as a matched pair with 
+      This event is always sent as a matched pair with
       <eventlink id="GarbageCollectionStart"/> (assuming both events are enabled).
       <issue>
 	The most important use of this event is to provide timing information,
-	and thus additional information is not required.  However,  
+	and thus additional information is not required.  However,
 	information about the collection which is "free" should be included -
         what that information is needs to be determined.
       </issue>
@@ -13613,7 +13613,7 @@
 	  </ul>
 	</issue>
 	<issue>
-	  Though this seemed trivial to implement.  
+	  Though this seemed trivial to implement.
           In the RI it appears this will be quite complex.
 	</issue>
     </description>
@@ -13659,54 +13659,54 @@
     </basetype>
     <basetype id="jint">
       <description>
-	Holds a Java programming language <code>int</code>. 
+	Holds a Java programming language <code>int</code>.
 	Signed 32 bits.
       </description>
     </basetype>
     <basetype id="jlong">
       <description>
-	Holds a Java programming language <code>long</code>. 
+	Holds a Java programming language <code>long</code>.
 	Signed 64 bits.
       </description>
     </basetype>
     <basetype id="jfloat">
       <description>
-	Holds a Java programming language <code>float</code>. 
+	Holds a Java programming language <code>float</code>.
 	32 bits.
       </description>
     </basetype>
     <basetype id="jdouble">
       <description>
-	Holds a Java programming language <code>double</code>. 
+	Holds a Java programming language <code>double</code>.
 	64 bits.
       </description>
     </basetype>
     <basetype id="jobject">
       <description>
-	Holds a Java programming language object. 
+	Holds a Java programming language object.
       </description>
     </basetype>
     <basetype id="jclass">
       <description>
-	Holds a Java programming language class. 
+	Holds a Java programming language class.
       </description>
     </basetype>
     <basetype id="jvalue">
       <description>
-	Is a union of all primitive types and <code>jobject</code>.  Thus, holds any Java 
-	programming language value. 
+	Is a union of all primitive types and <code>jobject</code>.  Thus, holds any Java
+	programming language value.
       </description>
     </basetype>
     <basetype id="jfieldID">
       <description>
-	Identifies a Java programming language field. 
+	Identifies a Java programming language field.
         <code>jfieldID</code>s returned by <jvmti/> functions and events may be
         safely stored.
       </description>
     </basetype>
     <basetype id="jmethodID">
       <description>
-	Identifies a Java programming language method, initializer, or constructor. 
+	Identifies a Java programming language method, initializer, or constructor.
         <code>jmethodID</code>s returned by <jvmti/> functions and events may be
         safely stored.  However, if the class is unloaded, they become invalid
         and must not be used.
@@ -13715,7 +13715,7 @@
     <basetype id="JNIEnv">
       <description>
 	Pointer to the JNI function table.  Pointer to this (<code>JNIEnv *</code>)
-	is a JNI environment. 
+	is a JNI environment.
       </description>
     </basetype>
   </basetypes>
@@ -13723,9 +13723,9 @@
   <basetypes id="jvmtiTypes" label="JVM Tool Interface Base Types">
     <basetype id="jvmtiEnv">
       <description>
-	The <jvmti/> <internallink id="environments">environment</internallink> pointer. 
+	The <jvmti/> <internallink id="environments">environment</internallink> pointer.
         See the <internallink id="FunctionSection">Function Section</internallink>.
-        <code>jvmtiEnv</code> points to the 
+        <code>jvmtiEnv</code> points to the
         <internallink id="FunctionTable">function table</internallink> pointer.
       </description>
     </basetype>
@@ -13744,8 +13744,8 @@
     <basetype id="jlocation">
       <definition>typedef jlong jlocation;</definition>
       <description>
-	A 64 bit value, representing a monotonically increasing 
-	executable position within a method. 
+	A 64 bit value, representing a monotonically increasing
+	executable position within a method.
         <code>-1</code> indicates a native method.
 	See <functionlink id="GetJLocationFormat"></functionlink> for the format on a
 	given VM.
@@ -13763,10 +13763,10 @@
 	Holds an error return code.
 	See the <internallink id="ErrorSection">Error section</internallink> for possible values.
 	<example>
-typedef enum { 
-    JVMTI_ERROR_NONE = 0,  
+typedef enum {
+    JVMTI_ERROR_NONE = 0,
     JVMTI_ERROR_INVALID_THREAD = 10,
-      ... 
+      ...
 } jvmtiError;
 </example>
       </description>
@@ -13775,13 +13775,13 @@
       <description>
         An identifier for an event type.
 	See the <internallink id="EventSection">Event section</internallink> for possible values.
-        It is guaranteed that future versions of this specification will 
+        It is guaranteed that future versions of this specification will
         never assign zero as an event type identifier.
 <example>
-typedef enum { 
-    JVMTI_EVENT_SINGLE_STEP = 1, 
-    JVMTI_EVENT_BREAKPOINT = 2, 
-      ... 
+typedef enum {
+    JVMTI_EVENT_SINGLE_STEP = 1,
+    JVMTI_EVENT_BREAKPOINT = 2,
+      ...
 } jvmtiEvent;
 </example>
       </description>
@@ -13793,16 +13793,16 @@
 typedef struct {
     jvmtiEventVMInit VMInit;
     jvmtiEventVMDeath VMDeath;
-      ... 
+      ...
 } jvmtiEventCallbacks;
 </example>
-        See <internallink id="jvmtiEventCallbacks">event callbacks</internallink> 
+        See <internallink id="jvmtiEventCallbacks">event callbacks</internallink>
         for the complete structure.
         <p/>
         Where, for example, the VM initialization callback is defined:
 <example>
 typedef void (JNICALL *jvmtiEventVMInit)
-    (jvmtiEnv *jvmti_env, 
+    (jvmtiEnv *jvmti_env,
      JNIEnv* jni_env,
      jthread thread);
 </example>
@@ -13813,8 +13813,8 @@
       <definition>typedef struct JNINativeInterface_ jniNativeInterface;</definition>
       <description>
 	Typedef for the JNI function table <code>JNINativeInterface</code>
-	defined in the 
-	<externallink id="docs/technotes/guides/jni/spec/functions.html#interface_function_table">
+	defined in the
+	<externallink id="jni/functions.html#interface-function-table">
           JNI Specification</externallink>.
 	The JNI reference implementation defines this with an underscore.
       </description>
@@ -13826,13 +13826,13 @@
 <issuessection label="Issues">
   <intro id="suspendRequired" label="Resolved Issue: Suspend - Required or Automatic">
     JVMDI requires that the agent suspend threads before calling
-    certain sensitive functions.  JVMPI requires garbage collection to be 
-    disabled before calling certain sensitive functions. 
+    certain sensitive functions.  JVMPI requires garbage collection to be
+    disabled before calling certain sensitive functions.
     It was suggested that rather than have this requirement, that
     VM place itself in a suitable state before performing an
     operation.  This makes considerable sense since each VM
     knows its requirements and can most easily arrange a
-    safe state.  
+    safe state.
     <p/>
     The ability to externally suspend/resume threads will, of
     course, remain.  The ability to enable/disable garbage collection will not.
@@ -13840,19 +13840,19 @@
     This issue is resolved--suspend will not
     be required.  The spec has been updated to reflect this.
   </intro>
-  
+
   <intro id="stackSampling" label="Resolved Issue: Call Stack Sampling">
     There are a variety of approaches to sampling call stacks.
     The biggest bifurcation is between VM controlled and agent
-    controlled.  
+    controlled.
     <p/>
     This issue is resolved--agent controlled
     sampling will be the approach.
   </intro>
-  
+
   <intro id="threadRepresentation" label="Resolved Issue: Thread Representation">
     JVMDI represents threads as jthread.  JVMPI primarily
-    uses JNIEnv* to represent threads.  
+    uses JNIEnv* to represent threads.
     <p/>
     The Expert Group has chosen jthread as the representation
     for threads in <jvmti/>.
@@ -13863,26 +13863,26 @@
 
   <intro id="design" label="Resolved Issue: Method Representation">
     The JNI spec allows an implementation to depend on jclass/jmethodID
-    pairs, rather than simply a jmethodID, to reference a method.  
-    JVMDI, for consistency, choose the same representation.  
+    pairs, rather than simply a jmethodID, to reference a method.
+    JVMDI, for consistency, choose the same representation.
     JVMPI, however, specifies that a jmethodID alone maps to a
     method.  Both of the Sun <tm>J2SE</tm> virtual machines (Classic and <tm>HotSpot</tm>) store
     pointers in jmethodIDs, and as a result, a jmethodID is sufficient.
     In fact, any JVM implementation that supports JVMPI must have
-    such a representation.  
+    such a representation.
     <jvmti/> will use jmethodID as a unique representation of a method
     (no jclass is used).
-    There should be efficiency gains, particularly in 
+    There should be efficiency gains, particularly in
     functionality like stack dumping, to this representation.
     <p/>
     Note that fields were not used in JVMPI and that the access profile
-    of fields differs from methods--for implementation efficiency 
-    reasons, a jclass/jfieldID pair will still be needed for field 
+    of fields differs from methods--for implementation efficiency
+    reasons, a jclass/jfieldID pair will still be needed for field
     reference.
   </intro>
 
   <intro id="localReferenceIssue" label="Resolved Issue: Local References">
-    Functions return local references. 
+    Functions return local references.
   </intro>
 
   <intro id="frameRep" label="Resolved Issue: Representation of frames">
@@ -13900,37 +13900,37 @@
   </intro>
 
   <intro id="taghint" label="Proposal: add tag hint function">
-    A hint of the percentage of objects that will be tagged would 
+    A hint of the percentage of objects that will be tagged would
     help the VM pick a good implementation.
   </intro>
 
   <intro id="moreMonitorQueries" label="Request: More Monitor Quires">
-  How difficult or easy would be to extend the monitor_info category to include 
+  How difficult or easy would be to extend the monitor_info category to include
     <pre>
-  - current number of monitors 
-  - enumeration of monitors 
-  - enumeration of threads waiting on a given monitor 
+  - current number of monitors
+  - enumeration of monitors
+  - enumeration of threads waiting on a given monitor
     </pre>
-  The reason for my question is the fact that current get_monitor_info support 
-  requires the agent to specify a given thread to get the info which is probably 
-  OK in the profiling/debugging space, while in the monitoring space the agent 
-  could be watching the monitor list and then decide which thread to ask for 
-  the info. You might ask why is this important for monitoring .... I think it 
+  The reason for my question is the fact that current get_monitor_info support
+  requires the agent to specify a given thread to get the info which is probably
+  OK in the profiling/debugging space, while in the monitoring space the agent
+  could be watching the monitor list and then decide which thread to ask for
+  the info. You might ask why is this important for monitoring .... I think it
   can aid in the detection/prediction of application contention caused by hot-locks.
   </intro>
 </issuessection>
 
 <changehistory id="ChangeHistory" update="09/05/07">
   <intro>
-    The <jvmti/> specification is an evolving document with major, minor, 
+    The <jvmti/> specification is an evolving document with major, minor,
     and micro version numbers.
     A released version of the specification is uniquely identified
     by its major and minor version.
-    The functions, events, and capabilities in this specification 
+    The functions, events, and capabilities in this specification
     indicate a "Since" value which is the major and minor version in
     which it was introduced.
-    The version of the specification implemented by the VM can 
-    be retrieved at runtime with the <functionlink id="GetVersionNumber"/> 
+    The version of the specification implemented by the VM can
+    be retrieved at runtime with the <functionlink id="GetVersionNumber"/>
     function.
   </intro>
   <change date="14 Nov 2002">
@@ -14024,9 +14024,9 @@
     get/set annotation, iterate live objects/heap.
     Add heap profiling functions place holder added:
     heap roots.
-    Heap profiling event added: object free. 
-    Heap profiling event redesigned: vm object allocation. 
-    Heap profiling event placeholders added: garbage collection start/finish. 
+    Heap profiling event added: object free.
+    Heap profiling event redesigned: vm object allocation.
+    Heap profiling event placeholders added: garbage collection start/finish.
     Native method bind event added.
   </change>
   <change date="19 Dec 2002">
@@ -14158,7 +14158,7 @@
       One character XML fix.
   </change>
   <change date="13 Mar 2003" version="v49">
-      Change function parameter names to be consistent with 
+      Change function parameter names to be consistent with
       event parameters (fooBarBaz becomes foo_bar_baz).
   </change>
   <change date="14 Mar 2003" version="v50">
@@ -14215,8 +14215,8 @@
   </change>
   <change date="14 May 2003" version="v63">
       Define the data type <code>jvmtiEventCallbacks</code>.
-      Zero length allocations return NULL.  
-      Keep SetAllocationHooks in JVMDI, but remove from <jvmti/>.  
+      Zero length allocations return NULL.
+      Keep SetAllocationHooks in JVMDI, but remove from <jvmti/>.
       Add JVMTI_THREAD_STATUS_FLAG_INTERRUPTED.
   </change>
   <change date="15 May 2003" version="v64">
@@ -14234,7 +14234,7 @@
   </change>
   <change date="17 June 2003" version="v68">
       Changes per June 11th Expert Group meeting --
-      Overhaul Heap functionality: single callback, 
+      Overhaul Heap functionality: single callback,
       remove GetHeapRoots, add reachable iterators,
       and rename "annotation" to "tag".
       NULL thread parameter on most functions is current
@@ -14250,8 +14250,8 @@
       Clean up issues sections.
       Rename GetClassName back to GetClassSignature and
       fix description.
-      Add generic signature to GetClassSignature, 
-      GetFieldSignature, GetMethodSignature, and 
+      Add generic signature to GetClassSignature,
+      GetFieldSignature, GetMethodSignature, and
       GetLocalVariableTable.
       Elide EstimateCostOfCapabilities.
       Clarify that the system property functions operate
@@ -14338,7 +14338,7 @@
       Split can_get_source_info into can_get_source_file_name, can_get_line_numbers,
       and can_get_source_debug_extension.
       PopFrame cannot have a native calling method.
-      Removed incorrect statement in GetClassloaderClasses 
+      Removed incorrect statement in GetClassloaderClasses
       (see <vmspec chapter="4.4"/>).
   </change>
   <change date="24 July 2003" version="v79">
@@ -14370,7 +14370,7 @@
       Rename JVMTI_REFERENCE_ARRAY to JVMTI_REFERENCE_ARRAY_ELEMENT.
   </change>
   <change date="28 July 2003" version="v85">
-      Steal java.lang.Runtime.availableProcessors() wording for 
+      Steal java.lang.Runtime.availableProcessors() wording for
       AvailableProcessors().
       Guarantee that zero will never be an event ID.
       Remove some issues which are no longer issues.
@@ -14395,7 +14395,7 @@
       Remove the ClassUnload event.
   </change>
   <change date="8 August 2003" version="0.2.89">
-      Heap reference iterator callbacks return an enum that 
+      Heap reference iterator callbacks return an enum that
       allows outgoing object references to be ignored.
       Allow JNIEnv as a param type to extension events/functions.
   </change>
@@ -14403,23 +14403,23 @@
       Fix a typo.
   </change>
   <change date="2 September 2003" version="0.2.91">
-      Remove all metadata functions: GetClassMetadata, 
+      Remove all metadata functions: GetClassMetadata,
       GetFieldMetadata, and GetMethodMetadata.
   </change>
   <change date="1 October 2003" version="0.2.92">
-      Mark the functions Allocate. Deallocate, RawMonitor*, 
-      SetEnvironmentLocalStorage, and GetEnvironmentLocalStorage 
+      Mark the functions Allocate. Deallocate, RawMonitor*,
+      SetEnvironmentLocalStorage, and GetEnvironmentLocalStorage
       as safe for use in heap callbacks and GC events.
   </change>
   <change date="24 November 2003" version="0.2.93">
-      Add pass through opaque user data pointer to heap iterate 
+      Add pass through opaque user data pointer to heap iterate
       functions and callbacks.
       In the CompiledMethodUnload event, send the code address.
       Add GarbageCollectionOccurred event.
       Add constant pool reference kind.
       Mark the functions CreateRawMonitor and DestroyRawMonitor
       as safe for use in heap callbacks and GC events.
-      Clarify: VMDeath, GetCurrentThreadCpuTimerInfo, 
+      Clarify: VMDeath, GetCurrentThreadCpuTimerInfo,
       GetThreadCpuTimerInfo, IterateOverReachableObjects,
       IterateOverObjectsReachableFromObject, GetTime and
       JVMTI_ERROR_NULL_POINTER.
@@ -14434,8 +14434,8 @@
       SetEventNotificationMode, add: error attempted inappropriate
       thread level control.
       Remove jvmtiExceptionHandlerEntry.
-      Fix handling of native methods on the stack -- 
-      location_ptr param of GetFrameLocation, remove 
+      Fix handling of native methods on the stack --
+      location_ptr param of GetFrameLocation, remove
       JVMTI_ERROR_OPAQUE_FRAME from GetFrameLocation,
       jvmtiFrameInfo.location, and jlocation.
       Remove typo (from JVMPI) implying that the MonitorWaited
@@ -14456,7 +14456,7 @@
   <change date="12 February 2004" version="0.2.102">
       Remove MonitorContendedExit.
       Added JNIEnv parameter to VMObjectAlloc.
-      Clarified definition of class_tag and referrer_index 
+      Clarified definition of class_tag and referrer_index
       parameters to heap callbacks.
   </change>
   <change date="16 Febuary 2004" version="0.2.103">
@@ -14483,13 +14483,13 @@
       Require NotifyFramePop to act on suspended threads.
   </change>
   <change date="24 Febuary 2004" version="0.3.10">
-      Add capabilities 
+      Add capabilities
         (<internallink id="jvmtiCapabilities.can_redefine_any_class"
          ><code>can_redefine_any_class</code></internallink>
-      and 
+      and
          <internallink id="jvmtiCapabilities.can_generate_all_class_hook_events"
-         ><code>can_generate_all_class_hook_events</code></internallink>) 
-      and an error (<errorlink id="JVMTI_ERROR_UNMODIFIABLE_CLASS"></errorlink>) 
+         ><code>can_generate_all_class_hook_events</code></internallink>)
+      and an error (<errorlink id="JVMTI_ERROR_UNMODIFIABLE_CLASS"></errorlink>)
       which allow some classes to be unmodifiable.
   </change>
   <change date="28 Febuary 2004" version="0.3.11">
@@ -14573,11 +14573,11 @@
       Bump major.minor version numbers to "1.0".
   </change>
   <change date="2 June 2004" version="1.0.33">
-      Clarify interaction between ForceGarbageCollection 
+      Clarify interaction between ForceGarbageCollection
       and ObjectFree.
   </change>
   <change date="6 June 2004" version="1.0.34">
-      Restrict AddToBootstrapClassLoaderSearch and 
+      Restrict AddToBootstrapClassLoaderSearch and
       SetSystemProperty to the OnLoad phase only.
   </change>
   <change date="11 June 2004" version="1.0.35">
@@ -14604,8 +14604,8 @@
       Add "since" version marker.
       Add AddToSystemClassLoaderSearch.
       Allow AddToBootstrapClassLoaderSearch be used in live phase.
-      Fix historic rubbish in the descriptions of the heap_object_callback 
-      parameter of IterateOverHeap and IterateOverInstancesOfClass functions; 
+      Fix historic rubbish in the descriptions of the heap_object_callback
+      parameter of IterateOverHeap and IterateOverInstancesOfClass functions;
       disallow NULL for this parameter.
       Clarify, correct and make consistent: wording about current thread,
       opaque frames and insufficient number of frames in PopFrame.
@@ -14629,19 +14629,19 @@
   </change>
   <change date="29 April 2005" version="1.1.51">
       Allow agents be started in the live phase.
-      Added paragraph about deploying agents.  
+      Added paragraph about deploying agents.
   </change>
   <change date="30 April 2005" version="1.1.52">
       Add specification description to SetNativeMethodPrefix(es).
-      Better define the conditions on GetConstantPool.  
+      Better define the conditions on GetConstantPool.
   </change>
   <change date="30 April 2005" version="1.1.53">
       Break out the GetClassVersionNumber function from GetConstantPool.
-      Clean-up the references to the VM Spec.  
+      Clean-up the references to the VM Spec.
   </change>
   <change date="1 May 2005" version="1.1.54">
       Allow SetNativeMethodPrefix(es) in any phase.
-      Add clarifications about the impact of redefinition on GetConstantPool.  
+      Add clarifications about the impact of redefinition on GetConstantPool.
   </change>
   <change date="2 May 2005" version="1.1.56">
       Various clarifications to SetNativeMethodPrefix(es).
@@ -14655,7 +14655,7 @@
   <change date="8 May 2005" version="1.1.59">
       Add <functionlink id="RetransformClasses"/>.
       Revamp the bytecode instrumentation documentation.
-      Change <functionlink id="IsMethodObsolete"/> to no longer 
+      Change <functionlink id="IsMethodObsolete"/> to no longer
       require the can_redefine_classes capability.
   </change>
   <change date="11 May 2005" version="1.1.63">
@@ -14668,7 +14668,7 @@
   <change date="4 June 2005" version="1.1.67">
       Add new heap functionity which supports reporting primitive values,
       allows setting the referrer tag, and has more powerful filtering:
-      FollowReferences, IterateThroughHeap, and their associated 
+      FollowReferences, IterateThroughHeap, and their associated
       callbacks, structs, enums, and constants.
   </change>
   <change date="4 June 2005" version="1.1.68">
@@ -14737,10 +14737,10 @@
       Better phrasing.
   </change>
   <change date="16 March 2006" version="1.1.88">
-      Match the referrer_index for static fields in Object Reference Callback 
+      Match the referrer_index for static fields in Object Reference Callback
       with the Reference Implementation (and all other known implementations);
       that is, make it match the definition for instance fields.
-      In GetThreadListStackTraces, add JVMTI_ERROR_INVALID_THREAD to cover 
+      In GetThreadListStackTraces, add JVMTI_ERROR_INVALID_THREAD to cover
       an invalid thread in the list; and specify that not started threads
       return empty stacks.
   </change>
@@ -14756,10 +14756,10 @@
   </change>
   <change date="1 May 2006" version="1.1.93">
       Changed spec to return -1 for monitor stack depth for the
-      implementation which can not determine stack depth. 
+      implementation which can not determine stack depth.
   </change>
   <change date="3 May 2006" version="1.1.94">
-      Corrections for readability and accuracy courtesy of Alan Pratt of IBM. 
+      Corrections for readability and accuracy courtesy of Alan Pratt of IBM.
       List the object relationships reported in FollowReferences.
   </change>
   <change date="5 May 2006" version="1.1.95">
