<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2004 Hyades project.
All rights reserved.   This program and the accompanying materials
are made available under the terms of the Common Public License v1.0
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/cpl-v10.html

Contributors: 
IBM - Initial API and implementation

Author:   Mike Wulkan
Author:   Richard Duggan 
Author:   Paul Slauenwhite
Version:  November 8, 2004
Since:      October 18, 2000
-->
<!--
TRACE is the root element for a valid trace XML document. 
-->
<!ELEMENT TRACE (node | processCreate | agentCreate | agentDestroy | (methodBody | methodCall | methodReturn |
 objDef | value | classDef | method | tag | code)* | (traceStart | traceEnd | processSuspend |
 processResume | option | filter | classDef | classUnload | methodDef | methodEntry | methodExit |
 methodCall | value | methodReturn | line | objAlloc | gcStart | objFree | objMove |
 gcFinish | threadStart | threadEnd | runtimeInitDone | runtimeShutdown | throw | catch | methodCount)*)>
<!--
The code element is used to insert textual lines of code into the XML file. 
If users have lines of code that they want preserved when the XML file is parsed,
 they would insert them into the code element. The parser would then extract the lines 
 of code exactly as they appear in the element.

	type: The type of code that exists in this element. Valid types are:
		-Reference (The value attribute is a reference to an external source for the code.)
		-Java (The value attribute is text containing Java source code.)
		-C++ (The value attribute is text containing C++ source code.)
		-C (The value attribute is text containing C source code.)
	value: The actual text of the code, or if the type is "Reference", then it contains a 
	reference to an external source for the code. The format of the external reference is a URI. 
-->
<!ELEMENT code EMPTY>
<!ATTLIST code
	type CDATA #IMPLIED
	value CDATA #IMPLIED
>
<!--
The tag element contains the information that is associated with a specific tag, expressed 
as name value pairs.
	
	name: The name of the tag. 
	value: The value of the tag. 
-->
<!ELEMENT tag EMPTY>
<!ATTLIST tag
	name CDATA #IMPLIED
	value CDATA #IMPLIED
>
<!--
The methodBody element is used to enclose the body of a method.
	
	name: The name of the method
-->
<!ELEMENT methodBody (methodCall | methodReturn | value | objDef | code)*>
<!ATTLIST methodBody
	name CDATA #IMPLIED
>
<!--
The node element contains the information that is associated with a specific node or host.
	
	nodeId: A UUID to uniquely refer to this node. 
	hostname: The name of the machine on which the instrumented JVM is running. 
	ipaddress: A list of IP addresses associated with the hostname. The list has the form 
	ipaddress=n1.n2.n3.n4[,m1.m2.m3.m4]* where n and m are unsigned numbers within the range 0 to 255.  
	Note: The number of period-delimited numbers that make up an IP address is protocol-specific.
	timezone: A positive integer that represents the local time difference in minutes from GMT, 
	moving westward from Greenwich. 
	time: The time represented here is the time when the machine was last booted, not the time at 
	which this element was generated. 
-->
<!ELEMENT node EMPTY>
<!ATTLIST node
	nodeId CDATA #REQUIRED
	hostname CDATA #REQUIRED
	ipaddress CDATA #REQUIRED
	timezone CDATA #IMPLIED
	time CDATA #IMPLIED
>
<!--
The processCreate element contains the information that is associated with a process creation.
	
	processId: A UUID that uniquely identifies this process. 
	name: The name of the process.
	pid: The platform-specific process identification.
	nodeIdRef: A UUID that references the node element that represents the host machine. 
	time: The time represented here is the time at which the process was started, not the time
	 at which this element was generated. 
	application_executable: The name of the application started in the process followed by the
	 parameters passed to the application.
-->
<!ELEMENT processCreate EMPTY>
<!ATTLIST processCreate
	processId CDATA #REQUIRED
	name CDATA #IMPLIED
	pid CDATA #REQUIRED
	nodeIdRef CDATA #REQUIRED
	time CDATA #REQUIRED
	application_executable CDATA #IMPLIED
>
<!--
The agentCreate element contains the information that is associated with an agent creation.
	
	agentId: A UUID that uniquely identifies this agent. 
	processIdRef: A UUID that references the processCreate element that represents the process. 
	agentName: The name of the agent.
	time: The time represented here is the time at which the agentCreate occurred. 
	agentParameters: The option string that was passed to the agent on the -XrunpiAgent parameter. 
	version: A string representing the version of the agent.
-->
<!ELEMENT agentCreate EMPTY>
<!ATTLIST agentCreate
	agentId CDATA #REQUIRED
	processIdRef CDATA #REQUIRED
	agentName CDATA #REQUIRED
	time CDATA #REQUIRED
	agentParameters CDATA #IMPLIED
	version CDATA #IMPLIED
>
<!--
The agentDestroy element contains the information that is associated with an agent destroy.
	
	agentIdRef: A UUID that references the matching agentCreate element. 
	time: The time represented here is the time at which the agentDestroy occurred. 
-->
<!ELEMENT agentDestroy EMPTY>
<!ATTLIST agentDestroy
	agentIdRef CDATA #REQUIRED
	time CDATA #REQUIRED
>
<!--
The traceStart element contains the information that is associated with an trace start.
	
	traceId: The UUID that uniquely identifies this trace. 
	agentIdRef: A UUID that references the agentCreate element that represents the agent 
	that is producing this trace. 
	time: The time represented here is the time at which the traceStart occurred. 
	collationValue: The purpose of this attribute is to allow elements to be collated when 
	emitted on a stream that does not guarantee the order of delivery. It starts from the 
	value "1" on a traceStart element, and is incremented for each element emitted after that. 
	The collationValue is scoped by the traceStart and traceEnd elements. The collationValue 
	may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit 
	unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*"
	where the numbers are listed from low order to high order. 
-->
<!ELEMENT traceStart EMPTY>
<!ATTLIST traceStart
	traceId CDATA #REQUIRED
	agentIdRef CDATA #REQUIRED
	time CDATA #REQUIRED
	collationValue CDATA #IMPLIED
>
<!--
The tag element contains the information that is associated with a specific tag, 
expressed as name value pairs.
	
	traceIdRef: A UUID that references the traceStart element that represents the start 
	of this trace. 
	time: The time represented here is the time at which the traceEnd occurred. 
	collationValue: The purpose of this attribute is to allow elements to be collated 
	when emitted on a stream that does not guarantee the order of delivery. It starts 
	from the value "1" on a traceStart element, and is incremented for each element 
	emitted after that. The collationValue is scoped by the traceStart and traceEnd 
	elements. The collationValue may be a list of 32-bit unsigned values (in string format) 
	to allow for more than 32-bit unsigned values.  The collationValue attribute syntax 
	is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
-->
<!ELEMENT traceEnd EMPTY>
<!ATTLIST traceEnd
	traceIdRef CDATA #REQUIRED
	time CDATA #REQUIRED
	collationValue CDATA #IMPLIED
>
<!--
Indicates that the execution of the process has been suspended. 
	
	time: The time represented here is the time at which the processSuspend occurred. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT processSuspend EMPTY>
<!ATTLIST processSuspend
	time CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
Indicates that the execution of the process has resumed. 
	
	time: The time represented here is the time at which the processSuspend occurred. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT processResume EMPTY>
<!ATTLIST processResume
	time CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
An agent may be given any number of agent-specific key/value pair options. In addition to 
the agent performing the specific action as specified by the option, the agent will echo 
the option through this element.
	
	key: A string that represents the name of the option. 
	value: A string that represents the value of the option. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT option EMPTY>
<!ATTLIST option
	key CDATA #IMPLIED
	value CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
A class filter set by the client. Filters control which classes are traced. Filters are 
provided in blocks where a new block of filters completely replaces the current filter definitions.  
Matching is done by querying the active block of filters until the first match is found based 
on the supplied pattern. The class is then either included or excluded from the trace based on 
the mode.  If the entire block of filters is traversed and no match is found, then the class 
is included in the trace. 

Note: Some classes may be included in the trace even if they have been filtered out. This can 
occur if a reference is made to the class from a class that has not been filtered out. For example, 
the methodCall element can cause this.
	
	pattern: A prefix or suffix string which is compared against the class name. (For example, 
	"java*", "sun.com.*","*print".) 
	genericPattern: Indicates if the pattern contains a wildcard, and what kind of wildcard it has. 
	The values are: 
		-none (The pattern requires an exact match.)
		-prefix (The pattern has a prefix wildcard and will match anything ending with the pattern.)
		-suffix (The pattern has a suffix wildcard and will match anything starting with the pattern.)
		-traceIdRef: (A UUID that references the traceStart element that represents the start of this trace.) 
	mode: Either include or exclude.  
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT filter EMPTY>
<!ATTLIST filter
	pattern CDATA #REQUIRED
	genericPattern CDATA #REQUIRED
	mode CDATA #REQUIRED
	traceIdRef CDATA #IMPLIED
>
<!--
The threadStartelement contains the information that is associated with a thread start.
	
	transientThreadId: This attribute identifies the thread, and allows other trace elements 
	to reference it through the transientThreadIdref attribute.  
	threadId: This attribute identifies the thread, and allows other trace elements to reference 
	it through the threadIdRef attribute.  
	time: The time represented here is the time at which the threadStart occurred. 
	groupName: Group to which the thread belongs. 
	parentName: Name of parent. 
	transientObjIdRef: The objAlloc that defines this transientObjIdRef may not be available, 
	so the possibility of a dangling reference must be accounted for. 
	objIdRef: The objAlloc that defines this objIdRef may not be available. In this case the 
	value of objIdRef will be "0". 
	threadName: Name of thread being started. 
	collationValue: The purpose of this attribute is to allow elements to be collated when 
	emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" 
	on a traceStart element, and is incremented for each element emitted after that. The collationValue 
	is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit 
	unsigned values (in string format) to allow for more than 32-bit unsigned values.  The 
	collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are 
	listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT threadStart EMPTY>
<!ATTLIST threadStart
	transientThreadId CDATA #IMPLIED
	threadId CDATA #IMPLIED
	time CDATA #IMPLIED
	groupName CDATA #IMPLIED
	parentName CDATA #IMPLIED
	transientObjIdRef CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	threadName CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
Indicates the end of the thread identified by the threadIdRef or transientThreadIdRef value.
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread.  
	threadIdRef: This attribute references the ID of the owner thread.  
	time: The time represented here is the time at which the threadEnd occurred. 
	collationValue: The purpose of this attribute is to allow elements to be collated when 
	emitted on a stream that does not guarantee the order of delivery. It starts from the 
	value "1" on a traceStart element, and is incremented for each element emitted after 
	that. The collationValue is scoped by the traceStart and traceEnd elements. The 
	collationValue may be a list of 32-bit unsigned values (in string format) to allow 
	for more than 32-bit unsigned values.  The collationValue attribute syntax is: 
	collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT threadEnd EMPTY>
<!ATTLIST threadEnd
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
Defines a class.
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread.
	time: The time represented here is the actual time that the class was loaded, not the 
	time at which this element was generated. 
	numInterfaces: Number of interfaces implemented by this class. Expressed as an unsigned 
	32-bit value in string format. 
	interfaceNames: The name of the interfaces implemented by this class. If there is more 
	than one interface implemented then the names are separated by a comma.  If for some 
	reason the interface names cannot be determined, the string "" will be returned. 
	transientClassId: This attribute indicates the transient ID of this class.  
	classId: This attribute indicates the class ID of this class.  
	sourceName: A string containing the fully qualified path of the class source file. 
	(Note: this will be revisited to enhance the specification to support more languages beyond Java). 
	If for some reason the source file name cannot be determined, the string "" will be returned. 
	classLoader: A string containing the name of the class loader for this class. If for some 
	reason the class loader name cannot be determined, the string "" will be returned. 
	superclass: A string containing the name of the class extended by this class. If for some 
	reason the super class name cannot be determined or the class does not extend any other 
	class, then the string "" will be returned. 
	transcientObjIdRef: The reference to the relocatable class object for this class. 
	objIdRef: The reference to the non-relocatable class object for this class. 
	name: The name of the class. If for some reason the source file name cannot be determined, the string "" will be returned. 
	access: The access type for this class. The valid values are "public", "private", ... 
	numStaticFields: The number of static fields declared within the class. Expressed as an unsigned 32-bit value in string format. 
	numMethods: The number of methods defined within the class. Expressed as an unsigned 32-bit value in string format. 
	numInstanceFields: The number of instance fields declared within the class. Expressed as an unsigned 32-bit value in string format. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT classDef EMPTY>
<!ATTLIST classDef
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	numInterfaces CDATA #IMPLIED
	interfaceNames CDATA #IMPLIED
	transientClassId CDATA #IMPLIED
	classId CDATA #IMPLIED
	sourceName CDATA #IMPLIED
	classLoader CDATA #IMPLIED
	superclass CDATA #IMPLIED
	transcientObjIdRef CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	name CDATA #IMPLIED
	access CDATA #IMPLIED
	numStaticFields CDATA #IMPLIED
	numMethods CDATA #IMPLIED
	numInstanceFields CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
The methodDef element contains the information that is associated with a method defination.
	
	name: A string containing the name of the method. 
	signature: A string containing the signature of the method. 
	visibility: A string indicating the visibility of the method. Possible values are: "public", "protected", or "private". 
	isNative: The value is the string "true" if the method is native otherwise it is "false". 
	isAbstract: The value is the string "true" if the method is abstract otherwise it is "false". 
	isStatic: The value is the string "true" if the method is static otherwise it is "false". 
	isSynchronized: The value is the string "true" if the method is synchronized otherwise it is "false". 
	exceptions: The name of the exceptions that can be thrown by this method. If there is more than one exception then the name of the exceptions are separated by a comma. If for some reason the exception names cannot be determined, the string "" will be returned. 
	startLineNumber: The starting source line number of the method. Note: This attribute may not be produced if the source line information is not available. 
	endLineNumber: The ending source line number of the method. Note: This attribute may not be produced if the source line information is not available. 
	signitureNotation: Contains a value that declares the notation the signature is expressed in. Supported values are:
		-JNI (Currently only JNI signature notation is supported. If this attribute is not present, the value JNI is assumed.  JNI signature notation is defined in the Java Native Interface Specification.) 
	transientClassIdRef: This attribute references the transient ID of the owner class.  
	classIdRef: This attribute references the ID of the owner class.  
	methodId: The identifier of the method. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT methodDef EMPTY>
<!ATTLIST methodDef
	name CDATA #IMPLIED
	signature CDATA #IMPLIED
	visibility CDATA #IMPLIED
	isNative CDATA #IMPLIED
	isAbstract CDATA #IMPLIED
	isStatic CDATA #IMPLIED
	isSynchronized CDATA #IMPLIED
	exceptions CDATA #IMPLIED
	startLineNumber CDATA #IMPLIED
	endLineNumber CDATA #IMPLIED
	signitureNotation CDATA #IMPLIED
	transcientClassIdRef CDATA #IMPLIED
	classIdRef CDATA #IMPLIED
	methodId CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
This element traces storage allocation. This element was not included with the next section on storage management elements because it can be used in conjunction with other elements such as the methodEntry element to identify an associated object. 
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread.
	threadIdRef: This attribute references the ID of the owner thread.
	time: The time represented here is the time when the element was generated. 
	isArray: Defines the data type of an array. Values can be: 
		-0 (normal object (i.e., not an array))
		-2 (array of objects)
		-4 (array of booleans)
		-5 (array of chars)
		-6 (array of floats)
		-7 (array of doubles)
		-8 (array of bytes)
		-9 (array of shorts)
		-10 (array of ints)
		-11 (array of longs)
	transientObjId: This attribute indicates the transient ID of this object.  
	objId: This attribute indicates the object ID of this object.  
	size: Size in number of bytes expressed as an unsigned 32-bit value in string format. 
	transientClassIdRef: A reference to the class to which this object belongs, or the array element class if isArray is "2" (array of objects).
	classIdRef: A reference to the class to which this object belongs, or the array element class if isArray is "2" (array of objects).
	contextData: Data provided by the context service to associate with the object allocation. The mechanism for registering the context service is still to be defined. The contents of the contextData attribute is defined by the specific context service. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT objAlloc EMPTY>
<!ATTLIST objAlloc
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	isArray CDATA #IMPLIED
	transientObjId CDATA #IMPLIED
	objId CDATA #IMPLIED
	size CDATA #IMPLIED
	transientClassIdRef CDATA #IMPLIED
	classIdRef CDATA #IMPLIED
	contextData CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
The methodEntry element contains the information that is associated with a method entry.
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread.
	threadIdRef: This attribute references the ID of the owner thread.
	time: The time represented here is the time when the element was generated. 
	methodIdRef: This attribute references the ID of the owner method.  
	ticket: Identifies a specific instance of a method invocation (methodEntry and methodExit, or methodCall and methodReturn), using a counter that is unique within the current thread. The ticket may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.
	transientObjIdRef: This value will be "0" if invoking a static method.  
	objIdRef: This value will be "0" if invoking a static method. 
	transientClassIdRef: This attribute references the transient ID of the owner class.  
	classIdRef: This attribute references the ID of the owner class.  
	threadCpuTime: The total CPU time consumed by the current thread in nanoseconds at the time of the event.
	sequenceCounter: A counter indicating the sequence of the current event relative to other events associated with the current object. The count is 0 at object allocation and is incremented by one for each method entry on a method for the object instance (methodEntry), method exit on a method for the object instance (methodExit) and free of the object (objFree).
	stackDepth:	The current depth of the stack including the current method being executed. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT methodEntry (InvocationContext, value*)>
<!ATTLIST methodEntry
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	methodIdRef CDATA #IMPLIED
	ticket CDATA #IMPLIED
	transientObjIdRef CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	transientClassIdRef CDATA #IMPLIED
	classIdRef CDATA #IMPLIED
	threadCpuTime CDATA #IMPLIED
	sequenceCounter CDATA #IMPLIED
	stackDepth CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
The methodExit element contains the information that is associated with a method exit.
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread.
	threadIdRef: This attribute references the ID of the owner thread.
	time: The time represented here is the time when the element was generated. 
	ticket: Identifies a specific instance of a method invocation (methodEntry and methodExit, or methodCall and methodReturn), using a counter that is unique within the current thread. The ticket may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.
	threadCpuTime: The total CPU time consumed by the current thread in nanoseconds at the time of the event.
	methodIdRef: This attribute references the ID of the owner method.  
	transientObjIdRef: This value will be "0" if exiting a static method.  
	objIdRef: This value will be "0" if exiting a static method. 
	transientClassIdRef: This attribute references the transient ID of the owner class.  
	classIdRef: This attribute references the ID of the owner class.  
	sequenceCounter: A counter indicating the sequence of the current event relative to other events associated with the current object. The count is 0 at object allocation and is incremented by one for each method entry on a method for the object instance (methodEntry), method exit on a method for the object instance (methodExit) and free of the object (objFree).
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT methodExit (VALUE*)>
<!ATTLIST methodExit
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	ticket CDATA #IMPLIED
	threadCpuTime CDATA #IMPLIED
	methodIdRef CDATA #IMPLIED
	transientObjIdRef CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	transientClassIdRef CDATA #IMPLIED
	classIdRef CDATA #IMPLIED
	sequenceCounter CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
NOTE: Deprecated

The methodCall element contains the information that is associated with a method call.
	
Note the optional nested value elements represent parameter values. 

	transientThreadIdRef: This attribute references the transient ID of the owner thread.
	threadIdRef: This attribute identifies the thread.  
	time: The time represented here is the time when the element was generated. 
	methodIdRef: This attribute references the ID of the owner method.  
	ticket: Identifies a specific instance of a method invocation (methodEntry and methodExit, or methodCall and methodReturn), using a counter that is unique within the current thread. The ticket may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.
	objIdRef:	This value will be "0" if invoking a static method.  
	transientObjIdRef: This value will be "0" if invoking a static method. 
	classIdRef: This attribute references the ID of the owner class.  
	transientClassIdRef: This attribute references the ID of the owner transient class.  
	threadCpuTime: The total CPU time consumed by the current thread in nanoseconds at the time of the event.
	sequenceCounter: A counter indicating the sequence of the current event relative to other events associated with the current object. The count is 0 at object allocation and is incremented by one for each method entry on a method for the object instance (methodEntry), method exit on a method for the object instance (methodExit) and free of the object (objFree).
	stackDepth:	The current depth of the stack including the current method being executed. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT methodCall (VALUE*)>
<!ATTLIST methodCall
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	methodIdRef CDATA #IMPLIED
	ticket CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	transientObjIdRef CDATA #IMPLIED
	classIdRef CDATA #IMPLIED
	transientClassIdRef CDATA #IMPLIED
	threadCpuTime CDATA #IMPLIED
	sequenceCounter CDATA #IMPLIED
	stackDepth CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
NOTE: Deprecated

The methodReturn element contains the information that is associated with a method return.
	
Note the optional nested value element represents a return value. 

	transientThreadIdRef: This attribute references the transient ID of the owner thread.
	threadIdRef: This attribute identifies the thread.  
	time: The time represented here is the time when the element was generated. 
	methodIdRef: This attribute references the ID of the owner method.  
	ticket: Identifies a specific instance of a method invocation (methodEntry and methodExit, or methodCall and methodReturn), using a counter that is unique within the current thread. The ticket may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.
	objIdRef:	This value will be "0" if invoking a static method.  
	transientObjIdRef: This value will be "0" if invoking a static method. 
	classIdRef: This attribute references the ID of the owner class.  
	transientClassIdRef: This attribute references the ID of the owner transient class.  
	threadCpuTime: The total CPU time consumed by the current thread in nanoseconds at the time of the event.
	stackDepth:	The current depth of the stack including the current method being executed. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT methodReturn (VALUE*)>
<!ATTLIST methodReturn
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	methodIdRef CDATA #IMPLIED
	ticket CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	transientObjIdRef CDATA #IMPLIED
	classIdRef CDATA #IMPLIED
	transientClassIdRef CDATA #IMPLIED
	threadCpuTime CDATA #IMPLIED
	sequenceCounter CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
The InvocationContext element holds identity information so that a methodEntry can determine who invoked the method irregardless of loaction. InvocationContext information will identify either a methodCall or methodEntry of a remote agent for distributed invocations.
	
	nodeIdRef: This attribute references the ID of the owner node.
	processIdRef: This attribute references the ID of the owner process.
	agentIdRef: This attribute references the ID of the owner agent
	threadIdRef: This attribute references the ID of the owner thread.
	ticket: Identifies a specific instance of a method invocation (methodEntry and methodExit, or methodCall and methodReturn), using a counter that is unique within the current thread. The ticket may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.
	sequenceCounter: A counter indicating the sequence of the current event relative to other events associated with the current object. The count is 0 at object allocation and is incremented by one for each method entry on a method for the object instance (methodEntry), method exit on a method for the object instance (methodExit) and free of the object (objFree).
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT InvocationContext EMPTY>
<!ATTLIST InvocationContext
	nodeIdRef CDATA #IMPLIED
	processIdRef CDATA #IMPLIED
	agentIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	ticket CDATA #IMPLIED
	sequenceCounter CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
The objDef element holds identity information for an object, which can be referred to by elements associated with the object, such as the value element.

	objId: This attribute indicates the object ID of this object.  
	isArray: Defines the data type of an array. Values can be: 
		-0 (normal object (i.e., not an array))
		-2 (array of objects)
		-4 (array of booleans)
		-5 (array of chars)
		-6 (array of floats)
		-7 (array of doubles)
		-8 (array of bytes)
		-9 (array of shorts)
		-10 (array of ints)
		-11 (array of longs)
	size: Size in number of bytes expressed as an unsigned 32-bit value in string format. 
	classIdRef: A reference to the class to which this object belongs, or the array element class if isArray is "2" (array of objects).
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT objDef EMPTY>
<!ATTLIST objDef
	objId CDATA #REQUIRED
	isArray CDATA #IMPLIED
	size CDATA #IMPLIED
	classIdRef CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
The value element is used to reference a data value, either for parameter values in a methodCall, or for the return value of a methodReturn. 
	
	name: An optional name associated with the value. For example, a parameter name. 
	objIdRef: Refers the object associated with this value. The objIdRef value will be "0" if the value is a primitive type. 
	serializationFormat An implementation defined value that identifies the format used to serialize the object value. 
	type: Can be one of the following: 
		-"SERIALIZED_OBJ_VALUE_REF" (The value attribute is a reference (format to be defined) to a serialized object located elsewhere.)
		-"SERIALIZED_OBJ_VALUE" (The value attribute is a serialized object.)
		-"SERIALIZED_OBJ_VALUE_INLINE" (The serialized object is located in the pcdata. The value attribute is not used when this type is specified.)
		-"BOOLEAN"  the value attribute is a string representation of a boolean value.)
		-"CHAR" (The value attribute is a string representation of a char value.) 
		-"INT" (The value attribute is a string representation of an int value.) 
		-"LONG" (The value attribute is a string representation of a long value.) 
		-"FLOAT" (The value attribute is a string representation of a float value.) 
		-"DOUBLE" (The value attribute is a string representation of a double value.) 
		-"STRING" (The value attribute is a string.) 
		-"OPAQUE" (The value is unknown. The value attribute is not used when this type is specified.)
	value: The actual value of the data as specified by the type attribute. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT value (#PCDATA)>
<!ATTLIST value
	name CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	serializationFormat CDATA #IMPLIED
	type CDATA #IMPLIED
	value CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
The methodCount tracks the number of times a particular method has been invoked. This element is designed to aid in collecting code coverage information. A methodCount element is produced for every method for every class loaded by the application. The count includes all method invocations regardless of whether tracing was enabled or not. In other words, the data is collected even before a traceStart and even after a traceEnd. The elements are produced just prior to the agentDestroy element being produced. In addition, an agent may be requested to produce the methodCount elements at any arbitrary time before the agentDestroy element is produced.
	
	count: The number of times the method has been invoked since the start of the trace.. Expressed as a 32-bit unsigned value in string format. This value is maintained even while tracing is suspended. 
	methodIdRef: Refers to the id of the method being counted. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT methodCount EMPTY>
<!ATTLIST methodCount
	count CDATA #IMPLIED
	methodIdRef CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
This element is produced for each line that is executed. 
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	line_number: The line number of the line being executed. Expressed as a 32-bit unsigned value in string format. 
	file_name: The name of the source file from which the line number originated. 
	methodIdRef: This attribute references the ID of the owner method.   
	ticket: Identifies a specific instance of a method invocation (methodEntry and methodExit, or methodCall and methodReturn), using a counter that is unique within the current thread. The ticket may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values. 
	threadCpuTime: The total CPU time consumed by the current thread in nanoseconds at the time of the event. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT line EMPTY>
<!ATTLIST line
	transientThreadIdRef CDATA #IMPLIED
	threadId CDATA #IMPLIED
	time CDATA #IMPLIED
	line_number CDATA #IMPLIED
	file_name CDATA #IMPLIED
	methodIdRef CDATA #IMPLIED
	ticket CDATA #IMPLIED
	threadCpuTime CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
This element is produced when garbage collection (GC) is about to start.
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT gcStart EMPTY>
<!ATTLIST gcStart
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
This element is produced when an object is freed.  This element is always sent between a pair of gcStart and gcFinish elements. 
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	transientObjIdRef: This attribute references the transient ID of the owner object.   
	objIdRef: This attribute references the ID of the owner object.   
	sequenceCounter: A counter indicating the sequence of the current event relative to other events associated with the current object. The count is 0 at object allocation and is incremented by one for each method entry on a method for the object instance (methodEntry), method exit on a method for the object instance (methodExit) and free of the object (objFree). 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT objFree EMPTY>
<!ATTLIST objFree
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	transientObjIdRef CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	sequenceCounter CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
This element is always sent between a pair of gcStart and gcFinish elements. 

	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	transientClassIdRef: This attribute references the transient ID of the owner class.   
	classIdRef: This attribute references the ID of the owner class.   
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT classUnload EMPTY>
<!ATTLIST classUnload
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	transientClassIdRef CDATA #IMPLIED
	classIdRef CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
This element is produced when an object is moved in the heap. When an object is moved, its objId is changed. All future references to this object will use the new objId value.  To avoid having to map and track these changes, it is much simpler to use the transientObjId to refer to the object, as this id does not change.  This element is always sent between a pair of gcStart and gcFinish elements. 

Note: Because objId, classId, objIdRef and classIdRef are provided, it is anticipated that objMove need not be traced by a client unless low level memory analysis is required.
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	transientObjIdRef: This attribute references the transient ID of the owner object.   
	objIdRef: This attribute references the ID of the owner object.   
	newObjId: The new object id. See transientObjId for more information 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT objMove EMPTY>
<!ATTLIST objMove
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	transientObjIdRef CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	newObjId CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
This element is produced when the garbage collection phase is finished.
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	totalObjectSpace: Total amount of object space (in bytes) expressed as a 32-bit unsigned value in string format. 
	usedObjectSpace: Amount of space used by the objects (in bytes) expressed as a 32-bit unsigned value in string format. 
	usedObjects: Number of used objects on the heap expressed as a 32-bit unsigned value in string format. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT gcFinish EMPTY>
<!ATTLIST gcFinish
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	totalObjectSpace CDATA #IMPLIED
	usedObjectSpace CDATA #IMPLIED
	usedObjects CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
When an exception is thrown, a throw element will be generated for each unfiltered stack frame that processes the exception. Processing the exception includes simply letting the exception percolate to the next stack frame. A THROW element is also generated for the stack frame that catches the exception. 
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	objIdRef: The objIdRef will not be available if the class of the exception object is being filtered out. When this is the case, the objIdRef attribute will be set to the value "-Unavailable-".  JVMPI Implementation Note: The objIdRef may not be available for all versions of the JVM. Some JVMs do not provide the API required to map the exception objects handle to an objId. When this is the case, the objIdRef attribute will be set to the value "-Unavailable-". 
	objHandle: Represents the original object handle of the exception object. This handle does not correlate to transientObjId or objId attributes and thus cannot be used to determine the class of the exception object. It is emitted as a 32-bit unsigned value in string format. This attribute is provided solely to be able to correlate throw and catch elements with each other when the transientObjId and objId attributes are unavailable. See the description of the transientObjIdRef and objIdRef attributes for a discussion of their availability. 
	methodIdRef: The identifier of the method on which the exception is thrown (also called the method which is processing the exception). 
	ticket: The ticket value of the method on which the exception is thrown (also called the method which is processing the exception). 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT throw EMPTY>
<!ATTLIST throw
	transientThreadIdRef CDATA #IMPLIED
	threadId CDATA #IMPLIED
	time CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	objHandle CDATA #IMPLIED
	methodIdRef CDATA #IMPLIED
	ticket CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
A catch element is generated when the exception reaches an unfiltered stack frame that defines a catch clause for the exception. 
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	objIdRef:  A reference to the exception object.  The objIdRef will not be available if the class of the exception object is being filtered out. When this is the case, the objIdRef attribute will be set to the value "-Unavailable-".  Implementation Note: The objIdRef may not be available for all versions of the JVM. Some JVMs do not provide the API required to map the exception objects handle to an objId. When this is the case, the objIdRef attribute will be set to the value "-Unavailable-". 
	transientObjIdRef:  A reference to the exception object.  Implementation Note: The transientObjIdRef may not be available for all versions of the JVM. Some JVMs do not provide the API required to map the exception objects handle to an transientObjIdRef. When this is the case, the transientObjIdRef attribute will be set to the value "-Unavailable-". 
	objHandle: Represents the original object handle of the exception object. This handle does not correlate to transientObjIdRef or objIdRef attributes and thus cannot be used to determine the class of the exception object. It is emitted as a 32-bit unsigned value in string format. This attribute is provided solely to be able to correlate throw and catch elements with each other when the transientObjIdRef and objId attributes are unavailable. See the description of the transientObjIdRef and objIdRef attributes for a discussion of their availability. 
	methodIdRef: The identifier of the method on which the exception is caught. 
	ticket: The ticket value of the method on which the exception is caught. 
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT catch EMPTY>
<!ATTLIST catch
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	transientObjIdRef CDATA #IMPLIED
	objHandle CDATA #IMPLIED
	methodIdRef CDATA #IMPLIED
	ticket CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
A Java-specific element produced when the JVM initialization is done.
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT runtimeInitDone EMPTY>
<!ATTLIST runtimeInitDone
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
A Java-specific element produced when the JVM  is shutdown.
	
	transientThreadIdRef: This attribute references the transient ID of the owner thread. 
	threadIdRef: This attribute references the ID of the owner thread. 
	time: The time represented here is the time when the element was generated.  
	collationValue: The purpose of this attribute is to allow elements to be collated when emitted on a stream that does not guarantee the order of delivery. It starts from the value "1" on a traceStart element, and is incremented for each element emitted after that. The collationValue is scoped by the traceStart and traceEnd elements. The collationValue may be a list of 32-bit unsigned values (in string format) to allow for more than 32-bit unsigned values.  The collationValue attribute syntax is: collationValue="number[,number]*" where the numbers are listed from low order to high order. 
	traceIdRef: A UUID that references the traceStart element that represents the start of this trace. 
-->
<!ELEMENT runtimeShutdown EMPTY>
<!ATTLIST runtimeShutdown
	transientThreadIdRef CDATA #IMPLIED
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	collationValue CDATA #IMPLIED
	traceIdRef CDATA #IMPLIED
>
<!--
Occurs when a thread is about to wait on an object or wait within Thread.sleep().
	
	threadIdRef: This attribute references the ID of the owner thread.
	time: The time represented here is the time when the element was generated.  
	objIdRef: This value will be "-1" if the thread is in Thread.sleep().
	timeout: The time that is passed to the wait() method in milliseconds.
-->
<!ELEMENT monWait EMPTY>
<!ATTLIST monWait
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	timeout CDATA #IMPLIED
>
<!--
Occurs when a thread has finished waiting on an object or finished waiting in Thread.sleep(). 
	
	threadIdRef: This attribute references the ID of the owner thread.
	time: The time represented here is the time when the element was generated.  
	objIdRef: This value will be "-1" if the thread is in Thread.sleep().
	timeout: The time that thread waited in milliseconds.
-->
<!ELEMENT monWaited EMPTY>
<!ATTLIST monWaited
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	timeout CDATA #IMPLIED
>
<!--
Occurs when a thread tries acquiring a monitor which is already acquired by another thread
	
	threadIdRef: This attribute references the ID of the owner thread.
	time: The time represented here is the time when the element was generated.  
	objIdRef: This value will be "-1" if the thread is in Thread.sleep().
	threadOwner: The thread which currently owns the montior or "0" if no owning thread.
-->
<!ELEMENT monContendedEnter EMPTY>
<!ATTLIST monContendedEnter
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
	threadOwner CDATA #IMPLIED
>
<!--
Occurs when a thread has acquired a monitor which was being held by another thread.
	
	threadIdRef: This attribute references the ID of the owner thread.
	time: The time represented here is the time when the element was generated.  
	objIdRef: This value will be "-1" if the thread is in Thread.sleep().
-->
<!ELEMENT monContendedEntered EMPTY>
<!ATTLIST monContendedEntered
	threadIdRef CDATA #IMPLIED
	time CDATA #IMPLIED
	objIdRef CDATA #IMPLIED
>